From 43de930c20205db14057a951d094c858cad9e14a Mon Sep 17 00:00:00 2001 From: Vladimir 'phcoder' Serbinenko Date: Wed, 8 Sep 2010 21:22:41 +0200 Subject: [PATCH] Change to disk->name being raw name. It makes less hidden issues --- grub-core/disk/efi/efidisk.c | 9 +++++---- grub-core/kern/device.c | 12 +++++++++--- grub-core/kern/disk.c | 10 ++++++---- grub-core/kern/partition.c | 8 -------- grub-core/normal/completion.c | 8 +++++++- 5 files changed, 27 insertions(+), 20 deletions(-) diff --git a/grub-core/disk/efi/efidisk.c b/grub-core/disk/efi/efidisk.c index cb6c38884..9b99620d9 100644 --- a/grub-core/disk/efi/efidisk.c +++ b/grub-core/disk/efi/efidisk.c @@ -805,10 +805,11 @@ grub_efidisk_get_device_name (grub_efi_handle_t *handle) return 0; } - device_name = grub_xasprintf ("%s,%s%d", parent->name, - tpart->partmap->name, - tpart->number + 1); - grub_free (partition_name); + { + char *partition_name = grub_partition_get_name (tpart); + device_name = grub_xasprintf ("%s,%s", parent->name, partition_name); + grub_free (partition_name); + } grub_disk_close (parent); return device_name; diff --git a/grub-core/kern/device.c b/grub-core/kern/device.c index 278ce9d72..6a004cbfb 100644 --- a/grub-core/kern/device.c +++ b/grub-core/kern/device.c @@ -136,7 +136,7 @@ grub_device_iterate (int (*hook) (const char *name)) int iterate_partition (grub_disk_t disk, const grub_partition_t partition) { struct part_ent *p; - + char *part_name; p = grub_malloc (sizeof (*p)); if (!p) @@ -144,8 +144,14 @@ grub_device_iterate (int (*hook) (const char *name)) return 1; } - p->name = grub_xasprintf ("%s,%s%d", disk->name, partition->partmap->name, - partition->number + 1); + part_name = grub_partition_get_name (partition); + if (!part_name) + { + grub_free (p); + return 1; + } + p->name = grub_xasprintf ("%s,%s", disk->name, part_name); + grub_free (part_name); if (!p->name) { grub_free (p); diff --git a/grub-core/kern/disk.c b/grub-core/kern/disk.c index ccd5f200f..c9cffafc5 100644 --- a/grub-core/kern/disk.c +++ b/grub-core/kern/disk.c @@ -248,10 +248,6 @@ grub_disk_open (const char *name) if (! disk) return 0; - disk->name = grub_strdup (name); - if (! disk->name) - goto fail; - p = find_part_sep (name); if (p) { @@ -263,7 +259,13 @@ grub_disk_open (const char *name) grub_memcpy (raw, name, len); raw[len] = '\0'; + disk->name = grub_strdup (raw); } + else + disk->name = grub_strdup (name); + if (! disk->name) + goto fail; + for (dev = grub_disk_dev_list; dev; dev = dev->next) { diff --git a/grub-core/kern/partition.c b/grub-core/kern/partition.c index bd10774e8..a2f5dd722 100644 --- a/grub-core/kern/partition.c +++ b/grub-core/kern/partition.c @@ -188,13 +188,7 @@ grub_partition_iterate (struct grub_disk *disk, if (p.start != 0) { const struct grub_partition_map *partmap; - const char *name; - char *newname; dsk->partition = &p; - name = dsk->name; - dsk->name = newname = grub_xasprintf ("%s,%s%d", dsk->name, - p.partmap->name, - p.number + 1); FOR_PARTITION_MAPS(partmap) { grub_err_t err; @@ -204,8 +198,6 @@ grub_partition_iterate (struct grub_disk *disk, if (ret) break; } - grub_free (newname); - dsk->name = name; } dsk->partition = p.parent; return ret; diff --git a/grub-core/normal/completion.c b/grub-core/normal/completion.c index 6b5a5b7bb..9098dc6de 100644 --- a/grub-core/normal/completion.c +++ b/grub-core/normal/completion.c @@ -102,8 +102,14 @@ iterate_partition (grub_disk_t disk, const grub_partition_t p) const char *disk_name = disk->name; char *name; int ret; + char *part_name; - name = grub_xasprintf ("%s,%s%d", disk_name, p->partmap->name, p->number + 1); + part_name = grub_partition_get_name (p); + if (! part_name) + return 1; + + name = grub_xasprintf ("%s,%s", disk_name, part_name); + grub_free (part_name); if (! name) return 1;