This commit is contained in:
rsc 2006-01-27 04:08:41 +00:00
parent 56e3c29015
commit 8612247402
4 changed files with 54 additions and 1 deletions

View file

@ -9,17 +9,37 @@ fscreate(CFsys *fs, char *name, int mode, ulong perm)
{
CFid *fid;
Fcall tx, rx;
char *p, *dir, *elem;
p = strrchr(name, '/');
if(p == nil){
dir = "";
elem = name;
}else{
dir = name;
*p = 0;
elem = p+1;
}
if((fid = _fswalk(fs->root, name)) == nil)
fprint(2, "create %s %s\n", dir, elem);
if((fid = _fswalk(fs->root, dir)) == nil){
if(p)
*p = '/';
return nil;
}
tx.type = Tcreate;
tx.name = elem;
tx.fid = fid->fid;
tx.mode = mode;
tx.perm = perm;
if(_fsrpc(fs, &tx, &rx, 0) < 0){
if(p)
*p = '/';
fsclose(fid);
return nil;
}
if(p)
*p = '/';
fid->mode = mode;
return fid;
}