Hi, It seems our ISO UUID code was checking for modified date rather than created date as the source suggests. I believe this is the right thing to do (since theoretically two different images could share creation date), so my patch just renames it (and adds the real field for creation date while at it).
-- Robert Millan The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and how) you may access your data; but nobody's threatening your freedom: we still allow you to remove your data and not access it at all."
Index: fs/iso9660.c =================================================================== --- fs/iso9660.c (revision 1878) +++ fs/iso9660.c (working copy) @@ -93,8 +93,9 @@ grub_uint32_t path_table; grub_uint8_t unused5[12]; struct grub_iso9660_dir rootdir; - grub_uint8_t unused6[641]; + grub_uint8_t unused6[624]; struct grub_iso9660_date created; + struct grub_iso9660_date modified; } __attribute__ ((packed)); /* A single entry in the path table. */ @@ -840,14 +841,14 @@ data = grub_iso9660_mount (disk); if (data) { - if (! data->voldesc.created.year[0] && ! data->voldesc.created.year[1] - && ! data->voldesc.created.year[2] && ! data->voldesc.created.year[3] - && ! data->voldesc.created.month[0] && ! data->voldesc.created.month[1] - && ! data->voldesc.created.day[0] && ! data->voldesc.created.day[1] - && ! data->voldesc.created.hour[0] && ! data->voldesc.created.hour[1] - && ! data->voldesc.created.minute[0] && ! data->voldesc.created.minute[1] - && ! data->voldesc.created.second[0] && ! data->voldesc.created.second[1] - && ! data->voldesc.created.hundredth[0] && ! data->voldesc.created.hundredth[1]) + if (! data->voldesc.modified.year[0] && ! data->voldesc.modified.year[1] + && ! data->voldesc.modified.year[2] && ! data->voldesc.modified.year[3] + && ! data->voldesc.modified.month[0] && ! data->voldesc.modified.month[1] + && ! data->voldesc.modified.day[0] && ! data->voldesc.modified.day[1] + && ! data->voldesc.modified.hour[0] && ! data->voldesc.modified.hour[1] + && ! data->voldesc.modified.minute[0] && ! data->voldesc.modified.minute[1] + && ! data->voldesc.modified.second[0] && ! data->voldesc.modified.second[1] + && ! data->voldesc.modified.hundredth[0] && ! data->voldesc.modified.hundredth[1]) { grub_error (GRUB_ERR_BAD_NUMBER, "No creation date in filesystem to generate UUID."); *uuid = NULL; @@ -856,14 +857,14 @@ { *uuid = grub_malloc (sizeof ("YYYY-MM-DD-HH-mm-ss-hh")); grub_sprintf (*uuid, "%c%c%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c", - data->voldesc.created.year[0], data->voldesc.created.year[1], - data->voldesc.created.year[2], data->voldesc.created.year[3], - data->voldesc.created.month[0], data->voldesc.created.month[1], - data->voldesc.created.day[0], data->voldesc.created.day[1], - data->voldesc.created.hour[0], data->voldesc.created.hour[1], - data->voldesc.created.minute[0], data->voldesc.created.minute[1], - data->voldesc.created.second[0], data->voldesc.created.second[1], - data->voldesc.created.hundredth[0], data->voldesc.created.hundredth[1]); + data->voldesc.modified.year[0], data->voldesc.modified.year[1], + data->voldesc.modified.year[2], data->voldesc.modified.year[3], + data->voldesc.modified.month[0], data->voldesc.modified.month[1], + data->voldesc.modified.day[0], data->voldesc.modified.day[1], + data->voldesc.modified.hour[0], data->voldesc.modified.hour[1], + data->voldesc.modified.minute[0], data->voldesc.modified.minute[1], + data->voldesc.modified.second[0], data->voldesc.modified.second[1], + data->voldesc.modified.hundredth[0], data->voldesc.modified.hundredth[1]); } } else
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel