From 76622dbd1666ca3e0e45e97d880836296ecb0dad Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sun, 4 Oct 2009 01:14:19 +0200 Subject: [PATCH] ash: code shrink function old new delta ulimitcmd 489 415 -74 Signed-off-by: Denys Vlasenko --- shell/ash.c | 20 +++++++++----------- 1 file 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; } -- 2.25.1