summaryrefslogtreecommitdiff
path: root/sys/src/cmd/hjfs
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-01-13 08:49:31 +0100
committercinap_lenrek <cinap_lenrek@gmx.de>2013-01-13 08:49:31 +0100
commit63f1fc07eb77a5443d693b902dd2b74b56f95057 (patch)
tree36f85c7818446382752014d5d29f9ad2e570541e /sys/src/cmd/hjfs
parent6dc133ad99486167343885af1860d4e85a0f946c (diff)
hjfs: dont mask permission bits for "create" console command
Diffstat (limited to 'sys/src/cmd/hjfs')
-rw-r--r--sys/src/cmd/hjfs/cons.c2
-rw-r--r--sys/src/cmd/hjfs/fs2.c12
2 files changed, 8 insertions, 6 deletions
diff --git a/sys/src/cmd/hjfs/cons.c b/sys/src/cmd/hjfs/cons.c
index 1162446ed..688f31378 100644
--- a/sys/src/cmd/hjfs/cons.c
+++ b/sys/src/cmd/hjfs/cons.c
@@ -148,7 +148,7 @@ cmdcreate(int argc, char **argv)
return -1;
if(name2uid(fsmain, argv[3], &gid) < 0)
return -1;
- ch = chanattach(fsmain, 0);
+ ch = chanattach(fsmain, CHFNOPERM);
if(ch == nil)
return -1;
ch->uid = uid;
diff --git a/sys/src/cmd/hjfs/fs2.c b/sys/src/cmd/hjfs/fs2.c
index 95b6a1997..fc772a832 100644
--- a/sys/src/cmd/hjfs/fs2.c
+++ b/sys/src/cmd/hjfs/fs2.c
@@ -132,17 +132,19 @@ chancreat(Chan *ch, char *name, int perm, int mode)
werrstr(Enotadir);
goto error;
}
- if((ch->flags & CHFNOPERM) == 0)
+ if((ch->flags & CHFNOPERM) == 0){
if(!permcheck(ch->fs, d, ch->uid, OWRITE)){
werrstr(Eperm);
goto error;
}
+ if(isdir)
+ perm &= ~0777 | d->mode & 0777;
+ else
+ perm &= ~0666 | d->mode & 0666;
+ }
if(newentry(ch->fs, ch->loc, b, name, &f, 0) <= 0)
goto error;
- if(isdir)
- perm &= ~0777 | d->mode & 0777;
- else
- perm &= ~0666 | d->mode & 0666;
+
f.type = perm >> 24;
if(newqid(ch->fs, &f.path) < 0)
goto error;