1 # This patch is made from a diff of versions 3.00 and 3.01a01. |
|
2 |
|
3 --- cdrtools-3.00/mkisofs/write.c.orig 2012-11-01 01:25:32.964412979 -0700 |
|
4 +++ cdrtools-3.00/mkisofs/write.c 2012-11-01 01:25:47.946345028 -0700 |
|
5 @@ -1005,9 +1005,25 @@ |
|
6 for (i = 0, dwpnt = dw_head; i < num; i++, dwpnt = dwpnt->next) { |
|
7 s_entry = dwpnt->s_entry; |
|
8 dwpnt->extent = s_entry->starting_block = start_extent; |
|
9 - set_733((char *)s_entry->isorec.extent, start_extent); |
|
10 |
|
11 - start_extent += ISO_BLOCKS(s_entry->size); |
|
12 + if (s_entry->de_flags & MULTI_EXTENT) { |
|
13 + struct directory_entry *s_e; |
|
14 + |
|
15 + s_entry->mxroot->starting_block = start_extent; |
|
16 + set_733((char *)s_entry->mxroot->isorec.extent, |
|
17 + start_extent); |
|
18 + for (s_e = s_entry; |
|
19 + s_e && s_e->mxroot == s_entry->mxroot; |
|
20 + s_e = s_e->next) { |
|
21 + set_733((char *)s_e->isorec.extent, |
|
22 + start_extent); |
|
23 + s_entry->starting_block = start_extent; |
|
24 + start_extent += ISO_BLOCKS(s_e->size); |
|
25 + } |
|
26 + } else { |
|
27 + set_733((char *)s_entry->isorec.extent, start_extent); |
|
28 + start_extent += ISO_BLOCKS(s_entry->size); |
|
29 + } |
|
30 #ifdef DVD_VIDEO |
|
31 /* |
|
32 * Shouldn't this be done for every type of sort? Otherwise |
|
33 @@ -1978,6 +1994,7 @@ |
|
34 int i; |
|
35 int s; |
|
36 Uchar *cp; |
|
37 + extern char *modification_date; |
|
38 |
|
39 |
|
40 time(&begun); |
|
41 @@ -2079,7 +2096,11 @@ |
|
42 FILL_SPACE(application_data); |
|
43 |
|
44 memcpy(vol_desc.creation_date, iso_time, 17); |
|
45 - memcpy(vol_desc.modification_date, iso_time, 17); |
|
46 + if (modification_date == NULL) { |
|
47 + memcpy(vol_desc.modification_date, iso_time, 17); |
|
48 + } else { |
|
49 + memcpy(vol_desc.modification_date, modification_date, 17); |
|
50 + } |
|
51 memcpy(vol_desc.expiration_date, "0000000000000000", 17); |
|
52 memcpy(vol_desc.effective_date, iso_time, 17); |
|
53 |
|