]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
bootctl: make bootspec-util.c independent of bootctl.c 41695/head
authorLennart Poettering <lennart@amutable.com>
Fri, 17 Apr 2026 14:34:34 +0000 (16:34 +0200)
committerLennart Poettering <lennart@amutable.com>
Fri, 17 Apr 2026 16:52:35 +0000 (18:52 +0200)
This changes boot_config_load_and_select() to also take the root path as
input, just like the ESP and XBOOTLDR path.

This has the benefit of making the whole file independent of bootctl.c,
which means we can link it into a separate test, and is preparatory work
for a follow-up commit.

src/bootctl/bootctl-cleanup.c
src/bootctl/bootctl-status.c
src/bootctl/bootctl-unlink.c
src/bootctl/bootspec-util.c
src/bootctl/bootspec-util.h

index 15c8d08f20d34538eb8013824a84d8d238b949c3..e654bca10497c88d1870667ee7042e9c904c2ee5 100644 (file)
@@ -109,7 +109,7 @@ int verb_cleanup(int argc, char *argv[], uintptr_t _data, void *userdata) {
                 return r;
 
         _cleanup_(boot_config_free) BootConfig config = BOOT_CONFIG_NULL;
-        r = boot_config_load_and_select(&config, arg_esp_path, esp_devid, arg_xbootldr_path, xbootldr_devid);
+        r = boot_config_load_and_select(&config, arg_root, arg_esp_path, esp_devid, arg_xbootldr_path, xbootldr_devid);
         if (r < 0)
                 return r;
 
index 2d694885e176a0dcb5b2290f9a70077fa882f609..76e62847f36eb3f9c7f52d581af639b376c66110 100644 (file)
@@ -615,9 +615,11 @@ int verb_status(int argc, char *argv[], uintptr_t _data, void *userdata) {
         if (arg_esp_path || arg_xbootldr_path) {
                 _cleanup_(boot_config_free) BootConfig config = BOOT_CONFIG_NULL;
 
-                k = boot_config_load_and_select(&config,
-                                                arg_esp_path, esp_devid,
-                                                arg_xbootldr_path, xbootldr_devid);
+                k = boot_config_load_and_select(
+                                &config,
+                                arg_root,
+                                arg_esp_path, esp_devid,
+                                arg_xbootldr_path, xbootldr_devid);
                 RET_GATHER(r, k);
 
                 if (k >= 0)
@@ -654,7 +656,7 @@ int verb_list(int argc, char *argv[], uintptr_t _data, void *userdata) {
         if (r < 0)
                 return r;
 
-        r = boot_config_load_and_select(&config, arg_esp_path, esp_devid, arg_xbootldr_path, xbootldr_devid);
+        r = boot_config_load_and_select(&config, arg_root, arg_esp_path, esp_devid, arg_xbootldr_path, xbootldr_devid);
         if (r < 0)
                 return r;
 
@@ -700,7 +702,7 @@ int vl_method_list_boot_entries(sd_varlink *link, sd_json_variant *parameters, s
         if (r < 0)
                 return r;
 
-        r = boot_config_load_and_select(&config, arg_esp_path, esp_devid, arg_xbootldr_path, xbootldr_devid);
+        r = boot_config_load_and_select(&config, arg_root, arg_esp_path, esp_devid, arg_xbootldr_path, xbootldr_devid);
         if (r < 0)
                 return r;
 
index 428c751f062790cf318c1f6a8de031a93f2b3bfe..b5cc8397989734f130cc4772a0d8805f7907ecf2 100644 (file)
@@ -227,6 +227,7 @@ int verb_unlink(int argc, char *argv[], uintptr_t _data, void *userdata) {
         _cleanup_(boot_config_free) BootConfig config = BOOT_CONFIG_NULL;
         r = boot_config_load_and_select(
                         &config,
+                        arg_root,
                         arg_esp_path,
                         esp_devid,
                         arg_xbootldr_path,
index ec3339600bb103a5a7a55bf3b487d00b1f5e9680..b96687430ca32316c7eb4a45591d361910b70ec0 100644 (file)
@@ -1,6 +1,5 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
-#include "bootctl.h"
 #include "bootspec-util.h"
 #include "devnum-util.h"
 #include "efi-loader.h"
@@ -10,6 +9,7 @@
 
 int boot_config_load_and_select(
                 BootConfig *config,
+                const char *root,
                 const char *esp_path,
                 dev_t esp_devid,
                 const char *xbootldr_path,
@@ -25,7 +25,7 @@ int boot_config_load_and_select(
         if (r < 0)
                 return r;
 
-        if (!arg_root) {
+        if (!root) {
                 _cleanup_strv_free_ char **efi_entries = NULL;
 
                 r = efi_loader_get_entries(&efi_entries);
@@ -37,5 +37,5 @@ int boot_config_load_and_select(
                         (void) boot_config_augment_from_loader(config, efi_entries, /* auto_only= */ false);
         }
 
-        return boot_config_select_special_entries(config, /* skip_efivars= */ !!arg_root);
+        return boot_config_select_special_entries(config, /* skip_efivars= */ !!root);
 }
index a00e002caafdc6b33e13ddcc2fd53bab5b9c9947..51dac12b9f44be5c09a4f66af6fa34b6ed312de4 100644 (file)
@@ -3,4 +3,4 @@
 
 #include "bootspec.h"
 
-int boot_config_load_and_select(BootConfig *config, const char *esp_path, dev_t esp_devid, const char *xbootldr_path, dev_t xbootldr_devid);
+int boot_config_load_and_select(BootConfig *config, const char *root, const char *esp_path, dev_t esp_devid, const char *xbootldr_path, dev_t xbootldr_devid);