diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2023-04-12 22:38:01 +0900 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2023-04-13 11:17:28 +0200 |
commit | 06e78680e3c36589b785f90ecda64d124905a3f7 (patch) | |
tree | 4e30e25ea6b5d15e3156ec783cfef15744df9b27 /src/boot/bootctl.c | |
parent | 771805eb44ec42228d9d85f4d35962ff8459bb77 (diff) | |
download | systemd-06e78680e3c36589b785f90ecda64d124905a3f7.tar.gz |
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.
Diffstat (limited to 'src/boot/bootctl.c')
-rw-r--r-- | src/boot/bootctl.c | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c index b9d034d550..0480e320c0 100644 --- a/src/boot/bootctl.c +++ b/src/boot/bootctl.c @@ -211,6 +211,7 @@ static int parse_argv(int argc, char *argv[]) { ARG_BOOT_PATH, ARG_ROOT, ARG_IMAGE, + ARG_IMAGE_POLICY, ARG_INSTALL_SOURCE, ARG_VERSION, ARG_NO_VARIABLES, @@ -222,7 +223,6 @@ static int parse_argv(int argc, char *argv[]) { ARG_ARCH_ALL, ARG_EFI_BOOT_OPTION_DESCRIPTION, ARG_DRY_RUN, - ARG_IMAGE_POLICY, }; static const struct option options[] = { @@ -233,6 +233,7 @@ static int parse_argv(int argc, char *argv[]) { { "boot-path", required_argument, NULL, ARG_BOOT_PATH }, { "root", required_argument, NULL, ARG_ROOT }, { "image", required_argument, NULL, ARG_IMAGE }, + { "image-policy", required_argument, NULL, ARG_IMAGE_POLICY }, { "install-source", required_argument, NULL, ARG_INSTALL_SOURCE }, { "print-esp-path", no_argument, NULL, 'p' }, { "print-path", no_argument, NULL, 'p' }, /* Compatibility alias */ @@ -249,7 +250,6 @@ static int parse_argv(int argc, char *argv[]) { { "all-architectures", no_argument, NULL, ARG_ARCH_ALL }, { "efi-boot-option-description", required_argument, NULL, ARG_EFI_BOOT_OPTION_DESCRIPTION }, { "dry-run", no_argument, NULL, ARG_DRY_RUN }, - { "image-policy", required_argument, NULL, ARG_IMAGE_POLICY }, {} }; @@ -292,6 +292,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_INSTALL_SOURCE: if (streq(optarg, "auto")) arg_install_source = ARG_INSTALL_SOURCE_AUTO; @@ -382,18 +388,6 @@ static int parse_argv(int argc, char *argv[]) { arg_dry_run = 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; |