On Thu, Aug 21, 2025 at 11:39:25PM +0200, Bernd Schubert wrote: > > > On 8/21/25 03:01, Darrick J. Wong wrote: > > From: Darrick J. Wong <djwong@xxxxxxxxxx> > > > > fuse.h and fuse_lowlevel.h are public headers, don't expose internal > > build system config variables to downstream clients. This can also lead > > to function pointer ordering issues if (say) libfuse gets built with > > HAVE_STATX but the client program doesn't define a HAVE_STATX. > > > > Get rid of the conditionals in the public header files to fix this. > > > > Signed-off-by: "Darrick J. Wong" <djwong@xxxxxxxxxx> > > --- > > include/fuse.h | 2 -- > > include/fuse_lowlevel.h | 2 -- > > example/memfs_ll.cc | 2 +- > > example/passthrough.c | 2 +- > > example/passthrough_fh.c | 2 +- > > example/passthrough_ll.c | 2 +- > > 6 files changed, 4 insertions(+), 8 deletions(-) > > > > > > diff --git a/include/fuse.h b/include/fuse.h > > index 06feacb070fbfb..209102651e9454 100644 > > --- a/include/fuse.h > > +++ b/include/fuse.h > > @@ -854,7 +854,6 @@ struct fuse_operations { > > */ > > off_t (*lseek) (const char *, off_t off, int whence, struct fuse_file_info *); > > > > -#ifdef HAVE_STATX > > /** > > * Get extended file attributes. > > * > > @@ -865,7 +864,6 @@ struct fuse_operations { > > */ > > int (*statx)(const char *path, int flags, int mask, struct statx *stxbuf, > > struct fuse_file_info *fi); > > -#endif > > }; > > > > /** Extra context that may be needed by some filesystems > > diff --git a/include/fuse_lowlevel.h b/include/fuse_lowlevel.h > > index 844ee710295973..8d87be413bfe37 100644 > > --- a/include/fuse_lowlevel.h > > +++ b/include/fuse_lowlevel.h > > @@ -1327,7 +1327,6 @@ struct fuse_lowlevel_ops { > > void (*tmpfile) (fuse_req_t req, fuse_ino_t parent, > > mode_t mode, struct fuse_file_info *fi); > > > > -#ifdef HAVE_STATX > > /** > > * Get extended file attributes. > > * > > @@ -1343,7 +1342,6 @@ struct fuse_lowlevel_ops { > > */ > > void (*statx)(fuse_req_t req, fuse_ino_t ino, int flags, int mask, > > struct fuse_file_info *fi); > > -#endif > > }; > > > > /** > > diff --git a/example/memfs_ll.cc b/example/memfs_ll.cc > > index edda34b4e43d39..7055a434a439cd 100644 > > --- a/example/memfs_ll.cc > > +++ b/example/memfs_ll.cc > > @@ -6,7 +6,7 @@ > > See the file GPL2.txt. > > */ > > > > -#define FUSE_USE_VERSION 317 > > +#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 18) > > > > #include <algorithm> > > #include <stdio.h> > > diff --git a/example/passthrough.c b/example/passthrough.c > > index fdaa19e331a17d..1f09c2dc05df1e 100644 > > --- a/example/passthrough.c > > +++ b/example/passthrough.c > > @@ -23,7 +23,7 @@ > > */ > > > > > > -#define FUSE_USE_VERSION 31 > > +#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 18) > > > > #define _GNU_SOURCE > > > > diff --git a/example/passthrough_fh.c b/example/passthrough_fh.c > > index 0d4fb5bd4df0d6..6403fbb74c7759 100644 > > --- a/example/passthrough_fh.c > > +++ b/example/passthrough_fh.c > > @@ -23,7 +23,7 @@ > > * \include passthrough_fh.c > > */ > > > > -#define FUSE_USE_VERSION 31 > > +#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 18) > > > > #define _GNU_SOURCE > > > > diff --git a/example/passthrough_ll.c b/example/passthrough_ll.c > > index 5ca6efa2300abe..8a5ac2e9226b59 100644 > > --- a/example/passthrough_ll.c > > +++ b/example/passthrough_ll.c > > @@ -35,7 +35,7 @@ > > */ > > > > #define _GNU_SOURCE > > -#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 12) > > +#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 18) > > > > #include <fuse_lowlevel.h> > > #include <unistd.h> > > > > > Thanks, I'm going to apply it to libfuse tomorrow. I think the version > update in the examples is not strictly needed, but doesn't hurt either. Thank you! Yeah, I don't think the examples updates are strictly necessary either, but the examples might as well give full access to someone who wants to copy-paste them into a new server. --D > > Thanks, > Bernd