respond(r, Ebadoff);
return;
}
- if(!hasperm(f, u, AWRITE) || (r->d.mode & DMDIR) != 0)
+ if(!hasperm(f, u, AWRITE) || (f->mode & DMDIR) != 0)
goto Perm;
}
}
if(r->d.mode != ~0){
- f->mode = (r->d.mode & ~DMDIR) | (f->mode & DMDIR);
- f->qid.type = 0;
- if(f->mode & DMDIR)
- f->qid.type |= QTDIR;
- if(f->mode & DMAPPEND)
- f->qid.type |= QTAPPEND;
- if(f->mode & DMEXCL)
- f->qid.type |= QTEXCL;
+ f->mode = r->d.mode;
+ f->qid.type = f->mode >> 24;
}
if(r->d.name[0] != '\0'){
free(f->name);
truncfile(f, r->d.length);
accessfile(f, AWRITE);
+ if(r->d.mtime != ~0){
+ f->mtime = r->d.mtime;
+ }
+
respond(r, nil);
return;
char *srvname = nil;
char *mtpt = "/tmp";
int mountflags;
- Qid q;
fs.tree = alloctree(nil, nil, DMDIR|0777, fsdestroyfile);
- q = fs.tree->root->qid;
mountflags = 0;
ARGBEGIN{