plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

iso9660.h (2713B)


      1 #define	VOLDESC	16	/* sector number */
      2 
      3 /*
      4  * L means little-endian, M means big-endian, and LM means little-endian
      5  * then again big-endian.
      6  */
      7 typedef uchar		Byte2L[2];
      8 typedef uchar		Byte2M[2];
      9 typedef uchar		Byte4LM[4];
     10 typedef uchar		Byte4L[4];
     11 typedef uchar		Byte4M[4];
     12 typedef uchar		Byte8LM[8];
     13 typedef union Drec	Drec;
     14 typedef union Voldesc	Voldesc;
     15 
     16 enum
     17 {
     18 	Boot		= 0,
     19 	Primary		= 1,
     20 	Supplementary	= 2,
     21 	Partition	= 3,
     22 	Terminator	= 255
     23 };
     24 
     25 union	Voldesc
     26 {			/* volume descriptor */
     27 	uchar	byte[Sectorsize];
     28 	union {			/* for CD001, the ECMA standard */
     29 		struct
     30 		{
     31 			uchar	type;
     32 			uchar	stdid[5];
     33 			uchar	version;
     34 			uchar	unused;
     35 			uchar	sysid[32];
     36 			uchar	bootid[32];
     37 			uchar	data[1977];
     38 		} boot;
     39 		struct
     40 		{
     41 			uchar	type;
     42 			uchar	stdid[5];
     43 			uchar	version;
     44 			uchar	flags;
     45 			uchar	sysid[32];
     46 			uchar	volid[32];
     47 			Byte8LM	partloc;
     48 			Byte8LM	size;
     49 			uchar	escapes[32];
     50 			Byte4LM	vsetsize;
     51 			Byte4LM	vseqno;
     52 			Byte4LM	blksize;
     53 			Byte8LM	ptabsize;
     54 			Byte4L	lptable;
     55 			Byte4L	optlptable;
     56 			Byte4M	mptable;
     57 			Byte4M	optmptable;
     58 			uchar	rootdir[34];
     59 			uchar	volsetid[128];
     60 			uchar	pubid[128];
     61 			uchar	prepid[128];
     62 			uchar	appid[128];
     63 			uchar	copyright[37];
     64 			uchar	abstract[37];
     65 			uchar	bibliography[37];
     66 			uchar	cdate[17];
     67 			uchar	mdate[17];
     68 			uchar	expdate[17];
     69 			uchar	effdate[17];
     70 			uchar	fsversion;
     71 			uchar	unused3[1];
     72 			uchar	appuse[512];
     73 			uchar	unused4[653];
     74 		} desc;
     75 	} z;
     76 	union
     77 	{			/* for CDROM, the `High Sierra' standard */
     78 		struct
     79 		{
     80 			Byte8LM	number;
     81 			uchar	type;
     82 			uchar	stdid[5];
     83 			uchar	version;
     84 			uchar	flags;
     85 			uchar	sysid[32];
     86 			uchar	volid[32];
     87 			Byte8LM	partloc;
     88 			Byte8LM	size;
     89 			uchar	escapes[32];
     90 			Byte4LM	vsetsize;
     91 			Byte4LM	vseqno;
     92 			Byte4LM	blksize;
     93 			uchar	quux[40];
     94 			uchar	rootdir[34];
     95 			uchar	volsetid[128];
     96 			uchar	pubid[128];
     97 			uchar	prepid[128];
     98 			uchar	appid[128];
     99 			uchar	copyright[32];
    100 			uchar	abstract[32];
    101 			uchar	cdate[16];
    102 			uchar	mdate[16];
    103 			uchar	expdate[16];
    104 			uchar	effdate[16];
    105 			uchar	fsversion;
    106 		} desc;
    107 	} r;
    108 };
    109 
    110 union	Drec
    111 {
    112 	struct
    113 	{
    114 		uchar	reclen;
    115 		uchar	attrlen;
    116 		Byte8LM	addr;
    117 		Byte8LM	size;
    118 		uchar	date[6];
    119 		uchar	tzone;		/* flags in high sierra */
    120 		uchar	flags;		/* ? in high sierra */
    121 		uchar	unitsize;	/* ? in high sierra */
    122 		uchar	gapsize;	/* ? in high sierra */
    123 		Byte4LM	vseqno;		/* ? in high sierra */
    124 		uchar	namelen;
    125 		uchar	name[1];
    126 	} z;
    127 	struct
    128 	{
    129 		uchar	pad[24];
    130 		uchar	flags;
    131 	} r;
    132 };
    133 
    134 struct	Isofile
    135 {
    136 	short	fmt;		/* 'z' if iso, 'r' if high sierra */
    137 	short	blksize;
    138 	long	offset;		/* true offset when reading directory */
    139 	long odelta;	/* true size of directory just read */
    140 	long	doffset;	/* plan9 offset when reading directory */
    141 	Drec	d;
    142 };