Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
#include <bio.h>
4
#include <disk.h>
5
 
6
/* avl.c */
7
typedef struct Avl Avl;
8
typedef struct Avltree Avltree;
9
typedef struct Avlwalk Avlwalk;
10
 
11
#pragma incomplete Avltree
12
#pragma incomplete Avlwalk
13
 
14
struct Avl
15
{
16
	Avl *p;	/* parent */
17
	Avl *n[2];	/* children */
18
	int bal;	/* balance bits */
19
};
20
 
21
Avltree *mkavltree(int(*cmp)(Avl*, Avl*));
22
void insertavl(Avltree *tree, Avl *new, Avl **oldp); 
23
Avl *lookupavl(Avltree *tree, Avl *key);
24
void deleteavl(Avltree *tree, Avl *key, Avl **oldp);
25
Avlwalk *avlwalk(Avltree *tree);
26
Avl *avlnext(Avlwalk *walk);
27
Avl	*avlprev(Avlwalk *walk);
28
void endwalk(Avlwalk *walk);
29
 
30
/* db.c */
31
typedef struct Db Db;
32
typedef struct Entry Entry;
33
struct Entry
34
{
35
	Avl a;
36
	char *name;
37
	struct {
38
		char *name;
39
		char *uid;
40
		char *gid;
41
		ulong mtime;
42
		ulong mode;
43
		int mark;
44
		vlong length;
45
	} d;
46
};
47
 
48
 
49
typedef struct Db Db;
50
struct Db
51
{
52
	Avltree *avl;
53
	int fd;
54
};
55
Db *opendb(char*);
56
int finddb(Db*, char*, Dir*);
57
void removedb(Db*, char*);
58
void insertdb(Db*, char*, Dir*);
59
int markdb(Db*, char*, Dir*);
60
 
61
/* util.c */
62
void *erealloc(void*, int);
63
void *emalloc(int);
64
char *estrdup(char*);
65
char *atom(char*);
66
char *unroot(char*, char*);
67
 
68
/* revproto.c */
69
int revrdproto(char*, char*, char*, Protoenum*, Protowarn*, void*);
70