#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; | |
} | |