xref: /plan9-contrib/sys/src/cmd/replica/all.h (revision 12fd1c83b21b4d1deeab2b58fe2c202d2038c714)
19a747e4fSDavid du Colombier #include <u.h>
29a747e4fSDavid du Colombier #include <libc.h>
39a747e4fSDavid du Colombier #include <bio.h>
49a747e4fSDavid du Colombier #include <disk.h>
59a747e4fSDavid du Colombier 
69a747e4fSDavid du Colombier /* avl.c */
79a747e4fSDavid du Colombier typedef struct Avl Avl;
89a747e4fSDavid du Colombier typedef struct Avltree Avltree;
99a747e4fSDavid du Colombier typedef struct Avlwalk Avlwalk;
109a747e4fSDavid du Colombier 
11*12fd1c83SDavid du Colombier #pragma incomplete Avltree
12*12fd1c83SDavid du Colombier #pragma incomplete Avlwalk
13*12fd1c83SDavid du Colombier 
149a747e4fSDavid du Colombier struct Avl
159a747e4fSDavid du Colombier {
169a747e4fSDavid du Colombier 	Avl *p;	/* parent */
179a747e4fSDavid du Colombier 	Avl *n[2];	/* children */
189a747e4fSDavid du Colombier 	int bal;	/* balance bits */
199a747e4fSDavid du Colombier };
209a747e4fSDavid du Colombier 
219a747e4fSDavid du Colombier Avltree *mkavltree(int(*cmp)(Avl*, Avl*));
229a747e4fSDavid du Colombier void insertavl(Avltree *tree, Avl *new, Avl **oldp);
239a747e4fSDavid du Colombier Avl *lookupavl(Avltree *tree, Avl *key);
249a747e4fSDavid du Colombier void deleteavl(Avltree *tree, Avl *key, Avl **oldp);
259a747e4fSDavid du Colombier Avlwalk *avlwalk(Avltree *tree);
269a747e4fSDavid du Colombier Avl *avlnext(Avlwalk *walk);
27867bfcc6SDavid du Colombier Avl	*avlprev(Avlwalk *walk);
289a747e4fSDavid du Colombier void endwalk(Avlwalk *walk);
299a747e4fSDavid du Colombier 
309a747e4fSDavid du Colombier /* db.c */
319a747e4fSDavid du Colombier typedef struct Db Db;
329a747e4fSDavid du Colombier typedef struct Entry Entry;
339a747e4fSDavid du Colombier struct Entry
349a747e4fSDavid du Colombier {
359a747e4fSDavid du Colombier 	Avl a;
369a747e4fSDavid du Colombier 	char *name;
379a747e4fSDavid du Colombier 	struct {
389a747e4fSDavid du Colombier 		char *name;
399a747e4fSDavid du Colombier 		char *uid;
409a747e4fSDavid du Colombier 		char *gid;
419a747e4fSDavid du Colombier 		ulong mtime;
429a747e4fSDavid du Colombier 		ulong mode;
439a747e4fSDavid du Colombier 		int mark;
449a747e4fSDavid du Colombier 		vlong length;
459a747e4fSDavid du Colombier 	} d;
469a747e4fSDavid du Colombier };
479a747e4fSDavid du Colombier 
489a747e4fSDavid du Colombier 
499a747e4fSDavid du Colombier typedef struct Db Db;
509a747e4fSDavid du Colombier struct Db
519a747e4fSDavid du Colombier {
529a747e4fSDavid du Colombier 	Avltree *avl;
539a747e4fSDavid du Colombier 	int fd;
549a747e4fSDavid du Colombier };
559a747e4fSDavid du Colombier Db *opendb(char*);
569a747e4fSDavid du Colombier int finddb(Db*, char*, Dir*);
579a747e4fSDavid du Colombier void removedb(Db*, char*);
589a747e4fSDavid du Colombier void insertdb(Db*, char*, Dir*);
599a747e4fSDavid du Colombier int markdb(Db*, char*, Dir*);
609a747e4fSDavid du Colombier 
619a747e4fSDavid du Colombier /* util.c */
629a747e4fSDavid du Colombier void *erealloc(void*, int);
639a747e4fSDavid du Colombier void *emalloc(int);
649a747e4fSDavid du Colombier char *estrdup(char*);
659a747e4fSDavid du Colombier char *atom(char*);
669a747e4fSDavid du Colombier char *unroot(char*, char*);
679a747e4fSDavid du Colombier 
689a747e4fSDavid du Colombier /* revproto.c */
699a747e4fSDavid du Colombier int revrdproto(char*, char*, char*, Protoenum*, Protowarn*, void*);
709a747e4fSDavid du Colombier 
71