hi folks, this adds the version of fuse_mount, fuse_new, fuse_unmount between FUSE 2.2 and FUSE 3.0 as compat shims.
This is used by fuse-ntfs-3g, fuse-encfs. This also adds fuse_version. This is used by fuse-ext2 that is being patched in pkgsrc. Tell me what you think. I will commit it soon otherwise. I had to add FUSE_USE_VERSION 30 to refuse.c so I could use the real definitions. I don't want to bump it, I think it makes ntfs-3g harder to compile. I can build an older version of ntfs-3g from 6 years ago, but I have trouble with the current one, since it has a 'lowntfs-3g' that seems toduplicate some stuff and want a lot of different interfaces. I don't know where I would find an NTFS filesystem, though, to test it.
Provide the definitions of fuse_mount, fuse_unmount, fuse_new before FUSE 3.0.0. Index: fuse.h =================================================================== RCS file: /cvsroot/src/lib/librefuse/fuse.h,v retrieving revision 1.22 diff -u -r1.22 fuse.h --- fuse.h 20 Nov 2016 13:28:32 -0000 1.22 +++ fuse.h 10 Apr 2019 14:03:44 -0000 @@ -78,6 +78,9 @@ void *private_data; }; +struct fuse_chan { +}; + /** * Argument list */ @@ -153,9 +156,18 @@ struct fuse *fuse_new(struct fuse_args *, const struct fuse_operations *, size_t, void *); +#if FUSE_USE_VERSION < 30 +#define fuse_new fuse_new_compat30 +#endif + +struct fuse *fuse_new_compat30(struct fuse_chan *, struct fuse_args *, + const struct fuse_operations *, size_t, void *); + int fuse_mount(struct fuse *, const char *); void fuse_unmount(struct fuse *); +int fuse_version(void); + int fuse_daemonize(struct fuse *); int fuse_main_real(int, char **, const struct fuse_operations *, size_t, void *); @@ -164,6 +176,12 @@ void fuse_exit(struct fuse *); void fuse_destroy(struct fuse *); +#if FUSE_USE_VERSION < 30 +#define fuse_unmount fuse_unmount_compat30 +#endif + +void fuse_unmount_compat30(const char *, struct fuse_chan *); + #if FUSE_USE_VERSION == 22 #define fuse_unmount fuse_unmount_compat22 #endif Index: refuse.c =================================================================== RCS file: /cvsroot/src/lib/librefuse/refuse.c,v retrieving revision 1.98 diff -u -r1.98 refuse.c --- refuse.c 20 Nov 2016 13:28:32 -0000 1.98 +++ refuse.c 10 Apr 2019 14:03:44 -0000 @@ -39,6 +39,7 @@ #include <assert.h> #include <err.h> #include <errno.h> +#define FUSE_USE_VERSION 30 #include <fuse.h> #include <fuse_lowlevel.h> #include <fuse_opt.h> @@ -1322,6 +1323,13 @@ free(config.fsname); return fuse; } +struct fuse * +fuse_new_compat30(struct fuse_chan *fc, struct fuse_args *args, + const struct fuse_operations *ops, size_t size, void *userdata) +{ + + return fuse_new(args, ops, size, userdata); +} int fuse_loop(struct fuse *fuse) @@ -1368,8 +1376,22 @@ /*ARGSUSED*/ void +fuse_unmount_compat30(const char *mp, struct fuse_chan *fc) +{ + + return; +} + +/*ARGSUSED*/ +void fuse_unmount_compat22(const char *mp) { return; } + +int +fuse_version(void) +{ + return FUSE_USE_VERSION; +}