From: Emil Velikov Date: Mon, 12 Feb 2024 17:23:13 +0000 (+0000) Subject: libkmod: keep KMOD_FILE_COMPRESSION_NONE/load_reg in comp_types X-Git-Tag: v33~55 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5a8b16b7189d5a2b99bfd536962a36e390dd124f;p=thirdparty%2Fkmod.git libkmod: keep KMOD_FILE_COMPRESSION_NONE/load_reg in comp_types It's cleaner to handle all compression types and load functions in the same style. Signed-off-by: Emil Velikov Reviewed-by: Lucas De Marchi Signed-off-by: Lucas De Marchi --- diff --git a/libkmod/libkmod-file.c b/libkmod/libkmod-file.c index 5b8b1eb6..8baf12d6 100644 --- a/libkmod/libkmod-file.c +++ b/libkmod/libkmod-file.c @@ -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;