/*** This file is part of systemd. Copyright 2017 Zbigniew Jędrzejewski-Szmek systemd is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. systemd is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . ***/ #pragma once #include typedef struct BootEntry { char *filename; char *title; char *show_title; char *version; char *machine_id; char *architecture; char **options; char *kernel; /* linux is #defined to 1, yikes! */ char *efi; char **initrd; char *device_tree; } BootEntry; typedef struct BootConfig { char *default_pattern; char *timeout; char *editor; char *entry_oneshot; char *entry_default; BootEntry *entries; size_t n_entries; ssize_t default_entry; } BootConfig; void boot_entry_free(BootEntry *entry); int boot_entry_load(const char *path, BootEntry *entry); int boot_entries_find(const char *dir, BootEntry **entries, size_t *n_entries); int boot_entries_select_default(const BootConfig *config); int boot_loader_read_conf(const char *path, BootConfig *config); void boot_config_free(BootConfig *config); int boot_entries_load_config(const char *esp_path, BootConfig *config); static inline const char* boot_entry_title(const BootEntry *entry) { return entry->show_title ?: entry->title ?: entry->filename; } int find_esp(char **path, uint32_t *part, uint64_t *pstart, uint64_t *psize, sd_id128_t *uuid);