int64_t num;
char *end = NULL;
+ errno = 0;
if (str == NULL || *str == '\0')
goto err;
- errno = 0;
num = strtoimax(str, &end, 10);
if (errno || str == end || (end && *end))
return num;
err:
- if (errno)
+ if (errno == ERANGE)
err(STRTOXX_EXIT_CODE, "%s: '%s'", errmesg, str);
errx(STRTOXX_EXIT_CODE, "%s: '%s'", errmesg, str);
uintmax_t num;
char *end = NULL;
+ errno = 0;
if (str == NULL || *str == '\0')
goto err;
- errno = 0;
num = strtoumax(str, &end, 10);
if (errno || str == end || (end && *end))
return num;
err:
- if (errno)
+ if (errno == ERANGE)
err(STRTOXX_EXIT_CODE, "%s: '%s'", errmesg, str);
errx(STRTOXX_EXIT_CODE, "%s: '%s'", errmesg, str);
double num;
char *end = NULL;
+ errno = 0;
if (str == NULL || *str == '\0')
goto err;
- errno = 0;
num = strtod(str, &end);
if (errno || str == end || (end && *end))
return num;
err:
- if (errno)
+ if (errno == ERANGE)
err(STRTOXX_EXIT_CODE, "%s: '%s'", errmesg, str);
errx(STRTOXX_EXIT_CODE, "%s: '%s'", errmesg, str);
long num;
char *end = NULL;
+ errno = 0;
if (str == NULL || *str == '\0')
goto err;
- errno = 0;
num = strtol(str, &end, 10);
if (errno || str == end || (end && *end))
return num;
err:
- if (errno)
+ if (errno == ERANGE)
err(STRTOXX_EXIT_CODE, "%s: '%s'", errmesg, str);
+
errx(STRTOXX_EXIT_CODE, "%s: '%s'", errmesg, str);
}
unsigned long num;
char *end = NULL;
+ errno = 0;
if (str == NULL || *str == '\0')
goto err;
- errno = 0;
num = strtoul(str, &end, 10);
if (errno || str == end || (end && *end))
return num;
err:
- if (errno)
+ if (errno == ERANGE)
err(STRTOXX_EXIT_CODE, "%s: '%s'", errmesg, str);
errx(STRTOXX_EXIT_CODE, "%s: '%s'", errmesg, str);