On 03/22/2018 06:51 AM, Daniel Kiper wrote: > On Sun, Mar 18, 2018 at 12:06:02PM -0700, Nicholas Vinson wrote: >> Add PARTUUID detection support grub-probe for MBR and GPT partition >> schemes. >> >> Signed-off-by: Nicholas Vinson <nvinson...@gmail.com> >> --- >> util/grub-probe.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 51 insertions(+) >> >> diff --git a/util/grub-probe.c b/util/grub-probe.c >> index 21cb80fbe..0ae73c591 100644 >> --- a/util/grub-probe.c >> +++ b/util/grub-probe.c >> @@ -28,6 +28,7 @@ >> #include <grub/partition.h> >> #include <grub/msdos_partition.h> >> #include <grub/gpt_partition.h> >> +#include <grub/i386/pc/boot.h> >> #include <grub/emu/hostdisk.h> >> #include <grub/emu/getroot.h> >> #include <grub/term.h> >> @@ -62,6 +63,7 @@ enum { >> PRINT_DRIVE, >> PRINT_DEVICE, >> PRINT_PARTMAP, >> + PRINT_PARTUUID, >> PRINT_ABSTRACTION, >> PRINT_CRYPTODISK_UUID, >> PRINT_HINT_STR, >> @@ -85,6 +87,7 @@ static const char *targets[] = >> [PRINT_DRIVE] = "drive", >> [PRINT_DEVICE] = "device", >> [PRINT_PARTMAP] = "partmap", >> + [PRINT_PARTUUID] = "partuuid", >> [PRINT_ABSTRACTION] = "abstraction", >> [PRINT_CRYPTODISK_UUID] = "cryptodisk_uuid", >> [PRINT_HINT_STR] = "hints_string", >> @@ -181,6 +184,48 @@ probe_partmap (grub_disk_t disk, char delim) >> } >> } >> >> +static void >> +probe_partuuid (grub_disk_t disk, char delim) >> +{ > > Define p here: > grub_partition_t p = disk->partition;
done. > >> + /* >> + * Nested partitions not supported for now. >> + * Non-nested partitions must have disk->partition->parent == NULL >> + */ >> + if (disk->partition && disk->partition->parent == NULL) >> + { >> + if (strcmp(disk->partition->partmap->name, "msdos") == 0) >> + { >> + /* >> + * The partition GUID for MSDOS is the partition number (starting >> + * with 1) prepended with the NT disk signature. >> + */ >> + grub_uint32_t nt_disk_sig; > > Somthing is wrong with formating here and there. Please fix this. fixed. I forgot to tell vim not to expand tab characters. > >> + grub_partition_t p = disk->partition; > > Drop this... > dropped. >> + disk->partition = p->parent; >> + >> + if (grub_disk_read (disk, 0, GRUB_BOOT_MACHINE_WINDOWS_NT_MAGIC, >> + sizeof(nt_disk_sig), &nt_disk_sig) == 0) >> + >> + grub_printf ("%08x-%02x", >> + grub_le_to_cpu32(nt_disk_sig), 1 + p->number); >> + disk->partition = p; > > ...and above line... > done. >> + } >> + else if (strcmp(disk->partition->partmap->name, "gpt") == 0) >> + { >> + grub_partition_t p = disk->partition; >> + struct grub_gpt_partentry gptdata; >> + >> + disk->partition = p->parent; >> + >> + if (grub_disk_read (disk, p->offset, p->index, >> + sizeof(gptdata), &gptdata) == 0) >> + print_gpt_guid(gptdata.guid); >> + >> + disk->partition = p; > > ...and above line... done. > >> + } > > ...and add this here: > disk->partition = p; added. Thanks, Nicholas Vinson > > Daniel >
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel