mirror of
https://github.com/wnayes/macutils.git
synced 2024-12-22 01:30:15 +00:00
94 lines
2.4 KiB
C
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
|
|
|