From: Lennart Poettering Date: Fri, 16 Dec 2022 17:27:06 +0000 (+0100) Subject: bootctl: let's start splitting up bootctl like we did for systemctl and others X-Git-Tag: v253-rc1~246^2~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=34ea7e02320f6f91c354a5c329eeb29f998dd731;p=thirdparty%2Fsystemd.git bootctl: let's start splitting up bootctl like we did for systemctl and others --- diff --git a/meson.build b/meson.build index 3c6734b578f..f0b7b8958ee 100644 --- a/meson.build +++ b/meson.build @@ -2605,7 +2605,9 @@ if conf.get('HAVE_BLKID') == 1 and conf.get('HAVE_GNU_EFI') == 1 exe = executable( 'bootctl', - 'src/boot/bootctl.c', + ['src/boot/bootctl.c', + 'src/boot/bootctl-reboot-to-firmware.c', + 'src/boot/bootctl-reboot-to-firmware.h'], include_directories : includes, link_with : [boot_link_with], dependencies : [libblkid, diff --git a/src/boot/bootctl-reboot-to-firmware.c b/src/boot/bootctl-reboot-to-firmware.c new file mode 100644 index 00000000000..77e3ff12a9b --- /dev/null +++ b/src/boot/bootctl-reboot-to-firmware.c @@ -0,0 +1,38 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ + +#include "bootctl-reboot-to-firmware.h" +#include "efi-api.h" +#include "parse-util.h" + +int verb_reboot_to_firmware(int argc, char *argv[], void *userdata) { + int r; + + if (argc < 2) { + r = efi_get_reboot_to_firmware(); + if (r > 0) { + puts("active"); + return EXIT_SUCCESS; /* success */ + } + if (r == 0) { + puts("supported"); + return 1; /* recognizable error #1 */ + } + if (r == -EOPNOTSUPP) { + puts("not supported"); + return 2; /* recognizable error #2 */ + } + + log_error_errno(r, "Failed to query reboot-to-firmware state: %m"); + return 3; /* other kind of error */ + } else { + r = parse_boolean(argv[1]); + if (r < 0) + return log_error_errno(r, "Failed to parse argument: %s", argv[1]); + + r = efi_set_reboot_to_firmware(r); + if (r < 0) + return log_error_errno(r, "Failed to set reboot-to-firmware option: %m"); + + return 0; + } +} diff --git a/src/boot/bootctl-reboot-to-firmware.h b/src/boot/bootctl-reboot-to-firmware.h new file mode 100644 index 00000000000..0ca4b2c3a30 --- /dev/null +++ b/src/boot/bootctl-reboot-to-firmware.h @@ -0,0 +1,3 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ + +int verb_reboot_to_firmware(int argc, char *argv[], void *userdata); diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c index 7721c3d2e38..9b82102d0e7 100644 --- a/src/boot/bootctl.c +++ b/src/boot/bootctl.c @@ -14,6 +14,7 @@ #include "alloc-util.h" #include "blkid-util.h" +#include "bootctl-reboot-to-firmware.h" #include "bootspec.h" #include "build.h" #include "chase-symlinks.h" @@ -2499,39 +2500,6 @@ static int verb_systemd_efi_options(int argc, char *argv[], void *userdata) { return 0; } -static int verb_reboot_to_firmware(int argc, char *argv[], void *userdata) { - int r; - - if (argc < 2) { - r = efi_get_reboot_to_firmware(); - if (r > 0) { - puts("active"); - return EXIT_SUCCESS; /* success */ - } - if (r == 0) { - puts("supported"); - return 1; /* recognizable error #1 */ - } - if (r == -EOPNOTSUPP) { - puts("not supported"); - return 2; /* recognizable error #2 */ - } - - log_error_errno(r, "Failed to query reboot-to-firmware state: %m"); - return 3; /* other kind of error */ - } else { - r = parse_boolean(argv[1]); - if (r < 0) - return log_error_errno(r, "Failed to parse argument: %s", argv[1]); - - r = efi_set_reboot_to_firmware(r); - if (r < 0) - return log_error_errno(r, "Failed to set reboot-to-firmware option: %m"); - - return 0; - } -} - static int bootctl_main(int argc, char *argv[]) { static const Verb verbs[] = { { "help", VERB_ANY, VERB_ANY, 0, help },