From 06e78680e3c36589b785f90ecda64d124905a3f7 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 12 Apr 2023 22:38:01 +0900 Subject: image-policy: introduce parse_image_policy_argument() helper Addresses https://github.com/systemd/systemd/pull/25608/commits/84be0c710d9d562f6d2cf986cc2a8ff4c98a138b#r1060130312, https://github.com/systemd/systemd/pull/25608/commits/84be0c710d9d562f6d2cf986cc2a8ff4c98a138b#r1067927293, and https://github.com/systemd/systemd/pull/25608/commits/84be0c710d9d562f6d2cf986cc2a8ff4c98a138b#r1067926416. Follow-up for 84be0c710d9d562f6d2cf986cc2a8ff4c98a138b. --- src/firstboot/firstboot.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) (limited to 'src/firstboot') diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c index 7cd13a51e9..71b1e25c9d 100644 --- a/src/firstboot/firstboot.c +++ b/src/firstboot/firstboot.c @@ -1208,6 +1208,7 @@ static int parse_argv(int argc, char *argv[]) { ARG_VERSION = 0x100, ARG_ROOT, ARG_IMAGE, + ARG_IMAGE_POLICY, ARG_LOCALE, ARG_LOCALE_MESSAGES, ARG_KEYMAP, @@ -1237,7 +1238,6 @@ static int parse_argv(int argc, char *argv[]) { ARG_DELETE_ROOT_PASSWORD, ARG_WELCOME, ARG_RESET, - ARG_IMAGE_POLICY, }; static const struct option options[] = { @@ -1245,6 +1245,7 @@ static int parse_argv(int argc, char *argv[]) { { "version", no_argument, NULL, ARG_VERSION }, { "root", required_argument, NULL, ARG_ROOT }, { "image", required_argument, NULL, ARG_IMAGE }, + { "image-policy", required_argument, NULL, ARG_IMAGE_POLICY }, { "locale", required_argument, NULL, ARG_LOCALE }, { "locale-messages", required_argument, NULL, ARG_LOCALE_MESSAGES }, { "keymap", required_argument, NULL, ARG_KEYMAP }, @@ -1274,7 +1275,6 @@ static int parse_argv(int argc, char *argv[]) { { "delete-root-password", no_argument, NULL, ARG_DELETE_ROOT_PASSWORD }, { "welcome", required_argument, NULL, ARG_WELCOME }, { "reset", no_argument, NULL, ARG_RESET }, - { "image-policy", required_argument, NULL, ARG_IMAGE_POLICY }, {} }; @@ -1305,6 +1305,12 @@ static int parse_argv(int argc, char *argv[]) { return r; break; + case ARG_IMAGE_POLICY: + r = parse_image_policy_argument(optarg, &arg_image_policy); + if (r < 0) + return r; + break; + case ARG_LOCALE: r = free_and_strdup(&arg_locale, optarg); if (r < 0) @@ -1481,17 +1487,6 @@ static int parse_argv(int argc, char *argv[]) { arg_reset = true; break; - case ARG_IMAGE_POLICY: { - _cleanup_(image_policy_freep) ImagePolicy *p = NULL; - - r = image_policy_from_string(optarg, &p); - if (r < 0) - return log_error_errno(r, "Failed to parse image policy: %s", optarg); - - image_policy_free(arg_image_policy); - arg_image_policy = TAKE_PTR(p); - break; - } case '?': return -EINVAL; -- cgit v1.2.1