diff options
author | Emil Velikov <emil.l.velikov@gmail.com> | 2024-02-12 17:23:11 +0000 |
---|---|---|
committer | Lucas De Marchi <lucas.de.marchi@gmail.com> | 2024-04-30 15:33:55 -0500 |
commit | 61bf8e74b9e0ad143f34d2e351cfe3491912da88 (patch) | |
tree | cdff49d6ebddaf9ae2d7532d9eb9e4c40e074752 | |
parent | 737744301a992ed55801acb725995746bdad62a1 (diff) | |
download | kmod-61bf8e74b9e0ad143f34d2e351cfe3491912da88.tar.gz |
libkmod: tidy-up kmod_file_open()
This commit cleans up the indentation and the error path of the
function. It bears no functional changes.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
[ Move assert to avoid warning with -Wdeclaration-after-statement ]
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
-rw-r--r-- | libkmod/libkmod-file.c | 63 |
1 files changed, 27 insertions, 36 deletions
diff --git a/libkmod/libkmod-file.c b/libkmod/libkmod-file.c index 5b88d6c..20f9d62 100644 --- a/libkmod/libkmod-file.c +++ b/libkmod/libkmod-file.c @@ -408,43 +408,43 @@ struct kmod_elf *kmod_file_get_elf(struct kmod_file *file) struct kmod_file *kmod_file_open(const struct kmod_ctx *ctx, const char *filename) { - struct kmod_file *file = calloc(1, sizeof(struct kmod_file)); + struct kmod_file *file; const struct comp_type *itr; - int err = 0; + char buf[7]; + ssize_t sz; + + assert_cc(sizeof(magic_zstd) < sizeof(buf)); + assert_cc(sizeof(magic_xz) < sizeof(buf)); + assert_cc(sizeof(magic_zlib) < sizeof(buf)); + file = calloc(1, sizeof(struct kmod_file)); if (file == NULL) return NULL; file->fd = open(filename, O_RDONLY|O_CLOEXEC); if (file->fd < 0) { - err = -errno; - goto error; + free(file); + return NULL; } - { - char buf[7]; - ssize_t sz; - - assert_cc(sizeof(magic_zstd) < sizeof(buf)); - assert_cc(sizeof(magic_xz) < sizeof(buf)); - assert_cc(sizeof(magic_zlib) < sizeof(buf)); - - sz = read_str_safe(file->fd, buf, sizeof(buf)); - lseek(file->fd, 0, SEEK_SET); - if (sz != (sizeof(buf) - 1)) { - if (sz < 0) - err = sz; - else - err = -EINVAL; - goto error; - } + sz = read_str_safe(file->fd, buf, sizeof(buf)); + lseek(file->fd, 0, SEEK_SET); + if (sz != (sizeof(buf) - 1)) { + if (sz < 0) + errno = -sz; + else + errno = EINVAL; - 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; - break; - } + close(file->fd); + free(file); + 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; + break; } } @@ -455,15 +455,6 @@ struct kmod_file *kmod_file_open(const struct kmod_ctx *ctx, file->ctx = ctx; -error: - if (err < 0) { - if (file->fd >= 0) - close(file->fd); - free(file); - errno = -err; - return NULL; - } - return file; } |