components/cdrtools/patches/write.c.patch
author Phi Tran <Phi.N.Tran@Oracle.COM>
Wed, 05 Dec 2012 16:42:34 -0800
changeset 1072 75ddf7807870
parent 356 cc77dce0ea27
permissions -rw-r--r--
15823617 SUNBT7205379 fix mkisofs bug related to files larger then 4 GB

# 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);