Blame


1 3d77c87e 2004-03-15 devnull typedef struct VacFs VacFs;
2 7763a61a 2003-11-23 devnull typedef struct VacDir VacDir;
3 7763a61a 2003-11-23 devnull typedef struct VacFile VacFile;
4 7763a61a 2003-11-23 devnull typedef struct VacDirEnum VacDirEnum;
5 7763a61a 2003-11-23 devnull
6 003c13aa 2008-06-15 rsc #ifndef PLAN9PORT
7 003c13aa 2008-06-15 rsc #pragma incomplete VacFile
8 003c13aa 2008-06-15 rsc #pragma incomplete VacDirEnum
9 003c13aa 2008-06-15 rsc #endif
10 003c13aa 2008-06-15 rsc
11 7763a61a 2003-11-23 devnull /*
12 7763a61a 2003-11-23 devnull * Mode bits
13 7763a61a 2003-11-23 devnull */
14 3d77c87e 2004-03-15 devnull enum
15 3d77c87e 2004-03-15 devnull {
16 fa325e9b 2020-01-10 cross ModeOtherExec = (1<<0),
17 7763a61a 2003-11-23 devnull ModeOtherWrite = (1<<1),
18 7763a61a 2003-11-23 devnull ModeOtherRead = (1<<2),
19 7763a61a 2003-11-23 devnull ModeGroupExec = (1<<3),
20 7763a61a 2003-11-23 devnull ModeGroupWrite = (1<<4),
21 7763a61a 2003-11-23 devnull ModeGroupRead = (1<<5),
22 7763a61a 2003-11-23 devnull ModeOwnerExec = (1<<6),
23 7763a61a 2003-11-23 devnull ModeOwnerWrite = (1<<7),
24 7763a61a 2003-11-23 devnull ModeOwnerRead = (1<<8),
25 7763a61a 2003-11-23 devnull ModeSticky = (1<<9),
26 7763a61a 2003-11-23 devnull ModeSetUid = (1<<10),
27 7763a61a 2003-11-23 devnull ModeSetGid = (1<<11),
28 7763a61a 2003-11-23 devnull ModeAppend = (1<<12), /* append only file */
29 7763a61a 2003-11-23 devnull ModeExclusive = (1<<13), /* lock file - plan 9 */
30 7763a61a 2003-11-23 devnull ModeLink = (1<<14), /* sym link */
31 7763a61a 2003-11-23 devnull ModeDir = (1<<15), /* duplicate of DirEntry */
32 7763a61a 2003-11-23 devnull ModeHidden = (1<<16), /* MS-DOS */
33 7763a61a 2003-11-23 devnull ModeSystem = (1<<17), /* MS-DOS */
34 7763a61a 2003-11-23 devnull ModeArchive = (1<<18), /* MS-DOS */
35 7763a61a 2003-11-23 devnull ModeTemporary = (1<<19), /* MS-DOS */
36 7763a61a 2003-11-23 devnull ModeSnapshot = (1<<20), /* read only snapshot */
37 6049f61c 2005-09-13 devnull ModeDevice = (1<<21), /* Unix device */
38 cbeb0b26 2006-04-01 devnull ModeNamedPipe = (1<<22) /* Unix named pipe */
39 7763a61a 2003-11-23 devnull };
40 7763a61a 2003-11-23 devnull
41 3d77c87e 2004-03-15 devnull enum
42 3d77c87e 2004-03-15 devnull {
43 7763a61a 2003-11-23 devnull MetaMagic = 0x5656fc79,
44 7763a61a 2003-11-23 devnull MetaHeaderSize = 12,
45 7763a61a 2003-11-23 devnull MetaIndexSize = 4,
46 7763a61a 2003-11-23 devnull IndexEntrySize = 8,
47 cbeb0b26 2006-04-01 devnull DirMagic = 0x1c4d9072
48 7763a61a 2003-11-23 devnull };
49 7763a61a 2003-11-23 devnull
50 3d77c87e 2004-03-15 devnull enum
51 3d77c87e 2004-03-15 devnull {
52 7763a61a 2003-11-23 devnull DirPlan9Entry = 1, /* not valid in version >= 9 */
53 7763a61a 2003-11-23 devnull DirNTEntry, /* not valid in version >= 9 */
54 7763a61a 2003-11-23 devnull DirQidSpaceEntry,
55 cbeb0b26 2006-04-01 devnull DirGenEntry /* not valid in version >= 9 */
56 7763a61a 2003-11-23 devnull };
57 7763a61a 2003-11-23 devnull
58 3d77c87e 2004-03-15 devnull struct VacDir
59 3d77c87e 2004-03-15 devnull {
60 7763a61a 2003-11-23 devnull char *elem; /* path element */
61 7763a61a 2003-11-23 devnull ulong entry; /* entry in directory for data */
62 7763a61a 2003-11-23 devnull ulong gen; /* generation of data entry */
63 7763a61a 2003-11-23 devnull ulong mentry; /* entry in directory for meta */
64 7763a61a 2003-11-23 devnull ulong mgen; /* generation of meta entry */
65 7763a61a 2003-11-23 devnull uvlong size; /* size of file */
66 7763a61a 2003-11-23 devnull uvlong qid; /* unique file id */
67 fa325e9b 2020-01-10 cross
68 7763a61a 2003-11-23 devnull char *uid; /* owner id */
69 7763a61a 2003-11-23 devnull char *gid; /* group id */
70 7763a61a 2003-11-23 devnull char *mid; /* last modified by */
71 7763a61a 2003-11-23 devnull ulong mtime; /* last modified time */
72 7763a61a 2003-11-23 devnull ulong mcount; /* number of modifications: can wrap! */
73 7763a61a 2003-11-23 devnull ulong ctime; /* directory entry last changed */
74 7763a61a 2003-11-23 devnull ulong atime; /* last time accessed */
75 7763a61a 2003-11-23 devnull ulong mode; /* various mode bits */
76 7763a61a 2003-11-23 devnull
77 7763a61a 2003-11-23 devnull /* plan 9 */
78 7763a61a 2003-11-23 devnull int plan9;
79 7763a61a 2003-11-23 devnull uvlong p9path;
80 7763a61a 2003-11-23 devnull ulong p9version;
81 7763a61a 2003-11-23 devnull
82 7763a61a 2003-11-23 devnull /* sub space of qid */
83 3d77c87e 2004-03-15 devnull int qidspace;
84 3d77c87e 2004-03-15 devnull uvlong qidoffset; /* qid offset */
85 3d77c87e 2004-03-15 devnull uvlong qidmax; /* qid maximum */
86 7763a61a 2003-11-23 devnull };
87 7763a61a 2003-11-23 devnull
88 3d77c87e 2004-03-15 devnull struct VacFs
89 3d77c87e 2004-03-15 devnull {
90 ecc0a1b0 2008-06-15 rsc char name[128];
91 3d77c87e 2004-03-15 devnull uchar score[VtScoreSize];
92 3d77c87e 2004-03-15 devnull VacFile *root;
93 3d77c87e 2004-03-15 devnull VtConn *z;
94 3d77c87e 2004-03-15 devnull int mode;
95 3d77c87e 2004-03-15 devnull int bsize;
96 3d77c87e 2004-03-15 devnull uvlong qid;
97 3d77c87e 2004-03-15 devnull VtCache *cache;
98 3d77c87e 2004-03-15 devnull };
99 7763a61a 2003-11-23 devnull
100 75d04888 2009-05-25 rsc VacFs *vacfsopen(VtConn *z, char *file, int mode, ulong cachemem);
101 75d04888 2009-05-25 rsc VacFs *vacfsopenscore(VtConn *z, u8int *score, int mode, ulong cachemem);
102 75d04888 2009-05-25 rsc VacFs *vacfscreate(VtConn *z, int bsize, ulong cachemem);
103 3d77c87e 2004-03-15 devnull void vacfsclose(VacFs *fs);
104 3d77c87e 2004-03-15 devnull int vacfssync(VacFs *fs);
105 3d77c87e 2004-03-15 devnull int vacfssnapshot(VacFs *fs, char *src, char *dst);
106 3d77c87e 2004-03-15 devnull int vacfsgetscore(VacFs *fs, u8int *score);
107 003c13aa 2008-06-15 rsc int vacfsgetmaxqid(VacFs*, uvlong*);
108 003c13aa 2008-06-15 rsc void vacfsjumpqid(VacFs*, uvlong);
109 3d77c87e 2004-03-15 devnull
110 a20a1468 2005-01-16 devnull VacFile *vacfsgetroot(VacFs *fs);
111 3d77c87e 2004-03-15 devnull VacFile *vacfileopen(VacFs *fs, char *path);
112 ecc0a1b0 2008-06-15 rsc VacFile *vacfilecreate(VacFile *file, char *elem, ulong perm);
113 3d77c87e 2004-03-15 devnull VacFile *vacfilewalk(VacFile *file, char *elem);
114 ecc0a1b0 2008-06-15 rsc int vacfileremove(VacFile *file);
115 3d77c87e 2004-03-15 devnull int vacfileread(VacFile *file, void *buf, int n, vlong offset);
116 3d77c87e 2004-03-15 devnull int vacfileblockscore(VacFile *file, u32int, u8int*);
117 ecc0a1b0 2008-06-15 rsc int vacfilewrite(VacFile *file, void *buf, int n, vlong offset);
118 3d77c87e 2004-03-15 devnull uvlong vacfilegetid(VacFile *file);
119 3d77c87e 2004-03-15 devnull ulong vacfilegetmcount(VacFile *file);
120 3d77c87e 2004-03-15 devnull int vacfileisdir(VacFile *file);
121 3d77c87e 2004-03-15 devnull int vacfileisroot(VacFile *file);
122 df4bcf46 2005-09-13 devnull ulong vacfilegetmode(VacFile *file);
123 3d77c87e 2004-03-15 devnull int vacfilegetsize(VacFile *file, uvlong *size);
124 3d77c87e 2004-03-15 devnull int vacfilegetdir(VacFile *file, VacDir *dir);
125 ecc0a1b0 2008-06-15 rsc int vacfilesetdir(VacFile *file, VacDir *dir);
126 3d77c87e 2004-03-15 devnull VacFile *vacfilegetparent(VacFile *file);
127 ecc0a1b0 2008-06-15 rsc int vacfileflush(VacFile*, int);
128 3d77c87e 2004-03-15 devnull VacFile *vacfileincref(VacFile*);
129 3d77c87e 2004-03-15 devnull int vacfiledecref(VacFile*);
130 ecc0a1b0 2008-06-15 rsc int vacfilesetsize(VacFile *f, uvlong size);
131 7763a61a 2003-11-23 devnull
132 ecc0a1b0 2008-06-15 rsc int vacfilegetentries(VacFile *f, VtEntry *e, VtEntry *me);
133 ecc0a1b0 2008-06-15 rsc int vacfilesetentries(VacFile *f, VtEntry *e, VtEntry *me);
134 ecc0a1b0 2008-06-15 rsc
135 3d77c87e 2004-03-15 devnull void vdcleanup(VacDir *dir);
136 3d77c87e 2004-03-15 devnull void vdcopy(VacDir *dst, VacDir *src);
137 003c13aa 2008-06-15 rsc int vacfilesetqidspace(VacFile*, u64int, u64int);
138 fa3c8da1 2008-06-15 rsc uvlong vacfilegetqidoffset(VacFile*);
139 7763a61a 2003-11-23 devnull
140 3d77c87e 2004-03-15 devnull VacDirEnum *vdeopen(VacFile*);
141 3d77c87e 2004-03-15 devnull int vderead(VacDirEnum*, VacDir *);
142 3d77c87e 2004-03-15 devnull void vdeclose(VacDirEnum*);
143 64f9764e 2008-06-14 rsc int vdeunread(VacDirEnum*);
144 ecc0a1b0 2008-06-15 rsc
145 286bb40b 2008-12-07 rsc int vacfiledsize(VacFile *f);
146 286bb40b 2008-12-07 rsc int sha1matches(VacFile *f, ulong b, uchar *buf, int n);