diff options
| author | Charles.Forsyth <devnull@localhost> | 2008-01-16 13:39:58 +0000 |
|---|---|---|
| committer | Charles.Forsyth <devnull@localhost> | 2008-01-16 13:39:58 +0000 |
| commit | 3f1f06c5d12b24c4061e5123acabf72348ff45a2 (patch) | |
| tree | d40487b0f5d3a46c5e1cefe288f9a74b8494d9a7 /appl/cmd/memfs.b | |
| parent | ca1042d3d05e5e9b2b5094b04197c96ec3b34bfe (diff) | |
20080116-1340
Diffstat (limited to 'appl/cmd/memfs.b')
| -rw-r--r-- | appl/cmd/memfs.b | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/appl/cmd/memfs.b b/appl/cmd/memfs.b index e18388c5..20ccdc64 100644 --- a/appl/cmd/memfs.b +++ b/appl/cmd/memfs.b @@ -217,7 +217,7 @@ memfs(maxsz : int, tc : chan of ref Tmsg, srv : ref Styxserver, sync: chan of in c.mode = tm.mode; c.qid.vers = mf.qid.vers; mf.nopen++; - if (tm.mode & OTRUNC) { + if ((tm.mode & OTRUNC) && !(mf.perm & Sys->DMAPPEND)) { # OTRUNC cannot be set for a directory # always at least one blk so don't need to check fs limit freeblks += (len mf.data); @@ -321,7 +321,7 @@ memfs(maxsz : int, tc : chan of ref Tmsg, srv : ref Styxserver, sync: chan of in } srv.reply(ref Rmsg.Clunk(tm.tag)); Stat => - (err, c, mf) := fidtomf(srv, qhash, tm.fid); + (err, nil, mf) := fidtomf(srv, qhash, tm.fid); if (err != nil) { srv.reply(ref Rmsg.Error(tm.tag, err)); continue; @@ -354,7 +354,7 @@ memfs(maxsz : int, tc : chan of ref Tmsg, srv : ref Styxserver, sync: chan of in Wstat => (err, c, mf) := fidtomf(srv, qhash, tm.fid); stat := tm.stat; - perm := mf.perm & ~Sys->DMDIR; + if (err == nil && stat.name != mf.name) { parent := mf.parent; if (!modeok(OWRITE, parent.perm, c.uname, parent.owner)) |
