+ {
+ disk = grub_disk_open (dev->disk->name);
+ if (disk && grub_disk_read (disk, pt->offset, pt->index,
+ sizeof (gptdata), &gptdata) == 0)
Did you test this? It looks like you're missing a line
disk->partition = disk->partition->parent;
And the restore disk->partition
+ {
+ guid = &gptdata.guid;
+ guid->data1 = grub_le_to_cpu32 (guid->data1);
+ guid->data2 = grub_le_to_cpu16 (guid->data2);
+ guid->data3 = grub_le_to_cpu16 (guid->data3);
+ part_uuid = grub_xasprintf ("%pG", guid);
+ }
+ if (!part_uuid)
+ grub_error_push ();
+ grub_disk_close (disk);
+ if (!part_uuid)
+ grub_error_pop ();
+ }
+ }
+
+ return part_uuid;
+}
+
grub_err_t
grub_gpt_partition_map_iterate (grub_disk_t disk,
grub_partition_iterate_hook_t hook,
diff --git a/include/grub/gpt_partition.h b/include/grub/gpt_partition.h
index 020e71920..e52834ac2 100644
--- a/include/grub/gpt_partition.h
+++ b/include/grub/gpt_partition.h
@@ -74,5 +74,7 @@ grub_gpt_partition_map_iterate (grub_disk_t disk,
grub_partition_iterate_hook_t hook,
void *hook_data);
+char *
+grub_gpt_partition_get_uuid (grub_device_t dev);
#endif /* ! GRUB_GPT_PARTITION_HEADER */
--
2.34.1
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel