Commit Diff


commit - 86122474029f9aa85a6d036d23e8a4fa60d5ed4b
commit + 1ac60148eb818857ad667789cb84973e76f02a4f
blob - /dev/null
blob + 210b16849df20ae241a8a6332af511415c29a6e6 (mode 755)
--- /dev/null
+++ 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;
+}
blob - 5f1eb78c67cc61173530790904177f779fa7cfa5
blob + 55882cae070120258044d9785add34ee1778c585
--- src/lib9pclient/mkfile
+++ src/lib9pclient/mkfile
@@ -3,6 +3,7 @@
 LIB=lib9pclient.a
 
 OFILES=\
+	access.$O\
 	auth.$O\
 	close.$O\
 	create.$O\