macutils/macunpack/cpt.h
2018-03-22 20:02:26 -05:00

94 lines
2.4 KiB
C

#define C_SIGNATURE 0
#define C_VOLUME 1
#define C_XMAGIC 2
#define C_IOFFSET 4
#define CPTHDRSIZE 8
#define C_HDRCRC 0
#define C_ENTRIES 4
#define C_COMMENT 6
#define CPTHDR2SIZE 7
#define CHDRSIZE (CPTHDRSIZE+CPTHDR2SIZE)
#define F_FNAME 0
#define F_FOLDER 32
#define F_FOLDERSIZE 33
#define F_VOLUME 35
#define F_FILEPOS 36
#define F_FTYPE 40
#define F_CREATOR 44
#define F_CREATIONDATE 48
#define F_MODDATE 52
#define F_FNDRFLAGS 56
#define F_FILECRC 58
#define F_CPTFLAG 62
#define F_RSRCLENGTH 64
#define F_DATALENGTH 68
#define F_COMPRLENGTH 72
#define F_COMPDLENGTH 76
#define FILEHDRSIZE 80
typedef long OSType;
typedef struct cptHdr { /* 8 bytes */
unsigned char signature; /* = 1 -- for verification */
unsigned char volume; /* for multi-file archives */
unsigned short xmagic; /* verification multi-file consistency*/
unsigned long offset; /* index offset */
/* The following are really in header2 at offset */
unsigned long hdrcrc; /* header crc */
unsigned short entries; /* number of index entries */
unsigned char commentsize; /* number of bytes comment that follow*/
} cptHdr;
typedef struct fileHdr { /* 78 bytes */
unsigned char fName[32]; /* a STR32 */
unsigned char folder; /* set to 1 if a folder */
unsigned short foldersize; /* number of entries in folder */
unsigned char volume; /* for multi-file archives */
unsigned long filepos; /* position of data in file */
OSType fType; /* file type */
OSType fCreator; /* er... */
unsigned long creationDate;
unsigned long modDate; /* !restored-compat w/backup prgms */
unsigned short FndrFlags; /* copy of Finder flags. For our
purposes, we can clear:
busy,onDesk */
unsigned long fileCRC; /* crc on file */
unsigned short cptFlag; /* cpt flags */
unsigned long rsrcLength; /* decompressed lengths */
unsigned long dataLength;
unsigned long compRLength; /* compressed lengths */
unsigned long compDLength;
} fileHdr;
/* file format is:
cptArchiveHdr
file1data
file1RsrcFork
file1DataFork
file2data
file2RsrcFork
file2DataFork
.
.
.
fileNdata
fileNRsrcFork
fileNDataFork
cptIndex
*/
/* cpt flags */
#define encryp 1 /* file is encrypted */
#define crsrc 2 /* resource fork is compressed */
#define cdata 4 /* data fork is compressed */
/* ???? 8 /* unknown */
#define CIRCSIZE 8192