]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/paqfs/paqfs.h
upas/fs: remove useless loop in rf822()
[plan9front.git] / sys / src / cmd / paqfs / paqfs.h
1 typedef struct PaqHeader PaqHeader;
2 typedef struct PaqBlock PaqBlock;
3 typedef struct PaqTrailer PaqTrailer;
4 typedef struct PaqDir PaqDir;
5
6 enum {
7         HeaderMagic = 0x529ab12b,
8         HeaderSize = 44,
9         BigHeaderMagic = 0x25a9,
10         BlockMagic = 0x198a1cbf,
11         BlockSize = 12,
12         BigBlockMagic = 0x91a8,
13         TrailerMagic = 0x6b46e688,
14         TrailerSize = 28,
15         Version = 1,
16         MaxBlockSize = 512*1024,
17         MinBlockSize = 512,
18         MinDirSize = 28,
19 };
20
21 /* block types */
22 enum {
23         DirBlock,
24         DataBlock,
25         PointerBlock,
26 };
27
28 /* encodings */
29 enum {
30         NoEnc,
31         DeflateEnc,
32 };
33
34 struct PaqHeader
35 {
36         ulong   magic;
37         ushort  version;
38         ulong   blocksize;
39         ulong   time;
40         char    label[32];
41 };
42
43 struct PaqBlock
44 {
45         ulong   magic;
46         ulong   size;           /* data size - always <= blocksize */
47         uchar   type;
48         uchar   encoding;
49         ulong   adler32;        /* applied to unencoded data */
50 };
51
52 struct PaqTrailer
53 {
54         ulong   magic;
55         ulong   root;
56         uchar   sha1[20];
57 };
58
59 struct PaqDir
60 {
61         ulong   qid;
62         ulong   mode;
63         ulong   mtime;
64         ulong   length;
65         ulong   offset;         /* to pointer block */
66         char    *name;
67         char    *uid;
68         char    *gid;
69 };