123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- typedef struct PaqHeader PaqHeader;
- typedef struct PaqBlock PaqBlock;
- typedef struct PaqTrailer PaqTrailer;
- typedef struct PaqDir PaqDir;
- enum {
- HeaderMagic = 0x529ab12b,
- HeaderSize = 44,
- BigHeaderMagic = 0x25a9,
- BlockMagic = 0x198a1cbf,
- BlockSize = 12,
- BigBlockMagic = 0x91a8,
- TrailerMagic = 0x6b46e688,
- TrailerSize = 28,
- Version = 1,
- MaxBlockSize = 512*1024,
- MinBlockSize = 512,
- MinDirSize = 28,
- };
- /* block types */
- enum {
- DirBlock,
- DataBlock,
- PointerBlock,
- };
- /* encodings */
- enum {
- NoEnc,
- DeflateEnc,
- };
- struct PaqHeader
- {
- ulong magic;
- ushort version;
- ulong blocksize;
- ulong time;
- char label[32];
- };
- struct PaqBlock
- {
- ulong magic;
- ulong size; /* data size - always <= blocksize */
- uchar type;
- uchar encoding;
- ulong adler32; /* applied to unencoded data */
- };
- struct PaqTrailer
- {
- ulong magic;
- ulong root;
- uchar sha1[20];
- };
- struct PaqDir
- {
- ulong qid;
- ulong mode;
- ulong mtime;
- ulong length;
- ulong offset; /* to pointer block */
- char *name;
- char *uid;
- char *gid;
- };
|