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 | |
parent | 976b7e9fc18bab62d624acf49c6330915b875d41 (diff) |
Support "G" modifier on numbers in ${if comparisons.
-rw-r--r-- | src/src/expand.c | 27 | ||||
-rw-r--r-- | test/scripts/0000-Basic/0002 | 6 |
2 files changed, 23 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)"; diff --git a/test/scripts/0000-Basic/0002 b/test/scripts/0000-Basic/0002 index f87251e1e..40e4259ef 100644 --- a/test/scripts/0000-Basic/0002 +++ b/test/scripts/0000-Basic/0002 @@ -238,6 +238,12 @@ hash: ${if eq {1}{2}{${hash_3:invalid}}{NO}} md5: ${if eq {1}{2}{${md5:invalid}}{NO}} mask: ${if eq {1}{2}{${mask:invalid}}{NO}} +# Number suffixes in conditions +1k: ${if >{1}{1k}{n}{y}} +1K: ${if >{1}{1K}{n}{y}} +1M: ${if >{1}{1M}{n}{y}} +1G: ${if >{1}{1G}{n}{y}} + # Numeric overflow # >32b should work, >64b not |