From 818e094a040e00beab7ea410294fd07a641b6281 Mon Sep 17 00:00:00 2001 From: fzielcke Date: Fri, 7 Aug 2009 13:37:52 +0000 Subject: [PATCH] 2009-08-07 Felix Zielcke * fs/uuid.c (grub_jfs_superblock): New fields unused2 and uuid. (grub_jfs_uuid): New function. (grub_jfs_fs): Set uuid field to grub_jfs_uuid. --- ChangeLog | 6 ++++++ fs/jfs.c | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/ChangeLog b/ChangeLog index b149b540c..9475494cd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-08-07 Felix Zielcke + + * fs/uuid.c (grub_jfs_superblock): New fields unused2 and uuid. + (grub_jfs_uuid): New function. + (grub_jfs_fs): Set uuid field to grub_jfs_uuid. + 2009-08-07 Felix Zielcke * util/grub-mkconfig_lib.in (font_path): Move the functionality diff --git a/fs/jfs.c b/fs/jfs.c index ae7486a2f..7b361c065 100644 --- a/fs/jfs.c +++ b/fs/jfs.c @@ -51,6 +51,8 @@ struct grub_jfs_sblock grub_uint8_t unused[71]; grub_uint8_t volname[11]; + grub_uint8_t unused2[32]; + grub_uint8_t uuid[16]; }; struct grub_jfs_extent @@ -832,6 +834,38 @@ grub_jfs_close (grub_file_t file) return GRUB_ERR_NONE; } +static grub_err_t +grub_jfs_uuid (grub_device_t device, char **uuid) +{ + struct grub_jfs_data *data; + grub_disk_t disk = device->disk; + + grub_dl_ref (my_mod); + + data = grub_jfs_mount (disk); + if (data) + { + *uuid = grub_malloc (40 + sizeof ('\0')); + + grub_sprintf (*uuid, "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", + data->sblock.uuid[0], data->sblock.uuid[1], + data->sblock.uuid[2], data->sblock.uuid[3], + data->sblock.uuid[4], data->sblock.uuid[5], + data->sblock.uuid[6], data->sblock.uuid[7], + data->sblock.uuid[8], data->sblock.uuid[9], + data->sblock.uuid[10], data->sblock.uuid[11], + data->sblock.uuid[12], data->sblock.uuid[13], + data->sblock.uuid[14], data->sblock.uuid[15]); + } + else + *uuid = NULL; + + grub_dl_unref (my_mod); + + grub_free (data); + + return grub_errno; +} static grub_err_t grub_jfs_label (grub_device_t device, char **label) @@ -856,6 +890,7 @@ static struct grub_fs grub_jfs_fs = .read = grub_jfs_read, .close = grub_jfs_close, .label = grub_jfs_label, + .uuid = grub_jfs_uuid, .next = 0 };