]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
boot: don't hardcode drop-in paths at multiple places 34339/head
authorLennart Poettering <lennart@poettering.net>
Thu, 4 Jul 2024 15:09:06 +0000 (17:09 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 10 Sep 2024 12:38:11 +0000 (14:38 +0200)
Instead, let's define them once, and pass them through as parameters
everywhere.

src/boot/efi/boot.c

index 8604c1e8d03c0703f8c141c63d782c826e49457a..c143801019da0925fc1debd43e8e8cb2a5b0066b 100644 (file)
@@ -1661,7 +1661,9 @@ static void config_load_type1_entries(
 
         /* Adds Boot Loader Type #1 entries (i.e. /loader/entries/….conf) */
 
-        err = open_directory(root_dir, u"\\loader\\entries", &entries_dir);
+        const uint16_t dropin_path[] = u"\\loader\\entries";
+
+        err = open_directory(root_dir, dropin_path, &entries_dir);
         if (err != EFI_SUCCESS)
                 return;
 
@@ -1690,7 +1692,7 @@ static void config_load_type1_entries(
                 if (err != EFI_SUCCESS)
                         continue;
 
-                boot_entry_add_type1(config, device, root_dir, u"\\loader\\entries", f->FileName, content, loaded_image_path);
+                boot_entry_add_type1(config, device, root_dir, dropin_path, f->FileName, content, loaded_image_path);
         }
 }
 
@@ -2136,6 +2138,7 @@ static void boot_entry_add_type2(
                 Config *config,
                 EFI_HANDLE *device,
                 EFI_FILE *dir,
+                const uint16_t *path,
                 const uint16_t *filename) {
 
         enum {
@@ -2156,6 +2159,7 @@ static void boot_entry_add_type2(
         assert(config);
         assert(device);
         assert(dir);
+        assert(path);
         assert(filename);
 
         _cleanup_(file_closep) EFI_FILE *handle = NULL;
@@ -2322,7 +2326,7 @@ static void boot_entry_add_type2(
                         .title = TAKE_PTR(title),
                         .version = xstrdup16(good_version),
                         .device = device,
-                        .loader = xasprintf("\\EFI\\Linux\\%ls", filename),
+                        .loader = xasprintf("%ls\\%ls", path, filename),
                         .sort_key = xstrdup16(good_sort_key),
                         .key = 'l',
                         .tries_done = -1,
@@ -2331,7 +2335,7 @@ static void boot_entry_add_type2(
                 };
 
                 config_add_entry(config, entry);
-                boot_entry_parse_tries(entry, u"\\EFI\\Linux", filename, u".efi");
+                boot_entry_parse_tries(entry, path, filename, u".efi");
 
                 if (!PE_SECTION_VECTOR_IS_SET(sections + SECTION_CMDLINE))
                         return;
@@ -2369,7 +2373,9 @@ static void config_load_type2_entries(
         assert(device);
         assert(root_dir);
 
-        err = open_directory(root_dir, u"\\EFI\\Linux", &linux_dir);
+        const uint16_t dropin_path[] = u"\\EFI\\Linux";
+
+        err = open_directory(root_dir, dropin_path, &linux_dir);
         if (err != EFI_SUCCESS)
                 return;
 
@@ -2387,7 +2393,7 @@ static void config_load_type2_entries(
                 if (startswith_no_case(f->FileName, u"auto-"))
                         continue;
 
-                boot_entry_add_type2(config, device, linux_dir, f->FileName);
+                boot_entry_add_type2(config, device, linux_dir, dropin_path, f->FileName);
         }
 }