summaryrefslogtreecommitdiffstats
path: root/lib/libutil/expand_number.c
diff options
context:
space:
mode:
authormarkm <markm@FreeBSD.org>2013-08-22 07:10:18 +0000
committermarkm <markm@FreeBSD.org>2013-08-22 07:10:18 +0000
commitebd919f034b5492d5d2693c8cf79e707b25a52bb (patch)
treeb222b60217e3a7914757435440ba08b44e4f9ce9 /lib/libutil/expand_number.c
parent8c10ae99f831cad18194c571d5e44e22bb1001cd (diff)
downloadFreeBSD-src-ebd919f034b5492d5d2693c8cf79e707b25a52bb.zip
FreeBSD-src-ebd919f034b5492d5d2693c8cf79e707b25a52bb.tar.gz
IFC.
Diffstat (limited to 'lib/libutil/expand_number.c')
-rw-r--r--lib/libutil/expand_number.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/libutil/expand_number.c b/lib/libutil/expand_number.c
index 0a62c12..401e2d9 100644
--- a/lib/libutil/expand_number.c
+++ b/lib/libutil/expand_number.c
@@ -50,15 +50,22 @@ int
expand_number(const char *buf, uint64_t *num)
{
uint64_t number;
+ int saved_errno;
unsigned shift;
char *endptr;
+ saved_errno = errno;
+ errno = 0;
+
number = strtoumax(buf, &endptr, 0);
if (number == UINTMAX_MAX && errno == ERANGE) {
return (-1);
}
+ if (errno == 0)
+ errno = saved_errno;
+
if (endptr == buf) {
/* No valid digits. */
errno = EINVAL;
OpenPOWER on IntegriCloud