Blob
1 #include <u.h>2 #include <libc.h>3 #include <fcall.h>4 #include <9pclient.h>5 #include "fsimpl.h"7 int8 fsopenfd(CFsys *fs, char *name, int mode)9 {10 CFid *fid;11 Fcall tx, rx;13 if((fid = _fswalk(fs->root, name)) == nil)14 return -1;15 tx.type = Topenfd;16 tx.fid = fid->fid;17 tx.mode = mode&~OCEXEC;18 if(_fsrpc(fs, &tx, &rx, 0) < 0){19 fsclose(fid);20 return -1;21 }22 _fsputfid(fid);23 if(mode&OCEXEC && rx.unixfd>=0)24 fcntl(rx.unixfd, F_SETFL, FD_CLOEXEC);25 return rx.unixfd;26 }