--- a/components/cdrtools/patches/write.c.patch Wed Dec 05 08:26:23 2012 -0800
+++ b/components/cdrtools/patches/write.c.patch Wed Dec 05 16:42:34 2012 -0800
@@ -1,6 +1,36 @@
---- cdrtools-3.00/mkisofs/write.c.orig Tue Jun 28 15:31:20 2011
-+++ cdrtools-3.00/mkisofs/write.c Tue Jun 28 15:32:46 2011
-@@ -1978,6 +1978,7 @@
+# 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;
@@ -8,7 +38,7 @@
time(&begun);
-@@ -2079,7 +2080,11 @@
+@@ -2079,7 +2096,11 @@
FILL_SPACE(application_data);
memcpy(vol_desc.creation_date, iso_time, 17);