Blob
1 #include <u.h>2 #include <libc.h>3 #include <fcall.h>4 #include <9pclient.h>5 #include "fsimpl.h"7 CFid*8 fscreate(CFsys *fs, char *name, int mode, ulong perm)9 {10 CFid *fid;11 Fcall tx, rx;12 char *p, *dir, *elem;14 p = strrchr(name, '/');15 if(p == nil){16 dir = "";17 elem = name;18 }else{19 dir = name;20 *p = 0;21 elem = p+1;22 }24 if((fid = _fswalk(fs->root, dir)) == nil){25 if(p)26 *p = '/';27 return nil;28 }29 tx.type = Tcreate;30 tx.name = elem;31 tx.fid = fid->fid;32 tx.mode = mode;33 tx.perm = perm;34 if(_fsrpc(fs, &tx, &rx, 0) < 0){35 if(p)36 *p = '/';37 fsclose(fid);38 return nil;39 }40 if(p)41 *p = '/';42 fid->mode = mode;43 return fid;44 }