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. Thanks, Bernd