Blame


1 1ac60148 2006-01-27 devnull #include <u.h>
2 1ac60148 2006-01-27 devnull #include <libc.h>
3 1ac60148 2006-01-27 devnull #include <fcall.h>
4 1ac60148 2006-01-27 devnull #include <9pclient.h>
5 1ac60148 2006-01-27 devnull #include "fsimpl.h"
6 1ac60148 2006-01-27 devnull
7 1ac60148 2006-01-27 devnull int
8 1ac60148 2006-01-27 devnull fsaccess(CFsys *fsys, char *name, int mode)
9 1ac60148 2006-01-27 devnull {
10 1ac60148 2006-01-27 devnull CFid *fid;
11 1ac60148 2006-01-27 devnull Dir *db;
12 1ac60148 2006-01-27 devnull static char omode[] = {
13 1ac60148 2006-01-27 devnull 0,
14 1ac60148 2006-01-27 devnull OEXEC,
15 1ac60148 2006-01-27 devnull OWRITE,
16 1ac60148 2006-01-27 devnull ORDWR,
17 1ac60148 2006-01-27 devnull OREAD,
18 1ac60148 2006-01-27 devnull OEXEC, /* only approximate */
19 1ac60148 2006-01-27 devnull ORDWR,
20 1ac60148 2006-01-27 devnull ORDWR /* only approximate */
21 1ac60148 2006-01-27 devnull };
22 1ac60148 2006-01-27 devnull
23 1ac60148 2006-01-27 devnull if(mode == AEXIST){
24 1ac60148 2006-01-27 devnull db = fsdirstat(fsys, name);
25 1ac60148 2006-01-27 devnull free(db);
26 1ac60148 2006-01-27 devnull if(db != nil)
27 1ac60148 2006-01-27 devnull return 0;
28 1ac60148 2006-01-27 devnull return -1;
29 1ac60148 2006-01-27 devnull }
30 1ac60148 2006-01-27 devnull fid = fsopen(fsys, name, omode[mode&7]);
31 1ac60148 2006-01-27 devnull if(fid != nil){
32 1ac60148 2006-01-27 devnull fsclose(fid);
33 1ac60148 2006-01-27 devnull return 0;
34 1ac60148 2006-01-27 devnull }
35 1ac60148 2006-01-27 devnull return -1;
36 1ac60148 2006-01-27 devnull }