aboutsummaryrefslogtreecommitdiffstats
path: root/include/fuse.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/fuse.h')
-rw-r--r--include/fuse.h108
1 files changed, 85 insertions, 23 deletions
diff --git a/include/fuse.h b/include/fuse.h
index 90ee4bb..a3549cb 100644
--- a/include/fuse.h
+++ b/include/fuse.h
@@ -854,6 +854,22 @@ struct fuse_context {
mode_t umask;
};
+#if (defined(LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS))
+/**
+ * The real main function
+ *
+ * Do not call this directly, use fuse_main()
+ */
+int fuse_main_real(int argc, char *argv[], const struct fuse_operations *op,
+ size_t op_size, struct libfuse_version *version,
+ void *user_data);
+#else
+int fuse_main_real_317(int argc, char *argv[], const struct fuse_operations *op,
+ size_t op_size, struct libfuse_version *version, void *user_data);
+#define fuse_main_real(argc, argv, op, op_size, version, user_data) \
+ fuse_main_real_317(argc, argv, op, op_size, version, user_data);
+#endif
+
/**
* Main function of FUSE.
*
@@ -908,12 +924,19 @@ struct fuse_context {
*
* Example usage, see hello.c
*/
-/*
- int fuse_main(int argc, char *argv[], const struct fuse_operations *op,
- void *private_data);
-*/
-#define fuse_main(argc, argv, op, private_data) \
- fuse_main_real(argc, argv, op, sizeof(*(op)), private_data)
+static inline int
+fuse_main(int argc, char *argv[], const struct fuse_operations *op,
+ void *user_data)
+{
+ struct libfuse_version version = {
+ .major = FUSE_MAJOR_VERSION,
+ .minor = FUSE_MINOR_VERSION,
+ .hotfix = FUSE_HOTFIX_VERSION,
+ .padding = 0
+ };
+ return fuse_main_real(argc, argv, op, sizeof(*(op)), &version,
+ user_data);
+}
/* ----------------------------------------------------------- *
* More detailed API *
@@ -932,6 +955,11 @@ struct fuse_context {
*/
void fuse_lib_help(struct fuse_args *args);
+struct fuse *_fuse_new(struct fuse_args *args,
+ const struct fuse_operations *op,
+ size_t op_size, struct libfuse_version *version,
+ void *user_data);
+
/**
* Create a new FUSE filesystem.
*
@@ -960,18 +988,60 @@ void fuse_lib_help(struct fuse_args *args);
* @return the created FUSE handle
*/
#if FUSE_USE_VERSION == 30
-struct fuse *fuse_new_30(struct fuse_args *args, const struct fuse_operations *op,
- size_t op_size, void *private_data);
-#define fuse_new(args, op, size, data) fuse_new_30(args, op, size, data)
+struct fuse *_fuse_new_30(struct fuse_args *args,
+ const struct fuse_operations *op,
+ size_t op_size, void *user_data);
+static inline struct fuse *
+fuse_new(struct fuse_args *args,
+ const struct fuse_operations *op, size_t op_size,
+ void *user_data)
+{
+ struct libfuse_version version = {
+ .major = FUSE_MAJOR_VERSION,
+ .minor = FUSE_MINOR_VERSION,
+ .hotfix = FUSE_HOTFIX_VERSION,
+ .padding = 0
+ };
+
+ return _fuse_new_30(args, op, op_size, &version, user_data);
+}
#else
#if (defined(LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS))
-struct fuse *fuse_new(struct fuse_args *args, const struct fuse_operations *op,
- size_t op_size, void *private_data);
+static inline struct fuse *
+fuse_new(struct fuse_args *args,
+ const struct fuse_operations *op, size_t op_size,
+ void *user_data)
+{
+ struct libfuse_version version = {
+ .major = FUSE_MAJOR_VERSION,
+ .minor = FUSE_MINOR_VERSION,
+ .hotfix = FUSE_HOTFIX_VERSION,
+ .padding = 0
+ };
+
+ return _fuse_new(args, op, op_size, &version, user_data);
+}
#else /* LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS */
-struct fuse *fuse_new_31(struct fuse_args *args,
- const struct fuse_operations *op,
- size_t op_size, void *private_data);
-#define fuse_new(args, op, size, data) fuse_new_31(args, op, size, data)
+struct fuse *_fuse_new_317(struct fuse_args *args,
+ const struct fuse_operations *op, size_t op_size,
+ struct libfuse_version *version,
+ void *private_data);
+#define _fuse_new(args, op, size, version, data) \
+ _fuse_new_317(args, op, size, version, data)
+static inline struct fuse *
+fuse_new(struct fuse_args *args,
+ const struct fuse_operations *op, size_t op_size,
+ void *user_data)
+{
+ struct libfuse_version version = {
+ .major = FUSE_MAJOR_VERSION,
+ .minor = FUSE_MINOR_VERSION,
+ .hotfix = FUSE_HOTFIX_VERSION,
+ .padding = 0
+ };
+
+ return _fuse_new(args, op, op_size, &version, user_data);
+}
#endif /* LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS */
#endif
@@ -1128,14 +1198,6 @@ int fuse_interrupted(void);
int fuse_invalidate_path(struct fuse *f, const char *path);
/**
- * The real main function
- *
- * Do not call this directly, use fuse_main()
- */
-int fuse_main_real(int argc, char *argv[], const struct fuse_operations *op,
- size_t op_size, void *private_data);
-
-/**
* Start the cleanup thread when using option "remember".
*
* This is done automatically by fuse_loop_mt()