diff options
Diffstat (limited to 'src/libauth/fsamount.c')
| -rw-r--r-- | src/libauth/fsamount.c | 33 |
1 files changed, 33 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; +} + |
