summaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorDenys Vlasenko2015-10-10 20:17:12 +0200
committerDenys Vlasenko2015-10-10 20:17:12 +0200
commit005c492c40ff833a99abd251872ec60661344474 (patch)
treebd25b3e08ee73dc3b17f2eac3cbcb94fa9a7fca0 /shell
parent02859aaeb29fb83167364291f1ce26b54c23803b (diff)
downloadbusybox-005c492c40ff833a99abd251872ec60661344474.zip
busybox-005c492c40ff833a99abd251872ec60661344474.tar.gz
ash: shrink umask code
function old new delta umaskcmd 258 248 -10 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell')
-rw-r--r--shell/ash.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/shell/ash.c b/shell/ash.c
index b096812..8a1628e 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -12826,27 +12826,25 @@ umaskcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
if (*argptr == NULL) {
if (symbolic_mode) {
- char buf[sizeof("u=rwx,g=rwx,o=rwx")];
+ char buf[sizeof(",u=rwx,g=rwx,o=rwx")];
char *p = buf;
int i;
i = 2;
for (;;) {
- unsigned bits;
-
+ *p++ = ',';
*p++ = permuser[i];
*p++ = '=';
/* mask is 0..0uuugggooo. i=2 selects uuu bits */
- bits = (mask >> (i*3));
- if (!(bits & 4)) *p++ = 'r';
- if (!(bits & 2)) *p++ = 'w';
- if (!(bits & 1)) *p++ = 'x';
+ if (!(mask & 0400)) *p++ = 'r';
+ if (!(mask & 0200)) *p++ = 'w';
+ if (!(mask & 0100)) *p++ = 'x';
+ mask <<= 3;
if (--i < 0)
break;
- *p++ = ',';
}
*p = '\0';
- puts(buf);
+ puts(buf + 1);
} else {
out1fmt("%04o\n", mask);
}