| /* Copyright (C) 2003 Russ Cox, Massachusetts Institute of Technology */ |
| /* See COPYRIGHT */ |
| |
| #include <u.h> |
| #include <libc.h> |
| #include <fcall.h> |
| #include <9pclient.h> |
| #include "fsimpl.h" |
| |
| CFid* |
| fsauth(CFsys *fsys, char *uname, char *aname) |
| { |
| Fcall tx, rx; |
| void *freep; |
| CFid *afid; |
| |
| if((afid = _fsgetfid(fsys)) == nil) |
| return nil; |
| |
| tx.type = Tauth; |
| tx.afid = afid->fid; |
| tx.uname = uname; |
| tx.aname = aname; |
| |
| if(_fsrpc(fsys, &tx, &rx, &freep) < 0){ |
| _fsputfid(afid); |
| return nil; |
| } |
| if(rx.type == Rerror){ |
| werrstr("%s", rx.ename); |
| free(freep); |
| _fsputfid(afid); |
| return nil; |
| } |
| afid->qid = rx.aqid; |
| free(freep); |
| return afid; |
| } |