diff options
author | Jeremy Harris <jgh146exb@wizmail.org> | 2012-06-05 16:16:40 +0100 |
---|---|---|
committer | Jeremy Harris <jgh146exb@wizmail.org> | 2012-06-05 16:16:40 +0100 |
commit | 4eb9d6ef85652741d2852f89365a0af08ddc382e (patch) | |
tree | 96573163eb0200f02df5d6aa398ffdf409ab6074 /src | |
parent | 976b7e9fc18bab62d624acf49c6330915b875d41 (diff) |
Support "G" modifier on numbers in ${if comparisons.
Diffstat (limited to 'src')
-rw-r--r-- | src/src/expand.c | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/src/src/expand.c b/src/src/expand.c index 62e8e5747..70bd86fc1 100644 --- a/src/src/expand.c +++ b/src/src/expand.c @@ -6217,18 +6217,25 @@ else if (value < 0 && isplus) } else { - if (tolower(*endptr) == 'k') + switch (tolower(*endptr)) { - if (value > LLONG_MAX/1024 || value < LLONG_MIN/1024) errno = ERANGE; + default: + break; + case 'k': + if (value > LLONG_MAX/1024 || value < LLONG_MIN/1024) errno = ERANGE; else value *= 1024; - endptr++; - } - else if (tolower(*endptr) == 'm') - { - if (value > LLONG_MAX/(1024*1024) || value < LLONG_MIN/(1024*1024)) - errno = ERANGE; - else value *= 1024*1024; - endptr++; + endptr++; + break; + case 'm': + if (value > LLONG_MAX/(1024*1024) || value < LLONG_MIN/(1024*1024)) errno = ERANGE; + else value *= 1024*1024; + endptr++; + break; + case 'g': + if (value > LLONG_MAX/(1024*1024*1024) || value < LLONG_MIN/(1024*1024*1024)) errno = ERANGE; + else value *= 1024*1024*1024; + endptr++; + break; } if (errno == ERANGE) msg = US"absolute value of integer \"%s\" is too large (overflow)"; |