]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
libkmod: introduce and use _nonnull_() decoration
authorEmil Velikov <emil.l.velikov@gmail.com>
Sat, 7 Sep 2024 00:15:04 +0000 (01:15 +0100)
committerLucas De Marchi <lucas.de.marchi@gmail.com>
Sat, 7 Sep 2024 15:13:51 +0000 (10:13 -0500)
Introduce a new attribute macro and use it, placing it on the left hand
side of the function return value. This aligns with the attributes style
used in C23.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Link: https://github.com/kmod-project/kmod/pull/114
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
libkmod/libkmod-internal.h
shared/macro.h

index 3c2765ac1617f5ab0912df901d1aaf86ae12e295..5fe7d668de39be6e5bcef1134d038871b2e60ebf 100644 (file)
@@ -48,9 +48,9 @@ static _always_inline_ _printf_format_(2, 3) void
 #  endif
 #endif
 
-_printf_format_(6, 7) void kmod_log(const struct kmod_ctx *ctx,
+_printf_format_(6, 7) _nonnull_(1, 3, 5) void kmod_log(const struct kmod_ctx *ctx,
                int priority, const char *file, int line, const char *fn,
-               const char *format, ...) __attribute__((nonnull(1, 3, 5)));
+               const char *format, ...);
 
 struct list_node {
        struct list_node *next, *prev;
@@ -68,15 +68,15 @@ enum kmod_file_compression_type {
        KMOD_FILE_COMPRESSION_ZLIB,
 };
 
-_must_check_ struct kmod_list *kmod_list_append(struct kmod_list *list, const void *data) __attribute__((nonnull(2)));
-_must_check_ struct kmod_list *kmod_list_prepend(struct kmod_list *list, const void *data) __attribute__((nonnull(2)));
+_must_check_ _nonnull_(2) struct kmod_list *kmod_list_append(struct kmod_list *list, const void *data);
+_must_check_ _nonnull_(2) struct kmod_list *kmod_list_prepend(struct kmod_list *list, const void *data);
 _must_check_ struct kmod_list *kmod_list_remove(struct kmod_list *list);
-_must_check_ struct kmod_list *kmod_list_remove_data(struct kmod_list *list,
-                                       const void *data) __attribute__((nonnull(2)));
+_must_check_ _nonnull_(2) struct kmod_list *kmod_list_remove_data(struct kmod_list *list,
+                                       const void *data);
 _must_check_ struct kmod_list *kmod_list_remove_n_latest(struct kmod_list *list,
                                                unsigned int n);
-struct kmod_list *kmod_list_insert_after(struct kmod_list *list, const void *data) __attribute__((nonnull(2)));
-struct kmod_list *kmod_list_insert_before(struct kmod_list *list, const void *data) __attribute__((nonnull(2)));
+_nonnull_(2) struct kmod_list *kmod_list_insert_after(struct kmod_list *list, const void *data);
+_nonnull_(2) struct kmod_list *kmod_list_insert_before(struct kmod_list *list, const void *data);
 _must_check_ struct kmod_list *kmod_list_append_list(struct kmod_list *list1, struct kmod_list *list2);
 
 #undef kmod_list_foreach
@@ -102,8 +102,8 @@ _nonnull_all_ int kmod_lookup_alias_from_kernel_builtin_file(struct kmod_ctx *ct
 _nonnull_all_ int kmod_lookup_alias_from_builtin_file(struct kmod_ctx *ctx, const char *name, struct kmod_list **list);
 _nonnull_all_ bool kmod_lookup_alias_is_builtin(struct kmod_ctx *ctx, const char *name);
 _nonnull_all_ int kmod_lookup_alias_from_commands(struct kmod_ctx *ctx, const char *name, struct kmod_list **list);
-void kmod_set_modules_visited(struct kmod_ctx *ctx, bool visited) __attribute__((nonnull((1))));
-void kmod_set_modules_required(struct kmod_ctx *ctx, bool required) __attribute__((nonnull((1))));
+_nonnull_(1) void kmod_set_modules_visited(struct kmod_ctx *ctx, bool visited);
+_nonnull_(1) void kmod_set_modules_required(struct kmod_ctx *ctx, bool required);
 
 _nonnull_all_ char *kmod_search_moddep(struct kmod_ctx *ctx, const char *name);
 
@@ -153,11 +153,11 @@ _nonnull_all_ const char * const *kmod_weakdep_get_weak(const struct kmod_list *
 /* libkmod-module.c */
 int kmod_module_new_from_alias(struct kmod_ctx *ctx, const char *alias, const char *name, struct kmod_module **mod);
 _nonnull_all_ int kmod_module_parse_depline(struct kmod_module *mod, char *line);
-void kmod_module_set_install_commands(struct kmod_module *mod, const char *cmd) __attribute__((nonnull(1)));
-void kmod_module_set_remove_commands(struct kmod_module *mod, const char *cmd) __attribute__((nonnull(1)));
-void kmod_module_set_visited(struct kmod_module *mod, bool visited) __attribute__((nonnull(1)));
-void kmod_module_set_builtin(struct kmod_module *mod, bool builtin) __attribute__((nonnull((1))));
-void kmod_module_set_required(struct kmod_module *mod, bool required) __attribute__((nonnull(1)));
+_nonnull_(1) void kmod_module_set_install_commands(struct kmod_module *mod, const char *cmd);
+_nonnull_(1) void kmod_module_set_remove_commands(struct kmod_module *mod, const char *cmd);
+_nonnull_(1)void kmod_module_set_visited(struct kmod_module *mod, bool visited);
+_nonnull_(1) void kmod_module_set_builtin(struct kmod_module *mod, bool builtin);
+_nonnull_(1) void kmod_module_set_required(struct kmod_module *mod, bool required);
 _nonnull_all_ bool kmod_module_is_builtin(struct kmod_module *mod);
 
 /* libkmod-file.c */
index 967b8c0f42cff176ea5004894817485d4ce20cbe..e112553db5757a431e8cb445507226c840266328 100644 (file)
@@ -50,6 +50,7 @@
 #define _unused_ __attribute__((unused))
 #define _always_inline_ __inline__ __attribute__((always_inline))
 #define _cleanup_(x) __attribute__((cleanup(x)))
+#define _nonnull_(...) __attribute__((nonnull (__VA_ARGS__)))
 #define _nonnull_all_ __attribute__((nonnull))
 
 /* Define C11 noreturn without <stdnoreturn.h> and even on older gcc