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