summaryrefslogtreecommitdiff
path: root/netfs/fuse/fuseAppBase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'netfs/fuse/fuseAppBase.cpp')
-rw-r--r--netfs/fuse/fuseAppBase.cpp229
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;
-}
-