summaryrefslogtreecommitdiff
path: root/appl/cmd/memfs.b
diff options
context:
space:
mode:
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))