142 lines
2.6 KiB
C
142 lines
2.6 KiB
C
#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
|
|
{
|
|
Boot = 0,
|
|
Primary = 1,
|
|
Supplementary = 2,
|
|
Partition = 3,
|
|
Terminator = 255
|
|
};
|
|
|
|
union Voldesc
|
|
{ /* volume descriptor */
|
|
uchar byte[Sectorsize];
|
|
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];
|
|
} z;
|
|
struct
|
|
{
|
|
uchar pad[24];
|
|
uchar flags;
|
|
} r;
|
|
};
|
|
|
|
struct Isofile
|
|
{
|
|
short fmt; /* 'z' if iso, 'r' if high sierra */
|
|
short blksize;
|
|
long offset; /* true offset when reading directory */
|
|
long odelta; /* true size of directory just read */
|
|
long doffset; /* plan9 offset when reading directory */
|
|
Drec d;
|
|
};
|