2008-07-01 Pavel Roskin <proski@gnu.org>
* fs/fat.c: Fix UUID calculation on big-endian systems. We write uuid as a 32-bit value in CPU byte order, so declare and use it as such.
This commit is contained in:
parent
0e9e51ec4f
commit
f341f6692c
2 changed files with 9 additions and 4 deletions
|
@ -1,5 +1,9 @@
|
||||||
2008-07-01 Pavel Roskin <proski@gnu.org>
|
2008-07-01 Pavel Roskin <proski@gnu.org>
|
||||||
|
|
||||||
|
* fs/fat.c: Fix UUID calculation on big-endian systems. We
|
||||||
|
write uuid as a 32-bit value in CPU byte order, so declare and
|
||||||
|
use it as such.
|
||||||
|
|
||||||
* disk/raid.c: Cast grub_dprintf() arguments to unsigned long
|
* disk/raid.c: Cast grub_dprintf() arguments to unsigned long
|
||||||
long if the format specifier expects it.
|
long if the format specifier expects it.
|
||||||
* partmap/gpt.c (gpt_partition_map_iterate): Likewise.
|
* partmap/gpt.c (gpt_partition_map_iterate): Likewise.
|
||||||
|
|
9
fs/fat.c
9
fs/fat.c
|
@ -143,7 +143,7 @@ struct grub_fat_data
|
||||||
grub_uint32_t cur_cluster_num;
|
grub_uint32_t cur_cluster_num;
|
||||||
grub_uint32_t cur_cluster;
|
grub_uint32_t cur_cluster;
|
||||||
|
|
||||||
grub_uint16_t uuid[2];
|
grub_uint32_t uuid;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef GRUB_UTIL
|
#ifndef GRUB_UTIL
|
||||||
|
@ -311,9 +311,9 @@ grub_fat_mount (grub_disk_t disk)
|
||||||
|
|
||||||
/* Serial number. */
|
/* Serial number. */
|
||||||
if (bpb.sectors_per_fat_16)
|
if (bpb.sectors_per_fat_16)
|
||||||
*((grub_uint32_t *) &data->uuid) = grub_le_to_cpu32 (bpb.version_specific.fat12_or_fat16.num_serial);
|
data->uuid = grub_le_to_cpu32 (bpb.version_specific.fat12_or_fat16.num_serial);
|
||||||
else
|
else
|
||||||
*((grub_uint32_t *) &data->uuid) = grub_le_to_cpu32 (bpb.version_specific.fat32.num_serial);
|
data->uuid = grub_le_to_cpu32 (bpb.version_specific.fat32.num_serial);
|
||||||
|
|
||||||
/* Ignore the 3rd bit, because some BIOSes assigns 0xF0 to the media
|
/* Ignore the 3rd bit, because some BIOSes assigns 0xF0 to the media
|
||||||
descriptor, even if it is a so-called superfloppy (e.g. an USB key).
|
descriptor, even if it is a so-called superfloppy (e.g. an USB key).
|
||||||
|
@ -839,7 +839,8 @@ grub_fat_uuid (grub_device_t device, char **uuid)
|
||||||
if (data)
|
if (data)
|
||||||
{
|
{
|
||||||
*uuid = grub_malloc (sizeof ("xxxx-xxxx"));
|
*uuid = grub_malloc (sizeof ("xxxx-xxxx"));
|
||||||
grub_sprintf (*uuid, "%04x-%04x", data->uuid[1], data->uuid[0]);
|
grub_sprintf (*uuid, "%04x-%04x", (grub_uint16_t) (data->uuid >> 8),
|
||||||
|
(grub_uint16_t) data->uuid);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
*uuid = NULL;
|
*uuid = NULL;
|
||||||
|
|
Loading…
Reference in a new issue