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