aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compat.c
diff options
context:
space:
mode:
authorBernd Schubert <bschubert@ddn.com>2022-10-02 22:39:52 +0200
committerNikolaus Rath <Nikolaus@rath.org>2023-01-04 15:27:21 +0000
commitf212ec087037b5bb74700e6cce63c208bdbe8442 (patch)
tree359dd4dd18d067fbd11ac6a4652fd564ea8d14bf /lib/compat.c
parent33736958b61d90d9db9b03441103035316f09abc (diff)
downloadlibfuse-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'.
Diffstat (limited to 'lib/compat.c')
-rw-r--r--lib/compat.c56
1 files changed, 56 insertions, 0 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
+
+