1 46f79934 2005-01-04 devnull /* Copyright (C) 2003 Russ Cox, Massachusetts Institute of Technology */
2 46f79934 2005-01-04 devnull /* See COPYRIGHT */
4 46f79934 2005-01-04 devnull #include <u.h>
5 46f79934 2005-01-04 devnull #include <libc.h>
6 46f79934 2005-01-04 devnull #include <fcall.h>
7 46f79934 2005-01-04 devnull #include <9pclient.h>
8 46f79934 2005-01-04 devnull #include "fsimpl.h"
11 46f79934 2005-01-04 devnull fsauth(CFsys *fsys, char *uname, char *aname)
13 46f79934 2005-01-04 devnull Fcall tx, rx;
14 46f79934 2005-01-04 devnull void *freep;
15 46f79934 2005-01-04 devnull CFid *afid;
17 80ecfd24 2005-02-08 devnull if((afid = _fsgetfid(fsys)) == nil)
18 46f79934 2005-01-04 devnull return nil;
20 46f79934 2005-01-04 devnull tx.type = Tauth;
21 46f79934 2005-01-04 devnull tx.afid = afid->fid;
22 46f79934 2005-01-04 devnull tx.uname = uname;
23 46f79934 2005-01-04 devnull tx.aname = aname;
25 46f79934 2005-01-04 devnull if(_fsrpc(fsys, &tx, &rx, &freep) < 0){
26 46f79934 2005-01-04 devnull _fsputfid(afid);
27 46f79934 2005-01-04 devnull return nil;
29 46f79934 2005-01-04 devnull if(rx.type == Rerror){
30 46f79934 2005-01-04 devnull werrstr("%s", rx.ename);
31 46f79934 2005-01-04 devnull free(freep);
32 46f79934 2005-01-04 devnull _fsputfid(afid);
33 46f79934 2005-01-04 devnull return nil;
35 46f79934 2005-01-04 devnull afid->qid = rx.aqid;
36 46f79934 2005-01-04 devnull free(freep);
37 46f79934 2005-01-04 devnull return afid;