diff options
Diffstat (limited to 'src/lib9pclient/access.c')
-rwxr-xr-x | src/lib9pclient/access.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/lib9pclient/access.c b/src/lib9pclient/access.c new file mode 100755 index 00000000..210b1684 --- /dev/null +++ b/src/lib9pclient/access.c @@ -0,0 +1,36 @@ +#include <u.h> +#include <libc.h> +#include <fcall.h> +#include <9pclient.h> +#include "fsimpl.h" + +int +fsaccess(CFsys *fsys, char *name, int mode) +{ + CFid *fid; + Dir *db; + static char omode[] = { + 0, + OEXEC, + OWRITE, + ORDWR, + OREAD, + OEXEC, /* only approximate */ + ORDWR, + ORDWR /* only approximate */ + }; + + if(mode == AEXIST){ + db = fsdirstat(fsys, name); + free(db); + if(db != nil) + return 0; + return -1; + } + fid = fsopen(fsys, name, omode[mode&7]); + if(fid != nil){ + fsclose(fid); + return 0; + } + return -1; +} |