aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmd/sharefs/fuse-operations.h
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-12-26 03:19:32 +0900
committerOphestra <cat@gensokyo.uk>2025-12-26 03:19:32 +0900
commitd597592e1f3bd64b586257f47315390042a9def1 (patch)
treea5f925d4e6e36a58fc8eb035766e07659b3af599 /cmd/sharefs/fuse-operations.h
parent056f5b12d447e9cf113ab6fd3fbf3e9cfe0a1b18 (diff)
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 <cat@gensokyo.uk>
Diffstat (limited to 'cmd/sharefs/fuse-operations.h')
-rw-r--r--cmd/sharefs/fuse-operations.h33
1 files changed, 33 insertions, 0 deletions
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 <fuse.h>
+#include <fuse_lowlevel.h> /* 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);