xref: /plan9-contrib/sys/src/cmd/9660srv/iso9660.h (revision 3b86f2f88bade1f00206c7aa750b7add255f5724)
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