diff options
Diffstat (limited to 'netfs/fuse/fuseAppBase.cpp')
| -rw-r--r-- | netfs/fuse/fuseAppBase.cpp | 229 |
1 files changed, 148 insertions, 81 deletions
diff --git a/netfs/fuse/fuseAppBase.cpp b/netfs/fuse/fuseAppBase.cpp index 3eadd8f..838f1d9 100644 --- a/netfs/fuse/fuseAppBase.cpp +++ b/netfs/fuse/fuseAppBase.cpp @@ -1,198 +1,288 @@ #include "fuseAppBase.h" -#include <errno.h> -#include <assert.h> -#include <stdio.h> +#include <boost/assert.hpp> +#include <cassert> +#include <cerrno> +#include <cstdio> +#include <cstdlib> #include <unistd.h> -#include <stdlib.h> -#include <typeinfo> FuseAppBase * FuseAppBase::fuseApp; FuseAppBase::FuseAppBase() { + BOOST_ASSERT(!fuseApp); + BOOST_ASSERT(this); + fuseApp = this; } + FuseAppBase::~FuseAppBase() { + BOOST_ASSERT(fuseApp); + fuseApp = nullptr; } + // LCOV_EXCL_START // These are all excluded from coverage because it is impossible // to call them in a realistic manner. They exist only as the default // implementation of the function which is never passed to libfuse // unless it is overridden. -void * FuseAppBase::init(fuse_conn_info*) -{ - return NULL; -} -int FuseAppBase::opt_parse(void*, const char *, int, fuse_args*) +void * +FuseAppBase::init(fuse_conn_info *, fuse_config *) { - return 1; + return nullptr; } -int FuseAppBase::access(const char *, int) + +int +FuseAppBase::access(const char *, int) { return -ENOSYS; } -int FuseAppBase::chmod(const char *, mode_t) + +int +FuseAppBase::chmod(const char *, mode_t, struct fuse_file_info *) { return -ENOSYS; } -int FuseAppBase::chown(const char *, uid_t, gid_t) + +int +FuseAppBase::chown(const char *, uid_t, gid_t, struct fuse_file_info *) { return -ENOSYS; } -int FuseAppBase::create(const char *, mode_t, struct fuse_file_info *) + +int +FuseAppBase::create(const char *, mode_t, struct fuse_file_info *) { return -ENOSYS; } -int FuseAppBase::fgetattr(const char *, struct stat *, struct fuse_file_info *) + +int +FuseAppBase::getattr(const char *, struct stat *, struct fuse_file_info *) { return -ENOSYS; } -int FuseAppBase::flush(const char *, struct fuse_file_info *) + +int +FuseAppBase::flush(const char *, struct fuse_file_info *) { return -ENOSYS; } -int FuseAppBase::fsync(const char *, int, struct fuse_file_info *) + +int +FuseAppBase::fsync(const char *, int, struct fuse_file_info *) { return -ENOSYS; } -int FuseAppBase::fsyncdir(const char *, int, struct fuse_file_info *) + +int +FuseAppBase::fsyncdir(const char *, int, struct fuse_file_info *) { return -ENOSYS; } -int FuseAppBase::ftruncate(const char *, off_t, struct fuse_file_info *) + +int +FuseAppBase::truncate(const char *, off_t, struct fuse_file_info *) { return -ENOSYS; } -int FuseAppBase::getattr(const char *, struct stat *) + +int +FuseAppBase::getxattr(const char *, const char *, char *, size_t) { return -ENOSYS; } -int FuseAppBase::getxattr(const char *, const char *, char *, size_t) + +int +FuseAppBase::link(const char *, const char *) { return -ENOSYS; } -int FuseAppBase::link(const char *, const char *) + +int +FuseAppBase::listxattr(const char *, char *, size_t) { return -ENOSYS; } -int FuseAppBase::listxattr(const char *, char *, size_t) + +int +FuseAppBase::mkdir(const char *, mode_t) { return -ENOSYS; } -int FuseAppBase::mkdir(const char *, mode_t) + +int +FuseAppBase::mknod(const char *, mode_t, dev_t) { return -ENOSYS; } -int FuseAppBase::mknod(const char *, mode_t, dev_t) + +int +FuseAppBase::open(const char *, struct fuse_file_info *) { return -ENOSYS; } -int FuseAppBase::open(const char *, struct fuse_file_info *) + +int +FuseAppBase::opendir(const char *, struct fuse_file_info *) { return -ENOSYS; } -int FuseAppBase::opendir(const char *, struct fuse_file_info *) + +int +FuseAppBase::read(const char *, char *, size_t, off_t, struct fuse_file_info *) { return -ENOSYS; } -int FuseAppBase::read(const char *, char *, size_t, off_t, struct fuse_file_info *) + +int +FuseAppBase::readdir(const char *, void *, fuse_fill_dir_t, off_t, struct fuse_file_info *, enum fuse_readdir_flags) { return -ENOSYS; } -int FuseAppBase::readdir(const char *, void *, fuse_fill_dir_t, off_t, struct fuse_file_info *) + +int +FuseAppBase::readlink(const char *, char *, size_t) { return -ENOSYS; } -int FuseAppBase::readlink(const char *, char *, size_t) + +int +FuseAppBase::release(const char *, struct fuse_file_info *) { return -ENOSYS; } -int FuseAppBase::release(const char *, struct fuse_file_info *) + +int +FuseAppBase::releasedir(const char *, struct fuse_file_info *) { return -ENOSYS; } -int FuseAppBase::releasedir(const char *, struct fuse_file_info *) + +int +FuseAppBase::removexattr(const char *, const char *) { return -ENOSYS; } -int FuseAppBase::removexattr(const char *, const char *) + +int +FuseAppBase::rename(const char *, const char *, unsigned int) { return -ENOSYS; } -int FuseAppBase::rename(const char *, const char *) + +int +FuseAppBase::rmdir(const char *) { return -ENOSYS; } -int FuseAppBase::rmdir(const char *) + +int +FuseAppBase::setxattr(const char *, const char *, const char *, size_t, int) { return -ENOSYS; } -int FuseAppBase::setxattr(const char *, const char *, const char *, size_t, int) + +int +FuseAppBase::statfs(const char *, struct statvfs *) { return -ENOSYS; } -int FuseAppBase::statfs(const char *, struct statvfs *) + +int +FuseAppBase::symlink(const char *, const char *) { return -ENOSYS; } -int FuseAppBase::symlink(const char *, const char *) + +int +FuseAppBase::unlink(const char *) { return -ENOSYS; } -int FuseAppBase::truncate(const char *, off_t) + +int +FuseAppBase::write(const char *, const char *, size_t, off_t, struct fuse_file_info *) { return -ENOSYS; } -int FuseAppBase::unlink(const char *) + +int +FuseAppBase::lock(const char *, struct fuse_file_info *, int, struct flock *) { return -ENOSYS; } -int FuseAppBase::write(const char *, const char *, size_t, off_t, struct fuse_file_info *) + +int +// NOLINTNEXTLINE(*-c-arrays) +FuseAppBase::utimens(const char *, const struct timespec[2], struct fuse_file_info *) { return -ENOSYS; } -int FuseAppBase::lock(const char *, struct fuse_file_info *, int, struct flock *) + +int +FuseAppBase::bmap(const char *, size_t, uint64_t *) { return -ENOSYS; } -int FuseAppBase::utimens(const char *, const struct timespec[2]) + +int +FuseAppBase::ioctl(const char *, unsigned int, void *, struct fuse_file_info *, unsigned int, void *) { return -ENOSYS; } -int FuseAppBase::bmap(const char *, size_t, uint64_t *) + +int +FuseAppBase::poll(const char *, struct fuse_file_info *, struct fuse_pollhandle *, unsigned *) { return -ENOSYS; } -int FuseAppBase::ioctl(const char *, int, void *, struct fuse_file_info *, unsigned int, void *) + +int +FuseAppBase::write_buf(const char *, struct fuse_bufvec *, off_t, struct fuse_file_info *) { return -ENOSYS; } -int FuseAppBase::poll(const char *, struct fuse_file_info *, struct fuse_pollhandle *, unsigned *) + +int +FuseAppBase::read_buf(const char *, struct fuse_bufvec **, size_t, off_t, struct fuse_file_info *) { return -ENOSYS; } -int FuseAppBase::write_buf(const char *, struct fuse_bufvec *, off_t, struct fuse_file_info *) + +int +FuseAppBase::flock(const char *, struct fuse_file_info *, int) { return -ENOSYS; } -int FuseAppBase::read_buf(const char *, struct fuse_bufvec **, size_t, off_t, struct fuse_file_info *) + +int +FuseAppBase::fallocate(const char *, int, off_t, off_t, struct fuse_file_info *) { return -ENOSYS; } -int FuseAppBase::flock(const char *, struct fuse_file_info *, int) + +ssize_t +FuseAppBase::copy_file_range( + const char *, struct fuse_file_info *, off_t, const char *, struct fuse_file_info *, off_t, size_t, int) { return -ENOSYS; } -int FuseAppBase::fallocate(const char *, int, off_t, off_t, struct fuse_file_info *) + +off_t +FuseAppBase::lseek(const char *, off_t, int, struct fuse_file_info *) { return -ENOSYS; } + // LCOV_EXCL_STOP -void FuseAppBase::log(int level, const char * message) const throw() +void +FuseAppBase::log(int level, const char * message) const noexcept { logf(level, "%s", message); } -void FuseAppBase::logf(int level, const char * fmt, ...) const throw() + +void +FuseAppBase::logf(int level, const char * fmt, ...) const noexcept { va_list args; va_start(args, fmt); @@ -200,37 +290,14 @@ void FuseAppBase::logf(int level, const char * fmt, ...) const throw() va_end(args); } -int FuseAppBase::onError(const std::exception & e) throw() +int +FuseAppBase::onError(const std::exception & error) noexcept { - logf(LOG_ERR, "Unknown exception (what: %s)", e.what()); + logf(LOG_ERR, "Unknown exception (what: %s)", error.what()); return -ENOSYS; } -void FuseAppBase::beforeOperation() -{ -} - -void * FuseAppBase::fuseInit (struct fuse_conn_info *conn) +void +FuseAppBase::beforeOperation() { - return fuseApp->init(conn); } -void FuseAppBase::fuseDestroy(void *) -{ - delete fuseApp; -} - -struct fuse_args -FuseAppBase::runint(int argc, char ** argv) -{ - struct fuse_opt fuse_opts[] = { - { NULL, 0, 0 } - }; - fuseApp = this; - struct fuse_args args = FUSE_ARGS_INIT(argc, argv); - if (fuse_opt_parse(&args, fuseApp, fuse_opts, - &internalHelper<decltype(&FuseAppBase::opt_parse), &FuseAppBase::opt_parse>) == -1) { - exit(1); - } - return args; -} - |
