summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2017-12-16 18:05:09 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2017-12-16 19:48:24 +0000
commitc28a40388b188221abc64de7f2ba52a7f4ffd448 (patch)
treeae2d93665e6d505847ec27acc8eeda6fa8eae7a7
parentGreatly simplify the mess of fuse_operations initialisation and remove the no... (diff)
downloadnetfs-c28a40388b188221abc64de7f2ba52a7f4ffd448.tar.bz2
netfs-c28a40388b188221abc64de7f2ba52a7f4ffd448.tar.xz
netfs-c28a40388b188221abc64de7f2ba52a7f4ffd448.zip
Provide an internal helper for calling member functions via libfuse
-rw-r--r--netfs/fuse/fuseAppBase.cpp2
-rw-r--r--netfs/fuse/fuseAppBase.h5
2 files changed, 6 insertions, 1 deletions
diff --git a/netfs/fuse/fuseAppBase.cpp b/netfs/fuse/fuseAppBase.cpp
index fc6fa14..f0d6b52 100644
--- a/netfs/fuse/fuseAppBase.cpp
+++ b/netfs/fuse/fuseAppBase.cpp
@@ -224,7 +224,7 @@ FuseAppBase::runint(int argc, char ** argv)
fuseApp = this;
struct fuse_args args = FUSE_ARGS_INIT(argc, argv);
if (fuse_opt_parse(&args, fuseApp, fuse_opts,
- &helper<decltype(&FuseAppBase::opt_parse), &FuseAppBase::opt_parse>) == -1) {
+ &internalHelper<decltype(&FuseAppBase::opt_parse), &FuseAppBase::opt_parse>) == -1) {
exit(1);
}
return args;
diff --git a/netfs/fuse/fuseAppBase.h b/netfs/fuse/fuseAppBase.h
index 4128c6b..daa8cb1 100644
--- a/netfs/fuse/fuseAppBase.h
+++ b/netfs/fuse/fuseAppBase.h
@@ -170,6 +170,11 @@ class DLL_PUBLIC FuseAppBase {
}
}
}
+ template <typename Func, Func f, typename ... Args>
+ static int internalHelper(Args ... a)
+ {
+ return (fuseApp->*f)(a...);
+ }
static FuseAppBase * fuseApp;
};