From c2cd950817b50121f1d06bc83d7f459a1c283a72 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sat, 8 Apr 2023 21:27:48 +0900 Subject: [PATCH 1/3] os-util: move declaration of string table lookup for image class --- src/basic/os-util.c | 10 ++++++++++ src/basic/os-util.h | 1 + src/shared/discover-image.c | 9 --------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/basic/os-util.c b/src/basic/os-util.c index 8cb8d9302b..686d5e1382 100644 --- a/src/basic/os-util.c +++ b/src/basic/os-util.c @@ -14,11 +14,21 @@ #include "parse-util.h" #include "path-util.h" #include "stat-util.h" +#include "string-table.h" #include "string-util.h" #include "strv.h" #include "utf8.h" #include "xattr-util.h" +static const char* const image_class_table[_IMAGE_CLASS_MAX] = { + [IMAGE_MACHINE] = "machine", + [IMAGE_PORTABLE] = "portable", + [IMAGE_SYSEXT] = "extension", + [IMAGE_CONFEXT] = "confext", +}; + +DEFINE_STRING_TABLE_LOOKUP(image_class, ImageClass); + /* Helper struct for naming simplicity and reusability */ static const struct { const char *release_file_directory; diff --git a/src/basic/os-util.h b/src/basic/os-util.h index 2f641ba9cd..6121674361 100644 --- a/src/basic/os-util.h +++ b/src/basic/os-util.h @@ -5,6 +5,7 @@ #include #include "time-util.h" + typedef enum ImageClass { IMAGE_MACHINE, IMAGE_PORTABLE, diff --git a/src/shared/discover-image.c b/src/shared/discover-image.c index 0343d2e20b..d0b3245a27 100644 --- a/src/shared/discover-image.c +++ b/src/shared/discover-image.c @@ -1326,12 +1326,3 @@ static const char* const image_type_table[_IMAGE_TYPE_MAX] = { }; DEFINE_STRING_TABLE_LOOKUP(image_type, ImageType); - -static const char* const image_class_table[_IMAGE_CLASS_MAX] = { - [IMAGE_MACHINE] = "machine", - [IMAGE_PORTABLE] = "portable", - [IMAGE_SYSEXT] = "extension", - [IMAGE_CONFEXT] = "confext" -}; - -DEFINE_STRING_TABLE_LOOKUP(image_class, ImageClass); From d67071d2f6f09676d01becbde65a338b13f3a012 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sat, 8 Apr 2023 16:15:03 +0900 Subject: [PATCH 2/3] os-util: use _IMAGE_CLASS_INVALID When extension is not specified, image class is not necessary to be specified. Let's use _IMAGE_CLASS_INVALID as an indicator that no extension is specified. --- src/basic/os-util.c | 4 +--- src/basic/os-util.h | 6 +++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/basic/os-util.c b/src/basic/os-util.c index 686d5e1382..005ccf790b 100644 --- a/src/basic/os-util.c +++ b/src/basic/os-util.c @@ -65,8 +65,6 @@ int path_is_extension_tree(ImageClass image_class, const char *path, const char int r; assert(path); - assert(image_class >= 0); - assert(image_class < _IMAGE_CLASS_MAX); /* Does the path exist at all? If not, generate an error immediately. This is useful so that a missing root dir * always results in -ENOENT, and we can properly distinguish the case where the whole root doesn't exist from @@ -305,7 +303,7 @@ int _parse_os_release(const char *root, ...) { int r; va_start(ap, root); - r = parse_release_internal(root, -1, /* relax_extension_release_check= */ false, NULL, ap); + r = parse_release_internal(root, _IMAGE_CLASS_INVALID, /* relax_extension_release_check= */ false, NULL, ap); va_end(ap); return r; diff --git a/src/basic/os-util.h b/src/basic/os-util.h index 6121674361..0cd55f87c6 100644 --- a/src/basic/os-util.h +++ b/src/basic/os-util.h @@ -25,17 +25,17 @@ bool image_name_is_valid(const char *s) _pure_; int path_is_extension_tree(ImageClass image_class, const char *path, const char *extension, bool relax_extension_release_check); static inline int path_is_os_tree(const char *path) { - return path_is_extension_tree(IMAGE_SYSEXT, path, NULL, false); + return path_is_extension_tree(_IMAGE_CLASS_INVALID, path, NULL, false); } int open_extension_release(const char *root, ImageClass image_class, const char *extension, bool relax_extension_release_check, char **ret_path, int *ret_fd); static inline int open_os_release(const char *root, char **ret_path, int *ret_fd) { - return open_extension_release(root, IMAGE_SYSEXT, NULL, false, ret_path, ret_fd); + return open_extension_release(root, _IMAGE_CLASS_INVALID, NULL, false, ret_path, ret_fd); } int fopen_extension_release(const char *root, ImageClass image_class, const char *extension, bool relax_extension_release_check, char **ret_path, FILE **ret_file); static inline int fopen_os_release(const char *root, char **ret_path, FILE **ret_file) { - return fopen_extension_release(root, IMAGE_SYSEXT, NULL, false, ret_path, ret_file); + return fopen_extension_release(root, _IMAGE_CLASS_INVALID, NULL, false, ret_path, ret_file); } int _parse_extension_release(const char *root, ImageClass image_class, bool relax_extension_release_check, const char *extension, ...) _sentinel_; From 8c14d828d4eef89f4800290dc384727f5fbd4b7e Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sat, 8 Apr 2023 17:56:38 +0900 Subject: [PATCH 3/3] os-util: drop redundant declaration of load_os_release_pairs() --- src/basic/os-util.c | 15 --------------- src/basic/os-util.h | 4 +++- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/src/basic/os-util.c b/src/basic/os-util.c index 005ccf790b..5f1c26b87c 100644 --- a/src/basic/os-util.c +++ b/src/basic/os-util.c @@ -309,18 +309,6 @@ int _parse_os_release(const char *root, ...) { return r; } -int load_os_release_pairs(const char *root, char ***ret) { - _cleanup_fclose_ FILE *f = NULL; - _cleanup_free_ char *p = NULL; - int r; - - r = fopen_os_release(root, &p, &f); - if (r < 0) - return r; - - return load_env_file_pairs(f, p, ret); -} - int load_os_release_pairs_with_prefix(const char *root, const char *prefix, char ***ret) { _cleanup_strv_free_ char **os_release_pairs = NULL, **os_release_pairs_prefixed = NULL; int r; @@ -355,9 +343,6 @@ int load_extension_release_pairs(const char *root, ImageClass image_class, const _cleanup_free_ char *p = NULL; int r; - assert(image_class >= 0); - assert(image_class < _IMAGE_CLASS_MAX); - r = fopen_extension_release(root, image_class, extension, relax_extension_release_check, &p, &f); if (r < 0) return r; diff --git a/src/basic/os-util.h b/src/basic/os-util.h index 0cd55f87c6..01dcde7a80 100644 --- a/src/basic/os-util.h +++ b/src/basic/os-util.h @@ -44,7 +44,9 @@ int _parse_os_release(const char *root, ...) _sentinel_; #define parse_os_release(root, ...) _parse_os_release(root, __VA_ARGS__, NULL) int load_extension_release_pairs(const char *root, ImageClass image_class, const char *extension, bool relax_extension_release_check, char ***ret); -int load_os_release_pairs(const char *root, char ***ret); +static inline int load_os_release_pairs(const char *root, char ***ret) { + return load_extension_release_pairs(root, _IMAGE_CLASS_INVALID, NULL, false, ret); +} int load_os_release_pairs_with_prefix(const char *root, const char *prefix, char ***ret); int os_release_support_ended(const char *support_end, bool quiet, usec_t *ret_eol);