diff options
author | Bernd Schubert <bschubert@ddn.com> | 2025-02-17 23:39:04 +0100 |
---|---|---|
committer | Bernd Schubert <bernd@bsbernd.com> | 2025-02-18 22:32:49 +0100 |
commit | c6ae7425aa9cac34e5ce320b1ac3a09753f6c66f (patch) | |
tree | 7193ad786a76bfd64516c8e9d66a306723b6c1e2 /include | |
parent | 7fe971b406706b25e2eb4064fa5dbd1c06c7c083 (diff) | |
download | libfuse-c6ae7425aa9cac34e5ce320b1ac3a09753f6c66f.tar.gz |
Avoid nested function declarations in helper functions
libfuse-3.17 introduced several functions that should only be called via
inlined helper functions, never directly. To enforce this, these functions
were declared within the inlined functions. However, this triggers the
compiler warning "-Werror=nested-externs".
While this warning is valid, the nested declarations were intentional to
prevent direct usage of these functions. Rather than suppressing the
warning with pragmas, move these function declarations outside the helper
functions while maintaining the intended access restrictions through other
means.
Closes: https://github.com/libfuse/libfuse/issues/1134
Signed-off-by: Bernd Schubert <bschubert@ddn.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/fuse.h | 57 | ||||
-rw-r--r-- | include/fuse_lowlevel.h | 12 |
2 files changed, 26 insertions, 43 deletions
diff --git a/include/fuse.h b/include/fuse.h index c0857fd..c94b628 100644 --- a/include/fuse.h +++ b/include/fuse.h @@ -882,6 +882,9 @@ struct fuse_context { * * Do not call this directly, use fuse_main() */ +int fuse_main_real_versioned(int argc, char *argv[], + const struct fuse_operations *op, size_t op_size, + struct libfuse_version *version, void *user_data); static inline int fuse_main_real(int argc, char *argv[], const struct fuse_operations *op, size_t op_size, void *user_data) @@ -895,13 +898,6 @@ static inline int fuse_main_real(int argc, char *argv[], "%s is a libfuse internal function, please use fuse_main()\n", __func__); - /* not declared globally, to restrict usage of this function */ - int fuse_main_real_versioned(int argc, char *argv[], - const struct fuse_operations *op, - size_t op_size, - struct libfuse_version *version, - void *user_data); - return fuse_main_real_versioned(argc, argv, op, op_size, &version, user_data); } @@ -960,6 +956,9 @@ static inline int fuse_main_real(int argc, char *argv[], * * Example usage, see hello.c */ +int fuse_main_real_versioned(int argc, char *argv[], + const struct fuse_operations *op, size_t op_size, + struct libfuse_version *version, void *user_data); static inline int fuse_main_fn(int argc, char *argv[], const struct fuse_operations *op, void *user_data) @@ -971,12 +970,6 @@ static inline int fuse_main_fn(int argc, char *argv[], .padding = 0 }; - /* not declared globally, to restrict usage of this function */ - int fuse_main_real_versioned(int argc, char *argv[], - const struct fuse_operations *op, - size_t op_size, - struct libfuse_version *version, - void *user_data); return fuse_main_real_versioned(argc, argv, op, sizeof(*(op)), &version, user_data); } @@ -1000,6 +993,14 @@ static inline int fuse_main_fn(int argc, char *argv[], */ void fuse_lib_help(struct fuse_args *args); +/* Do not call this directly, use fuse_new() instead */ +struct fuse *_fuse_new_30(struct fuse_args *args, + const struct fuse_operations *op, size_t op_size, + struct libfuse_version *version, void *user_data); +struct fuse *_fuse_new_31(struct fuse_args *args, + const struct fuse_operations *op, size_t op_size, + struct libfuse_version *version, void *user_data); + /** * Create a new FUSE filesystem. * @@ -1028,22 +1029,10 @@ void fuse_lib_help(struct fuse_args *args); * @return the created FUSE handle */ #if FUSE_USE_VERSION == 30 -struct fuse *_fuse_new_30(struct fuse_args *args, - const struct fuse_operations *op, - size_t op_size, - struct libfuse_version *version, - void *user_data); -static inline struct fuse * -fuse_new_fn(struct fuse_args *args, - const struct fuse_operations *op, size_t op_size, - void *user_data) +static inline struct fuse *fuse_new_fn(struct fuse_args *args, + const struct fuse_operations *op, + size_t op_size, void *user_data) { - /* not declared globally, to restrict usage of this function */ - struct fuse *_fuse_new_30(struct fuse_args *args, - const struct fuse_operations *op, size_t op_size, - struct libfuse_version *version, - void *user_data); - struct libfuse_version version = { .major = FUSE_MAJOR_VERSION, .minor = FUSE_MINOR_VERSION, @@ -1054,10 +1043,9 @@ fuse_new_fn(struct fuse_args *args, return _fuse_new_30(args, op, op_size, &version, user_data); } #else /* FUSE_USE_VERSION */ -static inline struct fuse * -fuse_new_fn(struct fuse_args *args, - const struct fuse_operations *op, size_t op_size, - void *user_data) +static inline struct fuse *fuse_new_fn(struct fuse_args *args, + const struct fuse_operations *op, + size_t op_size, void *user_data) { struct libfuse_version version = { .major = FUSE_MAJOR_VERSION, @@ -1066,11 +1054,6 @@ fuse_new_fn(struct fuse_args *args, .padding = 0 }; - /* not declared globally, to restrict usage of this function */ - struct fuse *_fuse_new_31(struct fuse_args *args, - const struct fuse_operations *op, - size_t op_size, struct libfuse_version *version, - void *user_data); return _fuse_new_31(args, op, op_size, &version, user_data); } #endif diff --git a/include/fuse_lowlevel.h b/include/fuse_lowlevel.h index b03b37a..93bcba2 100644 --- a/include/fuse_lowlevel.h +++ b/include/fuse_lowlevel.h @@ -2049,6 +2049,12 @@ int fuse_parse_cmdline_312(struct fuse_args *args, #endif #endif +/* Do not call this directly, use fuse_session_new() instead */ +struct fuse_session * +fuse_session_new_versioned(struct fuse_args *args, + const struct fuse_lowlevel_ops *op, size_t op_size, + struct libfuse_version *version, void *userdata); + /** * Create a low level session. * @@ -2088,12 +2094,6 @@ fuse_session_new_fn(struct fuse_args *args, const struct fuse_lowlevel_ops *op, .padding = 0 }; - /* not declared globally, to restrict usage of this function */ - struct fuse_session *fuse_session_new_versioned( - struct fuse_args *args, const struct fuse_lowlevel_ops *op, - size_t op_size, struct libfuse_version *version, - void *userdata); - return fuse_session_new_versioned(args, op, op_size, &version, userdata); } |