13e12c5d1SDavid du Colombier #define VOLDESC 16 /* sector number */ 23e12c5d1SDavid du Colombier 331919746SDavid du Colombier /* 431919746SDavid du Colombier * L means little-endian, M means big-endian, and LM means little-endian 531919746SDavid du Colombier * then again big-endian. 631919746SDavid du Colombier */ 73e12c5d1SDavid du Colombier typedef uchar Byte2L[2]; 83e12c5d1SDavid du Colombier typedef uchar Byte2M[2]; 93e12c5d1SDavid du Colombier typedef uchar Byte4LM[4]; 103e12c5d1SDavid du Colombier typedef uchar Byte4L[4]; 113e12c5d1SDavid du Colombier typedef uchar Byte4M[4]; 123e12c5d1SDavid du Colombier typedef uchar Byte8LM[8]; 133e12c5d1SDavid du Colombier typedef union Drec Drec; 143e12c5d1SDavid du Colombier typedef union Voldesc Voldesc; 153e12c5d1SDavid du Colombier 16bd389b36SDavid du Colombier enum 17bd389b36SDavid du Colombier { 18bd389b36SDavid du Colombier Boot = 0, 19bd389b36SDavid du Colombier Primary = 1, 20bd389b36SDavid du Colombier Supplementary = 2, 21bd389b36SDavid du Colombier Partition = 3, 22bd389b36SDavid du Colombier Terminator = 255 233e12c5d1SDavid du Colombier }; 243e12c5d1SDavid du Colombier 25bd389b36SDavid du Colombier union Voldesc 26bd389b36SDavid du Colombier { /* volume descriptor */ 273e12c5d1SDavid du Colombier uchar byte[Sectorsize]; 283e12c5d1SDavid du Colombier union { /* for CD001, the ECMA standard */ 29bd389b36SDavid du Colombier struct 30bd389b36SDavid du Colombier { 313e12c5d1SDavid du Colombier uchar type; 323e12c5d1SDavid du Colombier uchar stdid[5]; 333e12c5d1SDavid du Colombier uchar version; 343e12c5d1SDavid du Colombier uchar unused; 353e12c5d1SDavid du Colombier uchar sysid[32]; 363e12c5d1SDavid du Colombier uchar bootid[32]; 373e12c5d1SDavid du Colombier uchar data[1977]; 383e12c5d1SDavid du Colombier } boot; 39bd389b36SDavid du Colombier struct 40bd389b36SDavid du Colombier { 413e12c5d1SDavid du Colombier uchar type; 423e12c5d1SDavid du Colombier uchar stdid[5]; 433e12c5d1SDavid du Colombier uchar version; 443e12c5d1SDavid du Colombier uchar flags; 453e12c5d1SDavid du Colombier uchar sysid[32]; 463e12c5d1SDavid du Colombier uchar volid[32]; 473e12c5d1SDavid du Colombier Byte8LM partloc; 483e12c5d1SDavid du Colombier Byte8LM size; 493e12c5d1SDavid du Colombier uchar escapes[32]; 503e12c5d1SDavid du Colombier Byte4LM vsetsize; 513e12c5d1SDavid du Colombier Byte4LM vseqno; 523e12c5d1SDavid du Colombier Byte4LM blksize; 533e12c5d1SDavid du Colombier Byte8LM ptabsize; 543e12c5d1SDavid du Colombier Byte4L lptable; 553e12c5d1SDavid du Colombier Byte4L optlptable; 563e12c5d1SDavid du Colombier Byte4M mptable; 573e12c5d1SDavid du Colombier Byte4M optmptable; 583e12c5d1SDavid du Colombier uchar rootdir[34]; 593e12c5d1SDavid du Colombier uchar volsetid[128]; 603e12c5d1SDavid du Colombier uchar pubid[128]; 613e12c5d1SDavid du Colombier uchar prepid[128]; 623e12c5d1SDavid du Colombier uchar appid[128]; 633e12c5d1SDavid du Colombier uchar copyright[37]; 643e12c5d1SDavid du Colombier uchar abstract[37]; 653e12c5d1SDavid du Colombier uchar bibliography[37]; 663e12c5d1SDavid du Colombier uchar cdate[17]; 673e12c5d1SDavid du Colombier uchar mdate[17]; 683e12c5d1SDavid du Colombier uchar expdate[17]; 693e12c5d1SDavid du Colombier uchar effdate[17]; 703e12c5d1SDavid du Colombier uchar fsversion; 713e12c5d1SDavid du Colombier uchar unused3[1]; 723e12c5d1SDavid du Colombier uchar appuse[512]; 733e12c5d1SDavid du Colombier uchar unused4[653]; 743e12c5d1SDavid du Colombier } desc; 753e12c5d1SDavid du Colombier } z; 76bd389b36SDavid du Colombier union 77bd389b36SDavid du Colombier { /* for CDROM, the `High Sierra' standard */ 78bd389b36SDavid du Colombier struct 79bd389b36SDavid du Colombier { 803e12c5d1SDavid du Colombier Byte8LM number; 813e12c5d1SDavid du Colombier uchar type; 823e12c5d1SDavid du Colombier uchar stdid[5]; 833e12c5d1SDavid du Colombier uchar version; 843e12c5d1SDavid du Colombier uchar flags; 853e12c5d1SDavid du Colombier uchar sysid[32]; 863e12c5d1SDavid du Colombier uchar volid[32]; 873e12c5d1SDavid du Colombier Byte8LM partloc; 883e12c5d1SDavid du Colombier Byte8LM size; 893e12c5d1SDavid du Colombier uchar escapes[32]; 903e12c5d1SDavid du Colombier Byte4LM vsetsize; 913e12c5d1SDavid du Colombier Byte4LM vseqno; 923e12c5d1SDavid du Colombier Byte4LM blksize; 933e12c5d1SDavid du Colombier uchar quux[40]; 943e12c5d1SDavid du Colombier uchar rootdir[34]; 953e12c5d1SDavid du Colombier uchar volsetid[128]; 963e12c5d1SDavid du Colombier uchar pubid[128]; 973e12c5d1SDavid du Colombier uchar prepid[128]; 983e12c5d1SDavid du Colombier uchar appid[128]; 993e12c5d1SDavid du Colombier uchar copyright[32]; 1003e12c5d1SDavid du Colombier uchar abstract[32]; 1013e12c5d1SDavid du Colombier uchar cdate[16]; 1023e12c5d1SDavid du Colombier uchar mdate[16]; 1033e12c5d1SDavid du Colombier uchar expdate[16]; 1043e12c5d1SDavid du Colombier uchar effdate[16]; 1053e12c5d1SDavid du Colombier uchar fsversion; 1063e12c5d1SDavid du Colombier } desc; 1073e12c5d1SDavid du Colombier } r; 1083e12c5d1SDavid du Colombier }; 1093e12c5d1SDavid du Colombier 110bd389b36SDavid du Colombier union Drec 111bd389b36SDavid du Colombier { 112bd389b36SDavid du Colombier struct 113bd389b36SDavid du Colombier { 1143e12c5d1SDavid du Colombier uchar reclen; 1153e12c5d1SDavid du Colombier uchar attrlen; 1163e12c5d1SDavid du Colombier Byte8LM addr; 1173e12c5d1SDavid du Colombier Byte8LM size; 1183e12c5d1SDavid du Colombier uchar date[6]; 1193e12c5d1SDavid du Colombier uchar tzone; /* flags in high sierra */ 1203e12c5d1SDavid du Colombier uchar flags; /* ? in high sierra */ 1213e12c5d1SDavid du Colombier uchar unitsize; /* ? in high sierra */ 1223e12c5d1SDavid du Colombier uchar gapsize; /* ? in high sierra */ 1233e12c5d1SDavid du Colombier Byte4LM vseqno; /* ? in high sierra */ 1243e12c5d1SDavid du Colombier uchar namelen; 1253e12c5d1SDavid du Colombier uchar name[1]; 1263e12c5d1SDavid du Colombier }; 127bd389b36SDavid du Colombier struct 128bd389b36SDavid du Colombier { 1293e12c5d1SDavid du Colombier uchar r_pad[24]; 1303e12c5d1SDavid du Colombier uchar r_flags; 1313e12c5d1SDavid du Colombier }; 1323e12c5d1SDavid du Colombier }; 1333e12c5d1SDavid du Colombier 134bd389b36SDavid du Colombier struct Isofile 135bd389b36SDavid du Colombier { 1363e12c5d1SDavid du Colombier short fmt; /* 'z' if iso, 'r' if high sierra */ 1373e12c5d1SDavid du Colombier short blksize; 138*3b86f2f8SDavid du Colombier vlong offset; /* true offset when reading directory */ 1399a747e4fSDavid du Colombier long odelta; /* true size of directory just read */ 140*3b86f2f8SDavid du Colombier vlong doffset; /* plan9 offset when reading directory */ 1413e12c5d1SDavid du Colombier Drec d; 1423e12c5d1SDavid du Colombier }; 143