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 fprint(2, "create %s %s\n", dir, elem);25 if((fid = _fswalk(fs->root, dir)) == nil){26 if(p)27 *p = '/';28 return nil;29 }30 tx.type = Tcreate;31 tx.name = elem;32 tx.fid = fid->fid;33 tx.mode = mode;34 tx.perm = perm;35 if(_fsrpc(fs, &tx, &rx, 0) < 0){36 if(p)37 *p = '/';38 fsclose(fid);39 return nil;40 }41 if(p)42 *p = '/';43 fid->mode = mode;44 return fid;45 }