ref: fe158181bc9532addb1590e9f636bb845971d46b
parent: b10a2da486090674e74e916db57ff24d08c01fb7
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sun Mar 5 22:07:03 EST 2017
cwfs: handle DMTMP flag in create
--- a/sys/src/cmd/cwfs/9p2.c
+++ b/sys/src/cmd/cwfs/9p2.c
@@ -894,8 +894,8 @@
error = Emode;
goto out;
}
- if(f->perm & PDIR)
- if((f->mode & OTRUNC) || (f->perm & PAPND) || (fmod & FWRITE))
+ if(f->perm & DMDIR)
+ if((f->mode & OTRUNC) || (f->perm & DMAPPEND) || (fmod & FWRITE))
goto badaccess;
/*
* do it
@@ -921,20 +921,22 @@
d1->uid = file->uid;
d1->gid = d->gid;
f->perm &= d->mode | ~0666;
- if(f->perm & PDIR)
+ if(f->perm & DMDIR)
f->perm &= d->mode | ~0777;
}
d1->qid.path = path;
d1->qid.version = 0;
d1->mode = DALLOC | (f->perm & 0777);
- if(f->perm & PDIR) {+ if(f->perm & DMDIR) {d1->mode |= DDIR;
d1->qid.path |= QPDIR;
}
- if(f->perm & PAPND)
+ if(f->perm & DMAPPEND)
d1->mode |= DAPND;
+ if(f->perm & DMTMP)
+ d1->mode |= DTMP;
t = nil;
- if(f->perm & PLOCK){+ if(f->perm & DMEXCL){d1->mode |= DLOCK;
t = tlocked(p1, d1);
/* if nil, out of tlock structures */
--- a/sys/src/cmd/cwfs/all.h
+++ b/sys/src/cmd/cwfs/all.h
@@ -25,13 +25,6 @@
QPROOT = 1,
QPSUPER = 2,
- /*
- * perm argument in 9P create
- */
- PDIR = 1L<<31, /* is a directory */
- PAPND = 1L<<30, /* is append only */
- PLOCK = 1L<<29, /* is locked on open */
-
FID1 = 1,
FID2 = 2,
--- a/sys/src/cmd/cwfs/con.c
+++ b/sys/src/cmd/cwfs/con.c
@@ -435,11 +435,13 @@
if(argc > 5) {if(strchr(argv[5], 'l'))
- perm |= PLOCK;
+ perm |= DMEXCL;
if(strchr(argv[5], 'a'))
- perm |= PAPND;
+ perm |= DMAPPEND;
if(strchr(argv[5], 'd'))
- perm |= PDIR;
+ perm |= DMDIR;
+ if(strchr(argv[5], 't'))
+ perm |= DMTMP;
}
if(con_create(FID2, elem, uid, gid, perm, 0))
--
⑨