]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
libkmod: keep KMOD_FILE_COMPRESSION_NONE/load_reg in comp_types
authorEmil Velikov <emil.l.velikov@gmail.com>
Mon, 12 Feb 2024 17:23:13 +0000 (17:23 +0000)
committerLucas De Marchi <lucas.de.marchi@gmail.com>
Tue, 30 Apr 2024 20:35:37 +0000 (15:35 -0500)
It's cleaner to handle all compression types and load functions in the
same style.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
libkmod/libkmod-file.c

index 5b8b1eb6b6a995605d716bbbee348c5e41f6e800..8baf12d6d62a4729e853865a3fa03dc969477f75 100644 (file)
@@ -385,7 +385,7 @@ static const struct comp_type {
        {sizeof(magic_zstd),    KMOD_FILE_COMPRESSION_ZSTD, magic_zstd, load_zstd},
        {sizeof(magic_xz),      KMOD_FILE_COMPRESSION_XZ, magic_xz, load_xz},
        {sizeof(magic_zlib),    KMOD_FILE_COMPRESSION_ZLIB, magic_zlib, load_zlib},
-       {0,                     KMOD_FILE_COMPRESSION_NONE, NULL, NULL}
+       {0,                     KMOD_FILE_COMPRESSION_NONE, NULL, load_reg}
 };
 
 struct kmod_elf *kmod_file_get_elf(struct kmod_file *file)
@@ -409,7 +409,6 @@ struct kmod_file *kmod_file_open(const struct kmod_ctx *ctx,
                                                const char *filename)
 {
        struct kmod_file *file;
-       const struct comp_type *itr;
        char buf[7];
        ssize_t sz;
 
@@ -440,19 +439,17 @@ struct kmod_file *kmod_file_open(const struct kmod_ctx *ctx,
                return NULL;
        }
 
-       for (itr = comp_types; itr->load != NULL; itr++) {
-               if (memcmp(buf, itr->magic_bytes, itr->magic_size) == 0) {
-                       file->load = itr->load;
-                       file->compression = itr->compression;
+       for (unsigned int i = 0; i < ARRAY_SIZE(comp_types); i++) {
+               const struct comp_type *itr = &comp_types[i];
+
+               file->load = itr->load;
+               file->compression = itr->compression;
+               if (itr->magic_size &&
+                   memcmp(buf, itr->magic_bytes, itr->magic_size) == 0) {
                        break;
                }
        }
 
-       if (file->load == NULL) {
-               file->load = load_reg;
-               file->compression = KMOD_FILE_COMPRESSION_NONE;
-       }
-
        file->ctx = ctx;
 
        return file;