aboutsummaryrefslogtreecommitdiffstats
path: root/lib/fuse_lowlevel.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/fuse_lowlevel.c')
-rw-r--r--lib/fuse_lowlevel.c33
1 files changed, 30 insertions, 3 deletions
diff --git a/lib/fuse_lowlevel.c b/lib/fuse_lowlevel.c
index 46aef98..c08c99c 100644
--- a/lib/fuse_lowlevel.c
+++ b/lib/fuse_lowlevel.c
@@ -3024,9 +3024,12 @@ restart:
return res;
}
-struct fuse_session *fuse_session_new(struct fuse_args *args,
- const struct fuse_lowlevel_ops *op,
- size_t op_size, void *userdata)
+FUSE_SYMVER("_fuse_session_new_317", "_fuse_session_new@@FUSE_3.17")
+struct fuse_session *_fuse_session_new_317(struct fuse_args *args,
+ const struct fuse_lowlevel_ops *op,
+ size_t op_size,
+ struct libfuse_version *version,
+ void *userdata)
{
int err;
struct fuse_session *se;
@@ -3105,6 +3108,14 @@ struct fuse_session *fuse_session_new(struct fuse_args *args,
se->userdata = userdata;
se->mo = mo;
+
+ /* Fuse server application should pass the version it was compiled
+ * against and pass it. If a libfuse version accidentally introduces an
+ * ABI incompatibility, it might be possible to 'fix' that at run time,
+ * by checking the version numbers.
+ */
+ se->version = *version;
+
return se;
out5:
@@ -3120,6 +3131,22 @@ out1:
return NULL;
}
+struct fuse_session *fuse_session_new_30(struct fuse_args *args,
+ const struct fuse_lowlevel_ops *op,
+ size_t op_size,
+ void *userdata);
+FUSE_SYMVER("fuse_session_new_30", "fuse_session_new@FUSE_3.0")
+struct fuse_session *fuse_session_new_30(struct fuse_args *args,
+ const struct fuse_lowlevel_ops *op,
+ size_t op_size,
+ void *userdata)
+{
+ /* unknown version */
+ struct libfuse_version version = { 0 };
+
+ return _fuse_session_new_317(args, op, op_size, &version, userdata);
+}
+
int fuse_session_custom_io(struct fuse_session *se, const struct fuse_custom_io *io,
int fd)
{