From d597592e1f3bd64b586257f47315390042a9def1 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Fri, 26 Dec 2025 03:19:32 +0900 Subject: cmd/sharefs: rename fuse-helper to fuse-operations This is not really just library wrapper functions, but instead implements the callbacks, so fuse-operations makes more sense. Signed-off-by: Ophestra --- cmd/sharefs/fuse-operations.h | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 cmd/sharefs/fuse-operations.h (limited to 'cmd/sharefs/fuse-operations.h') diff --git a/cmd/sharefs/fuse-operations.h b/cmd/sharefs/fuse-operations.h new file mode 100644 index 00000000..34f388b3 --- /dev/null +++ b/cmd/sharefs/fuse-operations.h @@ -0,0 +1,33 @@ +#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 4) +#include +#include /* for fuse_cmdline_help */ + +#if (FUSE_VERSION < FUSE_MAKE_VERSION(3, 4)) +#error This package requires libfuse >= v3.4 +#endif + +#define SHAREFS_MEDIA_RW_ID (1 << 10) - 1 /* owning gid presented to userspace */ +#define SHAREFS_PERM_DIR 0700 /* permission bits for directories presented to userspace */ +#define SHAREFS_PERM_REG 0600 /* permission bits for regular files presented to userspace */ +#define SHAREFS_FORBIDDEN_FLAGS O_DIRECT /* these open flags are cleared unconditionally */ + +/* sharefs_private is populated by sharefs_init and contains process-wide context */ +struct sharefs_private { + int dirfd; /* source dirfd opened during sharefs_init */ +}; + +int sharefs_getattr(const char *pathname, struct stat *statbuf, struct fuse_file_info *fi); +int sharefs_readdir(const char *pathname, void *buf, fuse_fill_dir_t filler, off_t offset, struct fuse_file_info *fi, enum fuse_readdir_flags flags); +int sharefs_mkdir(const char *pathname, mode_t mode); +int sharefs_unlink(const char *pathname); +int sharefs_rmdir(const char *pathname); +int sharefs_rename(const char *oldpath, const char *newpath, unsigned int flags); +int sharefs_truncate(const char *pathname, off_t length, struct fuse_file_info *fi); +int sharefs_utimens(const char *pathname, const struct timespec times[2], struct fuse_file_info *fi); +int sharefs_create(const char *pathname, mode_t mode, struct fuse_file_info *fi); +int sharefs_open(const char *pathname, struct fuse_file_info *fi); +int sharefs_read(const char *pathname, char *buf, size_t count, off_t offset, struct fuse_file_info *fi); +int sharefs_write(const char *pathname, const char *buf, size_t count, off_t offset, struct fuse_file_info *fi); +int sharefs_statfs(const char *pathname, struct statvfs *statbuf); +int sharefs_release(const char *pathname, struct fuse_file_info *fi); +int sharefs_fsync(const char *pathname, int datasync, struct fuse_file_info *fi); -- cgit v1.3.1