#ifndef SOURCEFS_H #define SOURCEFS_H #include #include /** * Initializes the source file handling. * * @param root_path The root of the source files folder. * @return 0 on success, -1 on failure. */ int source_init(const char *root_path); /* All of the functions below are designed to behave exactly as their non-source * counterparts. */ int source_stat(const char *restrict filename, struct stat *restrict statbuf); struct dirent *source_readdir(DIR *dirp); DIR *source_opendir(const char *filename); int source_unlink(const char *filename); int source_mkdir(const char *filename, mode_t mode); int source_rmdir(const char *filename); int source_symlink(const char *target, const char *linkpath); int source_rename(const char *oldpath, const char *newpath); int source_link(const char *oldpath, const char *newpath); int source_chmod(const char *filename, mode_t mode); int source_chown(const char *filename, uid_t owner, gid_t group); int source_truncate(const char *filename, off_t length); /* `open` and `create` are designed to correspond to fuse operations, not the * libc's `open(2)`. Both of them actually call `openat`. */ int source_open(const char *filename, int flags); int source_create(const char *filename, int flags, mode_t mode); #endif // !SOURCEFS_H