xref: /inferno-os/liblogfs/path.c (revision b43c1ca5eb5fc65b93ae935a568432712797b049)
1 #include "lib9.h"
2 #include "logfs.h"
3 #include "local.h"
4 
5 enum {
6 	PATHMOD = 127
7 };
8 
9 static int
10 compare(Path *f, ulong path)
11 {
12 	return f->path == path;
13 }
14 
15 static int
16 allocsize(void *key)
17 {
18 	USED(key);
19 	return sizeof(Path);
20 }
21 
22 char *
23 logfspathmapnew(PathMap **pathmapp)
24 {
25 	return logfsmapnew(PATHMOD, logfshashulong, (int (*)(void *, void *))compare, allocsize, nil, pathmapp);
26 }
27 
28 char *
29 logfspathmapnewentry(PathMap *m, ulong path, Entry *e, Path **pathmapp)
30 {
31 	char *errmsg;
32 	errmsg = logfsmapnewentry(m, (void *)path, pathmapp);
33 	if(errmsg)
34 		return errmsg;
35 	if(*pathmapp == nil)
36 		return nil;
37 	(*pathmapp)->path = path;
38 	(*pathmapp)->entry = e;
39 	return nil;
40 }
41 
42 Entry *
43 logfspathmapfinde(PathMap *m, ulong path)
44 {
45 	Path *p;
46 	p = logfspathmapfindentry(m, path);
47 	return p ? p->entry : nil;
48 }
49