Created
February 26, 2012 11:15
-
-
Save aont/1916114 to your computer and use it in GitHub Desktop.
fuse temperate
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <cstdlib> | |
| #include <cstdio> | |
| #include <cstring> | |
| #include <cstdarg> | |
| #include <cstddef> | |
| #include <cerrno> | |
| #include <sys/time.h> | |
| #define FUSE_USE_VERSION 26 | |
| #include <fuse.h> | |
| #include <pthread.h> | |
| #include <string> | |
| #define SMBCFS_DEBUG | |
| #define MUTEX_LOCK | |
| class myfuse | |
| { | |
| private: | |
| static pthread_mutex_t mutex_lock; | |
| static int getattr(const char* const path, struct stat* const stbuf); | |
| // static int readlink(const char *, char *, size_t); | |
| // static int mknod(const char *, mode_t, dev_t); | |
| static int mkdir(const char* const path, const mode_t mode); | |
| static int unlink(const char* const path); | |
| static int rmdir(const char* const path); | |
| // static int symlink(const char *, const char *); | |
| static int rename(const char* const ourl, const char* const nurl); | |
| // static int link(const char *, const char *); | |
| static int chmod(const char* const path, const mode_t mode); | |
| // static int chown(const char *, uid_t, gid_t); | |
| // static int truncate(const char* const path, const off_t size); | |
| static int utime(const char* const path, struct utimbuf* const utbuf); | |
| static int open(const char* const path, struct fuse_file_info* const fi); | |
| static int read(const char* const path, char* const buf, const std::size_t size, const off_t offset, struct fuse_file_info* const fi); | |
| static int write(const char* const path, const char* const buf, const std::size_t size, const off_t offset, struct fuse_file_info* const fi); | |
| // static int statfs(const char *, struct statvfs *); | |
| // static int flush(const char *, struct fuse_file_info *); | |
| static int release(const char* const path, struct fuse_file_info* const fi); | |
| // static int fsync(const char *, const int, struct fuse_file_info *); | |
| #ifndef __APPLE__ | |
| static int setxattr(const char* const path, const char* const name, const char* const value, const size_t size, const int flags); | |
| #else | |
| static int setxattr(const char* const path, const char* const name, const char* const value, const size_t size, const int flags, const uint32_t); | |
| #endif | |
| #ifndef __APPLE__ | |
| static int getxattr(const char* const path, const char* const name, char* const value, const size_t size); | |
| #else | |
| static int getxattr(const char* const path, const char* const name, char* const value, const size_t size , const uint32_t); | |
| #endif | |
| static int listxattr(const char* const path, char* const list, const size_t size); | |
| static int removexattr(const char* const path, const char* const name); | |
| static int opendir(const char *path, struct fuse_file_info *fi); | |
| static int readdir(const char* const path, void* const buf, fuse_fill_dir_t filler, off_t offset, struct fuse_file_info* const fi); | |
| static int releasedir(const char* const path, struct fuse_file_info* const fi); | |
| // static int fsyncdir(const char *, int, struct fuse_file_info *); | |
| static void* init(struct fuse_conn_info *conn); | |
| static void destroy(void *); | |
| // static int access(const char *, int); | |
| static int create(const char* const path, const mode_t mode, struct fuse_file_info* const fi); | |
| static int ftruncate(const char* const path, const off_t size, struct fuse_file_info* const fi); | |
| static int fgetattr(const char* const path, struct stat* const stbuf, struct fuse_file_info* const fi); | |
| //static int lock(const char *, struct fuse_file_info *, int cmd, struct flock *); | |
| static int utimens(const char* const path, const struct timespec tv[2]); | |
| // static int bmap(const char *, size_t blocksize, uint64_t *idx); | |
| // static int ioctl(const char *, int cmd, void *arg, struct fuse_file_info *, unsigned int flags, void *data); | |
| // int poll(const char *, struct fuse_file_info *, struct fuse_pollhandle *ph, unsigned *reventsp); | |
| public: | |
| static fuse_operations get_operations() | |
| { | |
| fuse_operations oprations; | |
| oprations.getattr = myfuse::getattr; | |
| oprations.mkdir = myfuse::mkdir; | |
| oprations.unlink = myfuse::unlink; | |
| oprations.rmdir = myfuse::rmdir; | |
| oprations.rename = myfuse::rename; | |
| oprations.chmod = myfuse::chmod; | |
| //oprations.utime = myfuse::utime; | |
| (void)myfuse::utime; | |
| oprations.open = myfuse::open; | |
| oprations.write = myfuse::write; | |
| oprations.read = myfuse::read; | |
| oprations.release = myfuse::release; | |
| oprations.setxattr = myfuse::setxattr; | |
| oprations.getxattr = myfuse::getxattr; | |
| oprations.listxattr = myfuse::listxattr; | |
| oprations.removexattr = myfuse::removexattr; | |
| oprations.opendir = myfuse::opendir; | |
| oprations.readdir = myfuse::readdir; | |
| oprations.releasedir = myfuse::releasedir; | |
| oprations.init = myfuse::init; | |
| oprations.destroy = myfuse::destroy; | |
| oprations.create = myfuse::create; | |
| oprations.ftruncate = myfuse::ftruncate; | |
| oprations.fgetattr = myfuse::fgetattr; | |
| oprations.utimens = myfuse::utimens; | |
| return oprations; | |
| } | |
| }; | |
| int main(const int argc, char* argv[]) | |
| { | |
| fuse_operations op = myfuse::get_operations(); | |
| return fuse_main(argc, argv, &op, NULL); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment