Skip to content

Instantly share code, notes, and snippets.

@ritikm
Created September 2, 2015 20:26
Show Gist options
  • Save ritikm/d03e19b033665b849df1 to your computer and use it in GitHub Desktop.
Save ritikm/d03e19b033665b849df1 to your computer and use it in GitHub Desktop.
fusefs.h
#ifndef FSTUTORIAL_FUSEFS_H_
#define FSTUTORIAL_FUSEFS_H_
#include <ctype.h>
#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
#include <osxfuse/fuse.h>
#include <limits.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/xattr.h>
#include <string>
namespace box {
class FuseFS : NonCopyable {
public:
virtual ~FuseFS() {
}
virtual int create(const char* path, mode_t mode, struct fuse_file_info* fi) = 0;
virtual int getattr(const char* path, struct stat* statbuf) = 0;
virtual int readlink(const char* path, char* link, size_t size) = 0;
virtual int mknod(const char* path, mode_t mode, dev_t dev) = 0;
virtual int mkdir(const char* path, mode_t mode) = 0;
virtual int unlink(const char* path) = 0;
virtual int rmdir(const char* path) = 0;
virtual int symlink(const char* path, const char* link) = 0;
virtual int rename(const char* path, const char* newpath) = 0;
virtual int link(const char* path, const char* newpath) = 0;
virtual int chmod(const char* path, mode_t mode) = 0;
virtual int chown(const char* path, uid_t uid, gid_t gid) = 0;
virtual int truncate(const char* path, off_t newSize) = 0;
virtual int utime(const char* path, struct utimbuf* ubuf) = 0;
virtual int open(const char* path, struct fuse_file_info* fileInfo) = 0;
virtual int read(const char* path, char* buf, size_t size, off_t offset, struct fuse_file_info* fileInfo) = 0;
virtual int write(const char* path, const char* buf, size_t size, off_t offset,
struct fuse_file_info* fileInfo) = 0;
virtual int statfs(const char* path, struct statvfs* statInfo) = 0;
virtual int flush(const char* path, struct fuse_file_info* fileInfo) = 0;
virtual int release(const char* path, struct fuse_file_info* fileInfo) = 0;
virtual int fsync(const char* path, int datasync, struct fuse_file_info* fi) = 0;
virtual int setxattr(const char* path, const char* name, const char* value, size_t size, int flags,
uint32_t position) = 0;
virtual int getxattr(const char* path, const char* name, char* value, size_t size, uint32_t position) = 0;
virtual int listxattr(const char* path, char* list, size_t size) = 0;
virtual int removexattr(const char* path, const char* name) = 0;
virtual int opendir(const char* path, struct fuse_file_info* fileInfo) = 0;
virtual int readdir(const char* path, void* buf, fuse_fill_dir_t filler, off_t offset,
struct fuse_file_info* fileInfo) = 0;
virtual int releasedir(const char* path, struct fuse_file_info* fileInfo) = 0;
virtual int fsyncdir(const char* path, int datasync, struct fuse_file_info* fileInfo) = 0;
virtual int truncate(const char* path, off_t offset, struct fuse_file_info* fileInfo) = 0;
virtual void* init(struct fuse_conn_info* conn) = 0;
};
} // namespace fstutorial
#endif // FSTUTORIAL_FUSEFS_H_
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment