devices = make_devices ();
FOR_CHILDREN (c, devices)
{
- grub_efi_hard_drive_device_path_t hd;
+ grub_efi_hard_drive_device_path_t *hd;
- grub_memcpy (&hd, c->last_device_path, sizeof (hd));
+ hd = (grub_efi_hard_drive_device_path_t *) c->last_device_path;
if ((GRUB_EFI_DEVICE_PATH_TYPE (c->last_device_path)
== GRUB_EFI_MEDIA_DEVICE_PATH_TYPE)
&& (GRUB_EFI_DEVICE_PATH_SUBTYPE (c->last_device_path)
== GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE)
&& (grub_partition_get_start (disk->partition)
- == (hd.partition_start << (disk->log_sector_size
- - GRUB_DISK_SECTOR_BITS)))
+ == (hd->partition_start << (disk->log_sector_size
+ - GRUB_DISK_SECTOR_BITS)))
&& (grub_partition_get_len (disk->partition)
- == (hd.partition_size << (disk->log_sector_size
- - GRUB_DISK_SECTOR_BITS))))
+ == (hd->partition_size << (disk->log_sector_size
+ - GRUB_DISK_SECTOR_BITS))))
{
handle = c->handle;
break;
struct grub_efidisk_get_device_name_ctx
{
char *partition_name;
- grub_efi_hard_drive_device_path_t hd;
+ grub_efi_hard_drive_device_path_t *hd;
};
/* Helper for grub_efidisk_get_device_name.
struct grub_efidisk_get_device_name_ctx *ctx = data;
if (grub_partition_get_start (part)
- == (ctx->hd.partition_start << (disk->log_sector_size
- - GRUB_DISK_SECTOR_BITS))
+ == (ctx->hd->partition_start << (disk->log_sector_size
+ - GRUB_DISK_SECTOR_BITS))
&& grub_partition_get_len (part)
- == (ctx->hd.partition_size << (disk->log_sector_size
- - GRUB_DISK_SECTOR_BITS)))
+ == (ctx->hd->partition_size << (disk->log_sector_size
+ - GRUB_DISK_SECTOR_BITS)))
{
ctx->partition_name = grub_partition_get_name (part);
return 1;
/* Find a partition which matches the hard drive device path. */
ctx.partition_name = NULL;
- grub_memcpy (&ctx.hd, ldp, sizeof (ctx.hd));
- if (ctx.hd.partition_start == 0
- && (ctx.hd.partition_size << (parent->log_sector_size
- - GRUB_DISK_SECTOR_BITS))
+ ctx.hd = (grub_efi_hard_drive_device_path_t *) ldp;
+ if (ctx.hd->partition_start == 0
+ && (ctx.hd->partition_size << (parent->log_sector_size
+ - GRUB_DISK_SECTOR_BITS))
== grub_disk_get_size (parent))
{
dev_name = grub_strdup (parent->name);
grub_efi_uint32_t partition_number;
grub_efi_lba_t partition_start;
grub_efi_lba_t partition_size;
- grub_efi_uint8_t partition_signature[8];
- grub_efi_uint8_t mbr_type;
+ grub_efi_uint8_t partition_signature[16];
+ grub_efi_uint8_t partmap_type;
grub_efi_uint8_t signature_type;
} __attribute__ ((packed));
typedef struct grub_efi_hard_drive_device_path grub_efi_hard_drive_device_path_t;