libbb/procps.c: make fast_strtoul_10() stop on '\n' too

This time for real :)

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2012-02-28 11:16:21 +01:00
parent cd09e81520
commit 62c006d508

View File

@ -127,11 +127,11 @@ static unsigned long fast_strtoul_16(char **endptr)
char *str = *endptr; char *str = *endptr;
unsigned long n = 0; unsigned long n = 0;
/* need to stop on both ' ' and '\n' */ /* Need to stop on both ' ' and '\n' */
while ((c = *str++) > ' ') { while ((c = *str++) > ' ') {
c = ((c|0x20) - '0'); c = ((c|0x20) - '0');
if (c > 9) if (c > 9)
// c = c + '0' - 'a' + 10: /* c = c + '0' - 'a' + 10: */
c = c - ('a' - '0' - 10); c = c - ('a' - '0' - 10);
n = n*16 + c; n = n*16 + c;
} }
@ -144,11 +144,12 @@ static unsigned long fast_strtoul_16(char **endptr)
/* We cut a lot of corners here for speed */ /* We cut a lot of corners here for speed */
static unsigned long fast_strtoul_10(char **endptr) static unsigned long fast_strtoul_10(char **endptr)
{ {
char c; unsigned char c;
char *str = *endptr; char *str = *endptr;
unsigned long n = *str - '0'; unsigned long n = *str - '0';
while ((c = *++str) != ' ') /* Need to stop on both ' ' and '\n' */
while ((c = *++str) > ' ')
n = n*10 + (c - '0'); n = n*10 + (c - '0');
*endptr = str + 1; /* We skip trailing space! */ *endptr = str + 1; /* We skip trailing space! */