summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2017-11-17 13:55:05 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2017-11-19 12:36:20 +0100
commit30b5047762a77884b8badb0b34b1ddba0c9592a6 (patch)
treec2dbadf2f1c293ab646a8d35cb713cab5364ac5d /src
parent46fb255b0d2c5fd304bcf4ba069d843da2828dca (diff)
downloadsystemd-30b5047762a77884b8badb0b34b1ddba0c9592a6.tar.gz
systemd-30b5047762a77884b8badb0b34b1ddba0c9592a6.tar.bz2
systemd-30b5047762a77884b8badb0b34b1ddba0c9592a6.zip
bootctl: add a convenient way to print the path to EFI
Diffstat (limited to 'src')
-rw-r--r--src/boot/bootctl.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c
index de1aaf3221..aee6ad8428 100644
--- a/src/boot/bootctl.c
+++ b/src/boot/bootctl.c
@@ -57,6 +57,7 @@
#include "virt.h"
static char *arg_path = NULL;
+static bool arg_print_path = false;
static bool arg_touch_variables = true;
static int find_esp_and_warn(uint32_t *part, uint64_t *pstart, uint64_t *psize, sd_id128_t *uuid) {
@@ -71,7 +72,7 @@ static int find_esp_and_warn(uint32_t *part, uint64_t *pstart, uint64_t *psize,
return log_error_errno(r,
"Couldn't find EFI system partition: %m");
- log_info("Using EFI System Partition at %s.", arg_path);
+ log_debug("Using EFI System Partition at %s.", arg_path);
return 0;
}
@@ -832,6 +833,7 @@ static int help(int argc, char *argv[], void *userdata) {
" -h --help Show this help\n"
" --version Print version\n"
" --path=PATH Path to the EFI System Partition (ESP)\n"
+ " -p --print-path Print path to the EFI partition\n"
" --no-variables Don't touch EFI variables\n"
"\n"
"Commands:\n"
@@ -856,6 +858,7 @@ static int parse_argv(int argc, char *argv[]) {
{ "help", no_argument, NULL, 'h' },
{ "version", no_argument, NULL, ARG_VERSION },
{ "path", required_argument, NULL, ARG_PATH },
+ { "print-path", no_argument, NULL, 'p' },
{ "no-variables", no_argument, NULL, ARG_NO_VARIABLES },
{ NULL, 0, NULL, 0 }
};
@@ -865,7 +868,7 @@ static int parse_argv(int argc, char *argv[]) {
assert(argc >= 0);
assert(argv);
- while ((c = getopt_long(argc, argv, "h", options, NULL)) >= 0)
+ while ((c = getopt_long(argc, argv, "hp", options, NULL)) >= 0)
switch (c) {
case 'h':
@@ -881,6 +884,10 @@ static int parse_argv(int argc, char *argv[]) {
return log_oom();
break;
+ case 'p':
+ arg_print_path = true;
+ break;
+
case ARG_NO_VARIABLES:
arg_touch_variables = false;
break;
@@ -919,6 +926,14 @@ static int verb_status(int argc, char *argv[], void *userdata) {
r = find_esp_and_warn(NULL, NULL, NULL, &uuid);
+ if (arg_print_path) {
+ if (r < 0)
+ return r;
+
+ puts(arg_path);
+ return 0;
+ }
+
if (is_efi_boot()) {
_cleanup_free_ char *fw_type = NULL, *fw_info = NULL, *loader = NULL, *loader_path = NULL;
sd_id128_t loader_part_uuid = SD_ID128_NULL;