ref: 1e6334b12ded6f28ed91c372f1d3e6d7c41a9a99
parent: 7a43f27b2a0c19c52f9245d244bf26f566a834c6
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Tue Jun 18 18:09:40 EDT 2013
devsrv, devshr: wstat permissions update permissions last in wstat so it will only get changed when there was no error.
--- a/sys/src/9/port/devshr.c
+++ b/sys/src/9/port/devshr.c
@@ -654,8 +654,6 @@
if(strcmp(ent->owner, up->user) && !iseve())
error(Eperm);
- if(d.mode != ~0UL)
- ent->perm = d.mode & 0777;
if(d.name != nil && *d.name && strcmp(ent->name, d.name) != 0) {if(strchr(d.name, '/') != nil)
error(Ebadchar);
@@ -665,6 +663,8 @@
}
if(d.uid != nil && *d.uid)
kstrdup(&ent->owner, d.uid);
+ if(d.mode != ~0UL)
+ ent->perm = d.mode & 0777;
switch(sch->level){case Qcshr:
--- a/sys/src/9/port/devsrv.c
+++ b/sys/src/9/port/devsrv.c
@@ -272,8 +272,6 @@
if(strcmp(sp->owner, up->user) != 0 && !iseve())
error(Eperm);
- if(d.mode != ~0UL)
- sp->perm = d.mode & 0777;
if(d.name != nil && *d.name && strcmp(sp->name, d.name) != 0) {if(strchr(d.name, '/') != nil)
error(Ebadchar);
@@ -283,6 +281,8 @@
}
if(d.uid != nil && *d.uid)
kstrdup(&sp->owner, d.uid);
+ if(d.mode != ~0UL)
+ sp->perm = d.mode & 0777;
qunlock(&srvlk);
poperror();
--
⑨