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