/* 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; | |
} |