123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- /*
- * ISO 9660 CD format
- */
- #define VOLDESC 16 /* sector number */
- /*
- * L means little-endian, M means big-endian, and LM means little-endian
- * then again big-endian.
- */
- typedef uchar Byte2L[2];
- typedef uchar Byte2M[2];
- typedef uchar Byte4LM[4];
- typedef uchar Byte4L[4];
- typedef uchar Byte4M[4];
- typedef uchar Byte8LM[8];
- typedef union Drec Drec;
- typedef union Voldesc Voldesc;
- enum {
- BootIso = 0,
- PrimaryIso = 1,
- SupplementaryIso = 2,
- PartitionIso = 3,
- TerminatorIso = 255,
- };
- enum {
- Cdsec = 2048,
- Maxname = 256,
- };
- union Voldesc { /* volume descriptor */
- uchar byte[Cdsec];
- union { /* for CD001, the ECMA standard */
- struct {
- uchar type;
- uchar stdid[5];
- uchar version;
- uchar unused;
- uchar sysid[32];
- uchar bootid[32];
- uchar data[1977];
- } boot;
- struct {
- uchar type;
- uchar stdid[5];
- uchar version;
- uchar flags;
- uchar sysid[32];
- uchar volid[32];
- Byte8LM partloc;
- Byte8LM size;
- uchar escapes[32];
- Byte4LM vsetsize;
- Byte4LM vseqno;
- Byte4LM blksize;
- Byte8LM ptabsize;
- Byte4L lptable;
- Byte4L optlptable;
- Byte4M mptable;
- Byte4M optmptable;
- uchar rootdir[34];
- uchar volsetid[128];
- uchar pubid[128];
- uchar prepid[128];
- uchar appid[128];
- uchar copyright[37];
- uchar abstract[37];
- uchar bibliography[37];
- uchar cdate[17];
- uchar mdate[17];
- uchar expdate[17];
- uchar effdate[17];
- uchar fsversion;
- uchar unused3[1];
- uchar appuse[512];
- uchar unused4[653];
- } desc;
- } z;
- union { /* for CDROM, the `High Sierra' standard */
- struct {
- Byte8LM number;
- uchar type;
- uchar stdid[5];
- uchar version;
- uchar flags;
- uchar sysid[32];
- uchar volid[32];
- Byte8LM partloc;
- Byte8LM size;
- uchar escapes[32];
- Byte4LM vsetsize;
- Byte4LM vseqno;
- Byte4LM blksize;
- uchar quux[40];
- uchar rootdir[34];
- uchar volsetid[128];
- uchar pubid[128];
- uchar prepid[128];
- uchar appid[128];
- uchar copyright[32];
- uchar abstract[32];
- uchar cdate[16];
- uchar mdate[16];
- uchar expdate[16];
- uchar effdate[16];
- uchar fsversion;
- } desc;
- } r;
- };
- union Drec {
- struct {
- uchar reclen;
- uchar attrlen;
- Byte8LM addr;
- Byte8LM size;
- uchar date[6];
- uchar tzone; /* flags in high sierra */
- uchar flags; /* ? in high sierra */
- uchar unitsize; /* ? in high sierra */
- uchar gapsize; /* ? in high sierra */
- Byte4LM vseqno; /* ? in high sierra */
- uchar namelen;
- uchar name[1];
- };
- struct {
- uchar r_pad[24];
- uchar r_flags;
- };
- };
- struct Isofile {
- short fmt; /* 'z' if iso, 'r' if high sierra */
- short blksize;
- vlong offset; /* true offset when reading directory */
- long odelta; /* true size of directory just read */
- vlong doffset; /* plan9 offset when reading directory */
- Drec d;
- };
|