aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/strtoofft.c56
1 files changed, 30 insertions, 26 deletions
diff --git a/lib/strtoofft.c b/lib/strtoofft.c
index 322a753e3..a6f1f01f3 100644
--- a/lib/strtoofft.c
+++ b/lib/strtoofft.c
@@ -55,9 +55,11 @@ Curl_strtoll(const char *nptr, char **endptr, int base)
if (end[0] == '-') {
is_negative = 1;
end++;
- } else if (end[0] == '+') {
+ }
+ else if (end[0] == '+') {
end++;
- } else if (end[0] == '\0') {
+ }
+ else if (end[0] == '\0') {
/* We had nothing but perhaps some whitespace -- there was no number. */
if (endptr) {
*endptr = end;
@@ -71,7 +73,8 @@ Curl_strtoll(const char *nptr, char **endptr, int base)
end += 2;
base = 16;
}
- } else if (end[0] == '0') {
+ }
+ else if (end[0] == '0') {
if (base == 8 || base == 0) {
end++;
base = 8;
@@ -90,16 +93,15 @@ Curl_strtoll(const char *nptr, char **endptr, int base)
overflow = 0;
for (i = get_char(end[0], base);
i != -1;
- end++, i = get_char(end[0], base))
- {
+ end++, i = get_char(end[0], base)) {
newval = base * value + i;
if (newval < value) {
/* We've overflowed. */
overflow = 1;
break;
- } else {
- value = newval;
}
+ else
+ value = newval;
}
if (!overflow) {
@@ -107,19 +109,18 @@ Curl_strtoll(const char *nptr, char **endptr, int base)
/* Fix the sign. */
value *= -1;
}
- } else {
- if (is_negative) {
+ }
+ else {
+ if (is_negative)
value = 0x8000000000000000L;
- } else {
+ else
value = 0x7FFFFFFFFFFFFFFFL;
- }
errno = ERANGE;
}
- if (endptr) {
+ if (endptr)
*endptr = end;
- }
return value;
}
@@ -134,20 +135,23 @@ Curl_strtoll(const char *nptr, char **endptr, int base)
*
* @return the value of c in base, or -1 if c isn't in range
*/
-static int get_char(char c, int base) {
- int value = -1;
- if (c <= '9' && c >= '0') {
- value = c - '0';
- } else if (c <= 'Z' && c >= 'A') {
- value = c - 'A' + 10;
- } else if (c <= 'z' && c >= 'a') {
- value = c - 'a' + 10;
- }
+static int get_char(char c, int base)
+{
+ int value = -1;
+ if (c <= '9' && c >= '0') {
+ value = c - '0';
+ }
+ else if (c <= 'Z' && c >= 'A') {
+ value = c - 'A' + 10;
+ }
+ else if (c <= 'z' && c >= 'a') {
+ value = c - 'a' + 10;
+ }
- if (value >= base) {
- value = -1;
- }
+ if (value >= base) {
+ value = -1;
+ }
- return value;
+ return value;
}
#endif /* Only present if we need strtoll, but don't have it. */