[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 03/16] commands/probe: Simplify 'probe --part-uuid' command
From: |
Vitaly Kuzmichev |
Subject: |
[PATCH v5 03/16] commands/probe: Simplify 'probe --part-uuid' command |
Date: |
Tue, 22 Aug 2023 23:39:11 +0200 |
Simplify 'probe --part-uuid' command to use just added helper functions
grub_gpt_partition_get_uuid() and grub_mbr_partition_get_uuid().
Signed-off-by: Vitaly Kuzmichev <vitaly.kuzmichev@rtsoft.de>
---
grub-core/commands/probe.c | 59 ++++++++++----------------------------
1 file changed, 15 insertions(+), 44 deletions(-)
diff --git a/grub-core/commands/probe.c b/grub-core/commands/probe.c
index be9637f33..05aed2295 100644
--- a/grub-core/commands/probe.c
+++ b/grub-core/commands/probe.c
@@ -25,6 +25,7 @@
#include <grub/disk.h>
#include <grub/partition.h>
#include <grub/gpt_partition.h>
+#include <grub/msdos_partition.h>
#include <grub/net.h>
#include <grub/fs.h>
#include <grub/file.h>
@@ -32,7 +33,6 @@
#include <grub/env.h>
#include <grub/extcmd.h>
#include <grub/i18n.h>
-#include <grub/i386/pc/boot.h>
GRUB_MOD_LICENSE ("GPLv3+");
@@ -103,54 +103,25 @@ grub_cmd_probe (grub_extcmd_context_t ctxt, int argc,
char **args)
}
if (state[6].set)
{
- /* AAAABBBB-CCCC-DDDD-EEEE-FFFFFFFFFFFF + null terminator */
- char val[37] = "none";
- if (dev->disk && dev->disk->partition)
- {
- struct grub_partition *p = dev->disk->partition;
- grub_disk_t disk = grub_disk_open(dev->disk->name);
-
- if (!disk)
- {
- grub_device_close (dev);
- return grub_errno;
- }
-
- if (grub_strcmp(dev->disk->partition->partmap->name, "gpt") == 0)
- {
- struct grub_gpt_partentry entry;
- grub_guid_t *guid;
-
- if (grub_disk_read(disk, p->offset, p->index, sizeof(entry),
&entry))
- {
- grub_error_push ();
- grub_disk_close (disk);
- grub_device_close (dev);
- grub_error_pop ();
- return grub_errno;
- }
- guid = &entry.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);
- grub_snprintf (val, sizeof(val), "%pG", guid);
- }
- else if (grub_strcmp(dev->disk->partition->partmap->name, "msdos") ==
0)
- {
- grub_uint32_t nt_disk_sig;
+ char *part_uuid;
- if (grub_disk_read(disk, 0, GRUB_BOOT_MACHINE_WINDOWS_NT_MAGIC,
- sizeof(nt_disk_sig), &nt_disk_sig) == 0)
- grub_snprintf (val, sizeof(val), "%08x-%02x",
- grub_le_to_cpu32(nt_disk_sig), 1 + p->number);
- }
- grub_disk_close(disk);
+ part_uuid = grub_gpt_partition_get_uuid (dev);
+ if (!part_uuid && !grub_errno)
+ part_uuid = grub_mbr_partition_get_uuid (dev);
+ if (!part_uuid && grub_errno)
+ {
+ grub_error_push ();
+ grub_device_close (dev);
+ grub_error_pop ();
+ return grub_errno;
}
+
if (state[0].set)
- grub_env_set (state[0].arg, val);
+ grub_env_set (state[0].arg, part_uuid ? part_uuid : "none");
else
- grub_printf ("%s", val);
+ grub_printf ("%s", part_uuid ? part_uuid : "none");
grub_device_close (dev);
+ grub_free (part_uuid);
return GRUB_ERR_NONE;
}
fs = grub_fs_probe (dev);
--
2.34.1
[PATCH v5 05/16] commands/search: Add support to search by partition PARTUUID, Vitaly Kuzmichev, 2023/08/22
[PATCH v5 10/16] commands/search: Add support to search by partition PARTLABEL, Vitaly Kuzmichev, 2023/08/22
[PATCH v5 13/16] fs/f2fs: Simplify to use grub_utf16_to_utf8_alloc(), Vitaly Kuzmichev, 2023/08/22