diff options
author | Bernd Schubert <bschubert@ddn.com> | 2022-10-02 22:39:52 +0200 |
---|---|---|
committer | Nikolaus Rath <Nikolaus@rath.org> | 2023-01-04 15:27:21 +0000 |
commit | f212ec087037b5bb74700e6cce63c208bdbe8442 (patch) | |
tree | 359dd4dd18d067fbd11ac6a4652fd564ea8d14bf | |
parent | 33736958b61d90d9db9b03441103035316f09abc (diff) | |
download | fuse-f212ec087037b5bb74700e6cce63c208bdbe8442.tar.gz |
Fix ublic/apple build for the fuse_parse_cmdline ABI symbol
For __APPLE__ and __ULIBC__, which are assumed to not support
versioned symbols, helper.c has a compat ABI symbol for
fuse_parse_cmdline(). However that ABI symbol was conflicting
with the API macro (which redirects to the right API function
for recompilations against current libfuse).
Additionally the parameter 'opts' had a typo and was called
'out_opts'.
-rw-r--r-- | lib/compat.c | 56 | ||||
-rw-r--r-- | lib/helper.c | 12 | ||||
-rw-r--r-- | lib/meson.build | 2 |
3 files changed, 57 insertions, 13 deletions
diff --git a/lib/compat.c b/lib/compat.c new file mode 100644 index 0000000..bdff5c9 --- /dev/null +++ b/lib/compat.c @@ -0,0 +1,56 @@ +/* + FUSE: Filesystem in Userspace + Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu> + + Helper functions to create (simple) standalone programs. With the + aid of these functions it should be possible to create full FUSE + file system by implementing nothing but the request handlers. + + This program can be distributed under the terms of the GNU LGPLv2. + See the file COPYING.LIB. +*/ + +/* Description: + This file has compatibility symbols for platforms that do not + support version symboling +*/ + +#include "config.h" +#include "fuse_i.h" +#include "fuse_misc.h" +#include "fuse_opt.h" +#include "fuse_lowlevel.h" +#include "mount_util.h" + +#include <stdio.h> +#include <stdlib.h> +#include <stddef.h> +#include <unistd.h> +#include <string.h> +#include <limits.h> +#include <errno.h> +#include <sys/param.h> + +/** + * Compatibility ABI symbol for systems that do not support version symboling + */ +#if (defined(__UCLIBC__) || defined(__APPLE__)) +/* With current libfuse fuse_parse_cmdline is a macro pointing to the + * versioned function. Here in this file we need to provide the ABI symbol + * and the redirecting macro is conflicting. + */ +#ifdef fuse_parse_cmdline +#undef fuse_parse_cmdline +#endif +int fuse_parse_cmdline_30(struct fuse_args *args, + struct fuse_cmdline_opts *opts); +int fuse_parse_cmdline(struct fuse_args *args, + struct fuse_cmdline_opts *opts); +int fuse_parse_cmdline(struct fuse_args *args, + struct fuse_cmdline_opts *opts) +{ + return fuse_parse_cmdline_30(args, opts); +} +#endif + + diff --git a/lib/helper.c b/lib/helper.c index 84013b9..c3796c1 100644 --- a/lib/helper.c +++ b/lib/helper.c @@ -251,18 +251,6 @@ int fuse_parse_cmdline_30(struct fuse_args *args, return rc; } -/** - * Compatibility ABI symbol for systems that do not support version symboling - */ -#if (defined(__UCLIBC__) || defined(__APPLE__)) -int fuse_parse_cmdline(struct fuse_args *args, - struct fuse_cmdline_opts *opts) -{ - return fuse_parse_cmdline_30(args, out_opts); -} -#endif - - int fuse_daemonize(int foreground) { if (!foreground) { diff --git a/lib/meson.build b/lib/meson.build index ef0e11e..54d0759 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -2,7 +2,7 @@ libfuse_sources = ['fuse.c', 'fuse_i.h', 'fuse_loop.c', 'fuse_loop_mt.c', 'fuse_lowlevel.c', 'fuse_misc.h', 'fuse_opt.c', 'fuse_signals.c', 'buffer.c', 'cuse_lowlevel.c', 'helper.c', 'modules/subdir.c', 'mount_util.c', - 'fuse_log.c' ] + 'fuse_log.c', 'compat.c' ] if host_machine.system().startswith('linux') libfuse_sources += [ 'mount.c' ] |