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