mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-15 11:20:03 +00:00
39 lines
647 B
C
39 lines
647 B
C
|
/* 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((fid = _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;
|
||
|
}
|