]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
libkmod: return the errno from kmod_builtin_info_init()
authorEmil Velikov <emil.l.velikov@gmail.com>
Wed, 7 May 2025 13:13:39 +0000 (14:13 +0100)
committerLucas De Marchi <lucas.de.marchi@gmail.com>
Tue, 20 May 2025 02:51:43 +0000 (21:51 -0500)
Change the function signature (bool -> int) and directly return the
error code. Thus we no longer need to overwrite errno.

v2:
 - return false -> return -ENAMETOOLONG

Reference: https://github.com/kmod-project/kmod/issues/244
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Link: https://github.com/kmod-project/kmod/pull/346
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
libkmod/libkmod-builtin.c

index da5abdc0e2021a49f65ebc53c8f2aec20643ac3a..c08626b2f7bd7c9feae8a0d3dcf1a4f874090cf3 100644 (file)
@@ -33,29 +33,27 @@ struct kmod_builtin_info {
        char *buf;
 };
 
-static bool kmod_builtin_info_init(struct kmod_builtin_info *info, struct kmod_ctx *ctx)
+static int kmod_builtin_info_init(struct kmod_builtin_info *info, struct kmod_ctx *ctx)
 {
        char path[PATH_MAX];
        FILE *fp = NULL;
        const char *dirname = kmod_get_dirname(ctx);
        size_t len = strlen(dirname);
 
-       if ((len + 1 + strlen(MODULES_BUILTIN_MODINFO) + 1) >= sizeof(path)) {
-               errno = ENAMETOOLONG;
-               return false;
-       }
+       if ((len + 1 + strlen(MODULES_BUILTIN_MODINFO) + 1) >= sizeof(path))
+               return -ENAMETOOLONG;
        snprintf(path, sizeof(path), "%s/" MODULES_BUILTIN_MODINFO, dirname);
 
        fp = fopen(path, "r");
        if (fp == NULL)
-               return false;
+               return -errno;
 
        info->ctx = ctx;
        info->fp = fp;
        info->bufsz = 0;
        info->buf = NULL;
 
-       return true;
+       return 0;
 }
 
 static void kmod_builtin_info_release(struct kmod_builtin_info *info)
@@ -171,9 +169,11 @@ ssize_t kmod_builtin_get_modinfo(struct kmod_ctx *ctx, const char *modname,
        DECLARE_STRBUF(buf);
        struct kmod_builtin_info info;
        ssize_t count;
+       int ret;
 
-       if (!kmod_builtin_info_init(&info, ctx))
-               return -errno;
+       ret = kmod_builtin_info_init(&info, ctx);
+       if (ret < 0)
+               return ret;
 
        count = get_strings(&info, modname, &buf);
        if (count == 0)