aboutsummaryrefslogtreecommitdiff
path: root/src/lib9pclient/auth.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-01-04 21:22:40 +0000
committerrsc <devnull@localhost>2005-01-04 21:22:40 +0000
commit46f79934b79ef526ed42bbe5a565e6b5d884d24a (patch)
treed1e663f7d3b2b328f03aeb34fdb3f4006aa97ec0 /src/lib9pclient/auth.c
parent5ba841dffa1f6cda712ebcff27c55c9d0a672c67 (diff)
downloadplan9port-46f79934b79ef526ed42bbe5a565e6b5d884d24a.tar.gz
plan9port-46f79934b79ef526ed42bbe5a565e6b5d884d24a.tar.bz2
plan9port-46f79934b79ef526ed42bbe5a565e6b5d884d24a.zip
lib9pclient is the new libfs
Diffstat (limited to 'src/lib9pclient/auth.c')
-rw-r--r--src/lib9pclient/auth.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/lib9pclient/auth.c b/src/lib9pclient/auth.c
new file mode 100644
index 00000000..2c740e12
--- /dev/null
+++ b/src/lib9pclient/auth.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2003 Russ Cox, Massachusetts Institute of Technology */
+/* See COPYRIGHT */
+
+#include <u.h>
+#include <libc.h>
+#include <fcall.h>
+#include <9pclient.h>
+#include "fsimpl.h"
+
+CFid*
+fsauth(CFsys *fsys, char *uname, char *aname)
+{
+ Fcall tx, rx;
+ void *freep;
+ CFid *afid;
+
+ if((fid = _fsgetfid(fsys)) == nil)
+ return nil;
+
+ tx.type = Tauth;
+ tx.afid = afid->fid;
+ tx.uname = uname;
+ tx.aname = aname;
+
+ if(_fsrpc(fsys, &tx, &rx, &freep) < 0){
+ _fsputfid(afid);
+ return nil;
+ }
+ if(rx.type == Rerror){
+ werrstr("%s", rx.ename);
+ free(freep);
+ _fsputfid(afid);
+ return nil;
+ }
+ afid->qid = rx.aqid;
+ free(freep);
+ return afid;
+}