diff options
author | rsc <devnull@localhost> | 2005-02-11 17:01:18 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2005-02-11 17:01:18 +0000 |
commit | 42400cf81f4fb04897bc1b609fc08720bc542df8 (patch) | |
tree | ddec13cf64760a0ebbc7c6060d60f630c2382c59 /src/libauth | |
parent | 59518849d81a71284b90513f6ba76770b42ce32b (diff) | |
download | plan9port-42400cf81f4fb04897bc1b609fc08720bc542df8.tar.gz plan9port-42400cf81f4fb04897bc1b609fc08720bc542df8.tar.bz2 plan9port-42400cf81f4fb04897bc1b609fc08720bc542df8.zip |
add fsamount, nsamount; use ndb for authdial; use explicit %#
Diffstat (limited to 'src/libauth')
-rw-r--r-- | src/libauth/fsamount.c | 33 | ||||
-rw-r--r-- | src/libauth/mkfile | 2 | ||||
-rw-r--r-- | src/libauth/nsamount.c | 33 |
3 files changed, 68 insertions, 0 deletions
diff --git a/src/libauth/fsamount.c b/src/libauth/fsamount.c new file mode 100644 index 00000000..bece208a --- /dev/null +++ b/src/libauth/fsamount.c @@ -0,0 +1,33 @@ +#include <u.h> +#include <libc.h> +#include <auth.h> +#include <thread.h> +#include <9pclient.h> +#include "authlocal.h" + +CFsys* +fsamount(int fd, char *aname) +{ + CFid *afid, *fid; + AuthInfo *ai; + CFsys *fs; + + fs = fsinit(fd); + if(fs == nil) + return nil; + if((afid = fsauth(fs, getuser(), aname)) == nil) + goto noauth; + ai = fsauth_proxy(afid, amount_getkey, "proto=p9any role=client"); + if(ai != nil) + auth_freeAI(ai); +noauth: + fid = fsattach(fs, afid, getuser(), aname); + fsclose(afid); + if(fid == nil){ + _fsunmount(fs); + return nil; + } + fssetroot(fs, fid); + return fs; +} + diff --git a/src/libauth/mkfile b/src/libauth/mkfile index 2512e9c7..5e5c13d2 100644 --- a/src/libauth/mkfile +++ b/src/libauth/mkfile @@ -16,9 +16,11 @@ OFILES=\ auth_rpc.$O\ auth_userpasswd.$O\ auth_wep.$O\ + fsamount.$O\ login.$O\ # newns.$O\ # noworld.$O\ + nsamount.$O\ HFILES=\ $PLAN9/include/auth.h\ diff --git a/src/libauth/nsamount.c b/src/libauth/nsamount.c new file mode 100644 index 00000000..1447904a --- /dev/null +++ b/src/libauth/nsamount.c @@ -0,0 +1,33 @@ +#include <u.h> +#include <libc.h> +#include <auth.h> +#include <thread.h> +#include <9pclient.h> +#include "authlocal.h" + +CFsys* +nsamount(char *name, char *aname) +{ + CFid *afid, *fid; + AuthInfo *ai; + CFsys *fs; + + fs = nsinit(name); + if(fs == nil) + return nil; + if((afid = fsauth(fs, getuser(), aname)) == nil) + goto noauth; + ai = fsauth_proxy(afid, amount_getkey, "proto=p9any role=client"); + if(ai != nil) + auth_freeAI(ai); +noauth: + fid = fsattach(fs, afid, getuser(), aname); + fsclose(afid); + if(fid == nil){ + _fsunmount(fs); + return nil; + } + fssetroot(fs, fid); + return fs; +} + |