diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2009-10-04 01:14:19 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2009-10-04 01:14:19 +0200 |
commit | 76622dbd1666ca3e0e45e97d880836296ecb0dad (patch) | |
tree | 7e4e471854f919fea2146fb6261fb9cce138027c | |
parent | fd2dc53ba49ed2bdb077a45f4793d397fa92d2da (diff) | |
download | busybox-76622dbd1666ca3e0e45e97d880836296ecb0dad.tar.gz |
ash: code shrink
function old new delta
ulimitcmd 489 415 -74
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | shell/ash.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/shell/ash.c b/shell/ash.c index e5503a140..444a6961b 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -12909,8 +12909,7 @@ printlim(enum limtype how, const struct rlimit *limit, static int FAST_FUNC ulimitcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) { - int c; - rlim_t val = 0; + rlim_t val; enum limtype how = SOFT | HARD; const struct limits *l; int set, all = 0; @@ -12971,6 +12970,7 @@ ulimitcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) continue; set = *argptr ? 1 : 0; + val = 0; if (set) { char *p = *argptr; @@ -12979,15 +12979,13 @@ ulimitcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) if (strncmp(p, "unlimited\n", 9) == 0) val = RLIM_INFINITY; else { - val = (rlim_t) 0; - - while ((c = *p++) >= '0' && c <= '9') { - val = (val * 10) + (long)(c - '0'); - // val is actually 'unsigned long int' and can't get < 0 - if (val < (rlim_t) 0) - break; - } - if (c) + if (sizeof(val) == sizeof(int)) + val = bb_strtou(p, NULL, 10); + else if (sizeof(val) == sizeof(long)) + val = bb_strtoul(p, NULL, 10); + else + val = bb_strtoull(p, NULL, 10); + if (errno) ash_msg_and_raise_error("bad number"); val <<= l->factor_shift; } |