summaryrefslogtreecommitdiff
path: root/appl/cmd/memfs.b
diff options
context:
space:
mode:
authorCharles.Forsyth <devnull@localhost>2008-01-16 13:39:58 +0000
committerCharles.Forsyth <devnull@localhost>2008-01-16 13:39:58 +0000
commit3f1f06c5d12b24c4061e5123acabf72348ff45a2 (patch)
treed40487b0f5d3a46c5e1cefe288f9a74b8494d9a7 /appl/cmd/memfs.b
parentca1042d3d05e5e9b2b5094b04197c96ec3b34bfe (diff)
20080116-1340
Diffstat (limited to 'appl/cmd/memfs.b')
-rw-r--r--appl/cmd/memfs.b6
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))