wok-6.x diff syslinux/stuff/extra/iso9660.u @ rev 13747
syslinux: add MENU STARTIFNOARG
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Mon Dec 31 11:41:25 2012 +0100 (2012-12-31) |
parents | |
children | 12326fc2d995 |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/syslinux/stuff/extra/iso9660.u Mon Dec 31 11:41:25 2012 +0100 1.3 @@ -0,0 +1,56 @@ 1.4 +--- core/fs/iso9660/iso9660.c 1.5 ++++ core/fs/iso9660/iso9660.c 1.6 +@@ -132,6 +132,28 @@ 1.7 + 1.8 + de_name_len = de->name_len; 1.9 + de_name = de->name; 1.10 ++#define __ROCKRIDGE 1.11 ++#ifdef __ROCKRIDGE 1.12 ++ { 1.13 ++ char *name = NULL, *end; 1.14 ++ int n = (offset - de_len + de->name_len + 34) & -2; 1.15 ++ int len = data[n + 2]; 1.16 ++ do { 1.17 ++ if (* (short *) (data + n) == 0x4D4E) { // NM 1.18 ++ name = data + n + 5; 1.19 ++ end = data + n + len; 1.20 ++ } 1.21 ++ n += len; 1.22 ++ } while (n + 2 < offset); 1.23 ++ if (name) { 1.24 ++ *end = 0; 1.25 ++ if (!strcmp(name, dname)) { 1.26 ++ dprintf("Found rockridge.\n"); 1.27 ++ return de; 1.28 ++ } 1.29 ++ } 1.30 ++ } 1.31 ++#endif 1.32 + if (iso_compare_name(de_name, de_name_len, dname)) { 1.33 + dprintf("Found.\n"); 1.34 + return de; 1.35 +@@ -211,6 +233,24 @@ 1.36 + data = NULL; 1.37 + continue; 1.38 + } 1.39 ++#ifdef __ROCKRIDGE2 1.40 ++ { 1.41 ++ char *name = NULL; 1.42 ++ int n = (offset + de->name_len + 34) & -2; 1.43 ++ int len = data[n + 2], delen; 1.44 ++ do { 1.45 ++ if (* (short *) (data + n) == 0x4D4E) { // NM 1.46 ++ name = data + n + 5; 1.47 ++ delen = len - 5; 1.48 ++ } 1.49 ++ n += len; 1.50 ++ } while (n + 2 < offset + de->length); 1.51 ++ if (name) { 1.52 ++ de->name_len = delen; 1.53 ++ strcpy(de->name, name, delen); 1.54 ++ } 1.55 ++ } 1.56 ++#endif 1.57 + break; 1.58 + } 1.59 +