116 lines · 3.1 KB · C
RawDownload
/*  * This file is part of the UCB release of Plan 9. It is subject to the license * terms in the LICENSE file found in the top-level directory of this * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No * part of the UCB release of Plan 9, including this file, may be copied, * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ typedef struct DirEntry DirEntry;typedef struct MetaBlock MetaBlock;typedef struct MetaEntry MetaEntry; enum {	MetaMagic = 0x5656fc7a,	MetaHeaderSize = 12,	MetaIndexSize = 4,	IndexEntrySize = 8,	DirMagic = 0x1c4d9072,}; /* * 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 */}; /* optional directory entry fields */enum {	DePlan9 = 1,	/* not valid in version >= 9 */	DeNT,		/* not valid in version >= 9 */	DeQidSpace,	DeGen,		/* not valid in version >= 9 */}; struct DirEntry {	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 */}; struct MetaEntry {	uchar *p;	ushort size;}; struct MetaBlock {	int maxsize;		/* size of block */	int size;		/* size used */	int free;		/* free space within used size */	int maxindex;		/* entries allocated for table */	int nindex;		/* amount of table used */	int botch;		/* compensate for my stupidity */	uchar *buf;}; void	deCleanup(DirEntry*);void	deCopy(DirEntry*, DirEntry*);int	deSize(DirEntry*);void	dePack(DirEntry*, MetaEntry*);int	deUnpack(DirEntry*, MetaEntry*); void	mbInit(MetaBlock*, uchar*, int, int);int	mbUnpack(MetaBlock*, uchar*, int);void	mbInsert(MetaBlock*, int, MetaEntry*);void	mbDelete(MetaBlock*, int);void	mbPack(MetaBlock*);uchar	*mbAlloc(MetaBlock*, int);int	mbResize(MetaBlock*, MetaEntry*, int);int	mbSearch(MetaBlock*, char*, int*, MetaEntry*); void	meUnpack(MetaEntry*, MetaBlock*, int);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t