start thinking about vac -- doesn't build yet
This commit is contained in:
parent
7a4ee46d25
commit
7763a61a35
22 changed files with 7959 additions and 0 deletions
126
src/cmd/vac/vac.h
Normal file
126
src/cmd/vac/vac.h
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
typedef struct VacFS VacFS;
|
||||
typedef struct VacDir VacDir;
|
||||
typedef struct VacFile VacFile;
|
||||
typedef struct VacDirEnum VacDirEnum;
|
||||
|
||||
/*
|
||||
* Mode bits
|
||||
*/
|
||||
enum {
|
||||
ModeOtherExec = (1<<0),
|
||||
ModeOtherWrite = (1<<1),
|
||||
ModeOtherRead = (1<<2),
|
||||
ModeGroupExec = (1<<3),
|
||||
ModeGroupWrite = (1<<4),
|
||||
ModeGroupRead = (1<<5),
|
||||
ModeOwnerExec = (1<<6),
|
||||
ModeOwnerWrite = (1<<7),
|
||||
ModeOwnerRead = (1<<8),
|
||||
ModeSticky = (1<<9),
|
||||
ModeSetUid = (1<<10),
|
||||
ModeSetGid = (1<<11),
|
||||
ModeAppend = (1<<12), /* append only file */
|
||||
ModeExclusive = (1<<13), /* lock file - plan 9 */
|
||||
ModeLink = (1<<14), /* sym link */
|
||||
ModeDir = (1<<15), /* duplicate of DirEntry */
|
||||
ModeHidden = (1<<16), /* MS-DOS */
|
||||
ModeSystem = (1<<17), /* MS-DOS */
|
||||
ModeArchive = (1<<18), /* MS-DOS */
|
||||
ModeTemporary = (1<<19), /* MS-DOS */
|
||||
ModeSnapshot = (1<<20), /* read only snapshot */
|
||||
};
|
||||
|
||||
enum {
|
||||
MetaMagic = 0x5656fc79,
|
||||
MetaHeaderSize = 12,
|
||||
MetaIndexSize = 4,
|
||||
IndexEntrySize = 8,
|
||||
DirMagic = 0x1c4d9072,
|
||||
};
|
||||
|
||||
enum {
|
||||
DirPlan9Entry = 1, /* not valid in version >= 9 */
|
||||
DirNTEntry, /* not valid in version >= 9 */
|
||||
DirQidSpaceEntry,
|
||||
DirGenEntry, /* not valid in version >= 9 */
|
||||
};
|
||||
|
||||
struct VacDir {
|
||||
char *elem; /* path element */
|
||||
ulong entry; /* entry in directory for data */
|
||||
ulong gen; /* generation of data entry */
|
||||
ulong mentry; /* entry in directory for meta */
|
||||
ulong mgen; /* generation of meta entry */
|
||||
uvlong size; /* size of file */
|
||||
uvlong qid; /* unique file id */
|
||||
|
||||
char *uid; /* owner id */
|
||||
char *gid; /* group id */
|
||||
char *mid; /* last modified by */
|
||||
ulong mtime; /* last modified time */
|
||||
ulong mcount; /* number of modifications: can wrap! */
|
||||
ulong ctime; /* directory entry last changed */
|
||||
ulong atime; /* last time accessed */
|
||||
ulong mode; /* various mode bits */
|
||||
|
||||
/* plan 9 */
|
||||
int plan9;
|
||||
uvlong p9path;
|
||||
ulong p9version;
|
||||
|
||||
/* sub space of qid */
|
||||
int qidSpace;
|
||||
uvlong qidOffset; /* qid offset */
|
||||
uvlong qidMax; /* qid maximum */
|
||||
};
|
||||
|
||||
VacFS *vfsOpen(VtSession *z, char *file, int readOnly, long ncache);
|
||||
VacFS *vfsCreate(VtSession *z, int bsize, long ncache);
|
||||
int vfsGetBlockSize(VacFS*);
|
||||
int vfsIsReadOnly(VacFS*);
|
||||
VacFile *vfsGetRoot(VacFS*);
|
||||
|
||||
long vfsGetCacheSize(VacFS*);
|
||||
int vfsSetCacheSize(VacFS*, long);
|
||||
int vfsSnapshot(VacFS*, char *src, char *dst);
|
||||
int vfsSync(VacFS*);
|
||||
int vfsClose(VacFS*);
|
||||
int vfsGetScore(VacFS*, uchar score[VtScoreSize]);
|
||||
|
||||
/*
|
||||
* other ideas
|
||||
*
|
||||
* VacFS *vfsSnapshot(VacFS*, char *src);
|
||||
* int vfsGraft(VacFS*, char *name, VacFS*);
|
||||
*/
|
||||
|
||||
VacFile *vfOpen(VacFS*, char *path);
|
||||
VacFile *vfCreate(VacFile*, char *elem, ulong perm, char *user);
|
||||
VacFile *vfWalk(VacFile*, char *elem);
|
||||
int vfRemove(VacFile*, char*);
|
||||
int vfRead(VacFile*, void *, int n, vlong offset);
|
||||
int vfWrite(VacFile*, void *, int n, vlong offset, char *user);
|
||||
int vfReadPacket(VacFile*, Packet**, vlong offset);
|
||||
int vfWritePacket(VacFile*, Packet*, vlong offset, char *user);
|
||||
uvlong vfGetId(VacFile*);
|
||||
ulong vfGetMcount(VacFile*);
|
||||
int vfIsDir(VacFile*);
|
||||
int vfGetBlockScore(VacFile*, ulong bn, uchar score[VtScoreSize]);
|
||||
int vfGetSize(VacFile*, uvlong *size);
|
||||
int vfGetDir(VacFile*, VacDir*);
|
||||
int vfSetDir(VacFile*, VacDir*);
|
||||
int vfGetVtEntry(VacFile*, VtEntry*);
|
||||
VacFile *vfGetParent(VacFile*);
|
||||
int vfSync(VacFile*);
|
||||
VacFile *vfIncRef(VacFile*);
|
||||
void vfDecRef(VacFile*);
|
||||
VacDirEnum *vfDirEnum(VacFile*);
|
||||
int vfIsRoot(VacFile *vf);
|
||||
|
||||
void vdCleanup(VacDir *dir);
|
||||
void vdCopy(VacDir *dst, VacDir *src);
|
||||
|
||||
VacDirEnum *vdeOpen(VacFS*, char *path);
|
||||
int vdeRead(VacDirEnum*, VacDir *, int n);
|
||||
void vdeFree(VacDirEnum*);
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue