shared/bootspec: also export boot_config_load_type1()

The reallocation of memory and counter incrementation is moved from
the only caller to the function. This way the callers can remain oblivious
of the BootConfig internals.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2022-05-06 14:44:05 +02:00
parent 5ba1550fd8
commit a847b539de
2 changed files with 35 additions and 8 deletions

View File

@@ -168,6 +168,31 @@ static int boot_entry_load_type1(
return 0;
}
int boot_config_load_type1(
BootConfig *config,
FILE *f,
const char *root,
const char *dir,
const char *id) {
int r;
assert(config);
assert(f);
assert(root);
assert(dir);
assert(id);
if (!GREEDY_REALLOC0(config->entries, config->n_entries + 1))
return log_oom();
r = boot_entry_load_type1(f, root, dir, id, config->entries + config->n_entries);
if (r < 0)
return r;
config->n_entries++;
return 0;
}
void boot_config_free(BootConfig *config) {
assert(config);
@@ -397,14 +422,9 @@ static int boot_entries_find_type1(
if (r == 0) /* inode already seen or otherwise not relevant */
continue;
if (!GREEDY_REALLOC0(config->entries, config->n_entries + 1))
return log_oom();
r = boot_entry_load_type1(f, root, dir, de->d_name, config->entries + config->n_entries);
if (r < 0)
continue;
config->n_entries++;
r = boot_config_load_type1(config, f, root, dir, de->d_name);
if (r == -ENOMEM)
return r;
}
return 0;

View File

@@ -88,6 +88,13 @@ void boot_config_free(BootConfig *config);
int boot_loader_read_conf(BootConfig *config, FILE *file, const char *path);
int boot_config_load_type1(
BootConfig *config,
FILE *f,
const char *root,
const char *dir,
const char *id);
int boot_config_finalize(BootConfig *config);
int boot_config_load(BootConfig *config, const char *esp_path, const char *xbootldr_path);
int boot_config_load_auto(BootConfig *config, const char *override_esp_path, const char *override_xbootldr_path);