aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/lib.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/lib.c b/lib/lib.c
index 1c1148c2..6cb82e24 100644
--- a/lib/lib.c
+++ b/lib/lib.c
@@ -499,13 +499,15 @@ char *itoa(int n)
// (zetta and yotta don't fit in 64 bits.)
long atolx(char *numstr)
{
- char *c, *suffixes="kmgtpe", *end;
+ char *c, *suffixes="bkmgtpe", *end;
long val = strtol(numstr, &c, 0);
if (*c) {
end = strchr(suffixes, tolower(*c));
- if (end) val *= 1024L<<((end-suffixes)*10);
- else {
+ if (end) {
+ int shift = end-suffixes;
+ if (shift--) val *= 1024L<<(shift*10);
+ } else {
while (isspace(*c)) c++;
if (*c) error_exit("not integer: %s", numstr);
}