wok view 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 source
1 --- core/fs/iso9660/iso9660.c
2 +++ core/fs/iso9660/iso9660.c
3 @@ -132,6 +132,28 @@
5 de_name_len = de->name_len;
6 de_name = de->name;
7 +#define __ROCKRIDGE
8 +#ifdef __ROCKRIDGE
9 + {
10 + char *name = NULL, *end;
11 + int n = (offset - de_len + de->name_len + 34) & -2;
12 + int len = data[n + 2];
13 + do {
14 + if (* (short *) (data + n) == 0x4D4E) { // NM
15 + name = data + n + 5;
16 + end = data + n + len;
17 + }
18 + n += len;
19 + } while (n + 2 < offset);
20 + if (name) {
21 + *end = 0;
22 + if (!strcmp(name, dname)) {
23 + dprintf("Found rockridge.\n");
24 + return de;
25 + }
26 + }
27 + }
28 +#endif
29 if (iso_compare_name(de_name, de_name_len, dname)) {
30 dprintf("Found.\n");
31 return de;
32 @@ -211,6 +233,24 @@
33 data = NULL;
34 continue;
35 }
36 +#ifdef __ROCKRIDGE2
37 + {
38 + char *name = NULL;
39 + int n = (offset + de->name_len + 34) & -2;
40 + int len = data[n + 2], delen;
41 + do {
42 + if (* (short *) (data + n) == 0x4D4E) { // NM
43 + name = data + n + 5;
44 + delen = len - 5;
45 + }
46 + n += len;
47 + } while (n + 2 < offset + de->length);
48 + if (name) {
49 + de->name_len = delen;
50 + strcpy(de->name, name, delen);
51 + }
52 + }
53 +#endif
54 break;
55 }