summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Harris <jgh146exb@wizmail.org>2012-06-05 16:16:40 +0100
committerJeremy Harris <jgh146exb@wizmail.org>2012-06-05 16:16:40 +0100
commit4eb9d6ef85652741d2852f89365a0af08ddc382e (patch)
tree96573163eb0200f02df5d6aa398ffdf409ab6074 /src
parent976b7e9fc18bab62d624acf49c6330915b875d41 (diff)
Support "G" modifier on numbers in ${if comparisons.
Diffstat (limited to 'src')
-rw-r--r--src/src/expand.c27
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)";