xref: /plan9/sys/src/cmd/wikifs/wdir.c (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
1 #include <u.h>
2 #include <libc.h>
3 #include <bio.h>
4 #include <String.h>
5 #include <thread.h>
6 #include "wiki.h"
7 
8 /* open, create relative to wiki dir */
9 char *wikidir;
10 
11 static char*
wname(char * s)12 wname(char *s)
13 {
14 	char *t;
15 
16 	t = emalloc(strlen(wikidir)+1+strlen(s)+1);
17 	strcpy(t, wikidir);
18 	strcat(t, "/");
19 	strcat(t, s);
20 	return t;
21 }
22 
23 int
wopen(char * fn,int mode)24 wopen(char *fn, int mode)
25 {
26 	int rv;
27 
28 	fn = wname(fn);
29 	rv = open(fn, mode);
30 	free(fn);
31 	return rv;
32 }
33 
34 int
wcreate(char * fn,int mode,long perm)35 wcreate(char *fn, int mode, long perm)
36 {
37 	int rv;
38 
39 	fn = wname(fn);
40 	rv = create(fn, mode, perm);
41 	free(fn);
42 	return rv;
43 }
44 
45 Biobuf*
wBopen(char * fn,int mode)46 wBopen(char *fn, int mode)
47 {
48 	Biobuf *rv;
49 
50 	fn = wname(fn);
51 	rv = Bopen(fn, mode);
52 	free(fn);
53 	return rv;
54 }
55 
56 int
waccess(char * fn,int mode)57 waccess(char *fn, int mode)
58 {
59 	int rv;
60 
61 	fn = wname(fn);
62 	rv = access(fn, mode);
63 	free(fn);
64 	return rv;
65 }
66 
67 Dir*
wdirstat(char * fn)68 wdirstat(char *fn)
69 {
70 	Dir *d;
71 
72 	fn = wname(fn);
73 	d = dirstat(fn);
74 	free(fn);
75 	return d;
76 }
77