# This patch is made from a diff of versions 3.00 and 3.01a01.
--- cdrtools-3.00/mkisofs/write.c.orig 2012-11-01 01:25:32.964412979 -0700
+++ cdrtools-3.00/mkisofs/write.c 2012-11-01 01:25:47.946345028 -0700
@@ -1005,9 +1005,25 @@
for (i = 0, dwpnt = dw_head; i < num; i++, dwpnt = dwpnt->next) {
s_entry = dwpnt->s_entry;
dwpnt->extent = s_entry->starting_block = start_extent;
- set_733((char *)s_entry->isorec.extent, start_extent);
- start_extent += ISO_BLOCKS(s_entry->size);
+ if (s_entry->de_flags & MULTI_EXTENT) {
+ struct directory_entry *s_e;
+
+ s_entry->mxroot->starting_block = start_extent;
+ set_733((char *)s_entry->mxroot->isorec.extent,
+ start_extent);
+ for (s_e = s_entry;
+ s_e && s_e->mxroot == s_entry->mxroot;
+ s_e = s_e->next) {
+ set_733((char *)s_e->isorec.extent,
+ start_extent);
+ s_entry->starting_block = start_extent;
+ start_extent += ISO_BLOCKS(s_e->size);
+ }
+ } else {
+ set_733((char *)s_entry->isorec.extent, start_extent);
+ start_extent += ISO_BLOCKS(s_entry->size);
+ }
#ifdef DVD_VIDEO
/*
* Shouldn't this be done for every type of sort? Otherwise
@@ -1978,6 +1994,7 @@
int i;
int s;
Uchar *cp;
+ extern char *modification_date;
time(&begun);
@@ -2079,7 +2096,11 @@
FILL_SPACE(application_data);
memcpy(vol_desc.creation_date, iso_time, 17);
- memcpy(vol_desc.modification_date, iso_time, 17);
+ if (modification_date == NULL) {
+ memcpy(vol_desc.modification_date, iso_time, 17);
+ } else {
+ memcpy(vol_desc.modification_date, modification_date, 17);
+ }
memcpy(vol_desc.expiration_date, "0000000000000000", 17);
memcpy(vol_desc.effective_date, iso_time, 17);