From c99680457cfd3e1c05b85593120dc3615fac8512 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 3 Dec 2001 06:23:58 +0000 Subject: [PATCH] (__xstrtol): Don't accept 'Ki'; require 'KiB'. --- lib/xstrtol.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/lib/xstrtol.c b/lib/xstrtol.c index 7bc8f2f..9973eff 100644 --- a/lib/xstrtol.c +++ b/lib/xstrtol.c @@ -183,18 +183,15 @@ __xstrtol (const char *s, char **ptr, int strtol_base, switch (p[0][1]) { case 'i': - suffixes++; + if (p[0][2] == 'B') + suffixes = 3; break; - case '\0': - break; - - default: + case 'B': + suffixes = 2; base = 1000; break; } - - suffixes += (p[0][suffixes] == 'B'); } switch (**p) @@ -211,11 +208,11 @@ __xstrtol (const char *s, char **ptr, int strtol_base, overflow = 0; break; - case 'E': /* Exa or exbi */ + case 'E': /* exa or exbi */ overflow = bkm_scale_by_power (&tmp, base, 6); break; - case 'G': /* Giga or gibi */ + case 'G': /* giga or gibi */ case 'g': /* 'g' is undocumented; for compatibility only */ overflow = bkm_scale_by_power (&tmp, base, 3); break; @@ -225,16 +222,16 @@ __xstrtol (const char *s, char **ptr, int strtol_base, overflow = bkm_scale_by_power (&tmp, base, 1); break; - case 'M': /* Mega or mebi */ + case 'M': /* mega or mebi */ case 'm': /* 'm' is undocumented; for compatibility only */ overflow = bkm_scale_by_power (&tmp, base, 2); break; - case 'P': /* Peta or pebi */ + case 'P': /* peta or pebi */ overflow = bkm_scale_by_power (&tmp, base, 5); break; - case 'T': /* Tera or tebi */ + case 'T': /* tera or tebi */ case 't': /* 't' is undocumented; for compatibility only */ overflow = bkm_scale_by_power (&tmp, base, 4); break; @@ -243,11 +240,11 @@ __xstrtol (const char *s, char **ptr, int strtol_base, overflow = bkm_scale (&tmp, 2); break; - case 'Y': /* Yotta */ + case 'Y': /* yotta */ overflow = bkm_scale_by_power (&tmp, base, 8); break; - case 'Z': /* Zetta */ + case 'Z': /* zetta */ overflow = bkm_scale_by_power (&tmp, base, 7); break;