From 0860da21d86f69ad8d59289d422451adfb1b3d05 Mon Sep 17 00:00:00 2001 From: randomdan Date: Mon, 19 Aug 2013 00:06:37 +0000 Subject: Add base case support for ioctl, poll, write_buf, read_buf and flock --- libfusepp/fuseapp.cpp | 30 +++++++++++++++++++++++++----- libfusepp/fuseapp.h | 5 +++++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/libfusepp/fuseapp.cpp b/libfusepp/fuseapp.cpp index 60606ea..e1c552e 100644 --- a/libfusepp/fuseapp.cpp +++ b/libfusepp/fuseapp.cpp @@ -158,6 +158,26 @@ int FuseAppBase::bmap(const char *, size_t, uint64_t *) { return -ENOSYS; } +int FuseAppBase::ioctl(const char *, int, void *, struct fuse_file_info *, unsigned int, void *) +{ + return -ENOSYS; +} +int FuseAppBase::poll(const char *, struct fuse_file_info *, struct fuse_pollhandle *, unsigned *) +{ + return -ENOSYS; +} +int FuseAppBase::write_buf(const char *, struct fuse_bufvec *, off_t, struct fuse_file_info *) +{ + return -ENOSYS; +} +int FuseAppBase::read_buf(const char *, struct fuse_bufvec **, size_t, off_t, struct fuse_file_info *) +{ + return -ENOSYS; +} +int FuseAppBase::flock(const char *, struct fuse_file_info *, int) +{ + return -ENOSYS; +} int FuseAppBase::onError(const std::exception & e) throw() { fprintf(stderr, "Unknown exception calling (what: %s)\n", e.what()); @@ -250,13 +270,13 @@ FuseAppBase::run(int & argc, char** & argv, FuseAppBase * fa) 0, // flag_utime_omit_ok #endif 0, // flag_reserved - NULL, // ioctl - NULL // poll + fuseCall::helper<&FuseAppBase::ioctl>, + fuseCall::helper<&FuseAppBase::poll> #if (FUSE_MINOR_VERSION >= 9) , - NULL, // writebuf - NULL, // readbuf - NULL, // flock + fuseCall::helper<&FuseAppBase::write_buf>, + fuseCall::helper<&FuseAppBase::read_buf>, + fuseCall::helper<&FuseAppBase::flock>, NULL // fallocate #endif #endif diff --git a/libfusepp/fuseapp.h b/libfusepp/fuseapp.h index c823721..1c94f13 100644 --- a/libfusepp/fuseapp.h +++ b/libfusepp/fuseapp.h @@ -45,6 +45,11 @@ class FuseAppBase { virtual int lock(const char *, struct fuse_file_info *, int cmd, struct flock *); virtual int utimens(const char *, const struct timespec tv[2]); virtual int bmap(const char *, size_t blocksize, uint64_t *idx); + virtual int ioctl(const char *, int cmd, void *arg, struct fuse_file_info *, unsigned int flags, void * data); + virtual int poll(const char *, struct fuse_file_info *, struct fuse_pollhandle *, unsigned *); + virtual int write_buf (const char *, struct fuse_bufvec *buf, off_t off, struct fuse_file_info *); + virtual int read_buf (const char *, struct fuse_bufvec **bufp, size_t size, off_t off, struct fuse_file_info *); + virtual int flock (const char *, struct fuse_file_info *, int op); virtual int onError(const std::exception & err) throw(); static int run(int &, char ** &, FuseAppBase *); -- cgit v1.2.3