X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fboot%2Fboot-efi.c;h=33840b6864e83820be915dca43e6f9384988c2e5;hb=c966ef4a7678c4040884a5e644132660e72cd6d9;hp=a0305ba77dc1afae99abe2af55ed3048dfd6b92a;hpb=4d34c4951ab1b9c85fd3aefd40deb87ae05b4c65;p=elogind.git diff --git a/src/boot/boot-efi.c b/src/boot/boot-efi.c index a0305ba77..33840b686 100644 --- a/src/boot/boot-efi.c +++ b/src/boot/boot-efi.c @@ -37,6 +37,18 @@ #include "efivars.h" #include "conf-files.h" +static char *tilt_slashes(char *s) { + char *p; + + if (!s) + return NULL; + + for (p = s; *p; p++) + if (*p == '\\') + *p = '/'; + return s; +} + static int get_boot_entries(struct boot_info *info) { uint16_t *list; int i, n; @@ -64,6 +76,12 @@ static int get_boot_entries(struct boot_info *info) { if (err < 0) continue; + if (isempty(e->title)) { + free(e->title); + e->title = NULL; + } + tilt_slashes(e->path); + e->id = list[i]; info->fw_entries_count++; } @@ -140,6 +158,9 @@ int boot_info_query(struct boot_info *info) { char buf[64]; char *loader_active = NULL; + info->fw_secure_boot = is_efi_secure_boot(); + info->fw_secure_boot_setup_mode = is_efi_secure_boot_setup_mode(); + efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderInfo", &info->loader); get_boot_entries(info); @@ -152,7 +173,8 @@ int boot_info_query(struct boot_info *info) { efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderFirmwareType", &info->fw_type); efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderFirmwareInfo", &info->fw_info); efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderImageIdentifier", &info->loader_image_path); - efi_get_loader_device_part_uuid(&info->loader_part_uuid); + tilt_slashes(info->loader_image_path); + efi_loader_get_device_part_uuid(&info->loader_part_uuid); boot_loader_read_entries(info); efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderEntrySelected", &loader_active);