]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/cmd/ramfs.c
fix ref822 again: remove uniqarray(), fix case with many entries in 'n'.
[plan9front.git] / sys / src / cmd / ramfs.c
index dde800b75dceecba2d787c590faead1a0a784ea9..e43fa1460c63e9056dc3c2cf74e04f2f839d634b 100644 (file)
@@ -285,7 +285,7 @@ fswstat(Req *r)
                        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;
        }
 
@@ -335,14 +335,8 @@ fswstat(Req *r)
        }
 
        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);
@@ -352,6 +346,10 @@ fswstat(Req *r)
                truncfile(f, r->d.length);
 
        accessfile(f, AWRITE);
+       if(r->d.mtime != ~0){
+               f->mtime = r->d.mtime;
+       }
+
        respond(r, nil);
        return;
 
@@ -457,10 +455,8 @@ main(int argc, char **argv)
        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{