123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- typedef struct VacFS VacFS;
- #pragma incomplete VacFS
- typedef struct VacDir VacDir;
- typedef struct VacFile VacFile;
- #pragma incomplete VacFile
- typedef struct VacDirEnum VacDirEnum;
- #pragma incomplete 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*);
|