commit 3d2b9a2ca73d948cf5da23bc0f00005060f36e04
Author: sin <[email protected]>
Date:   Fri Jan 30 13:24:41 2015 +0000

    Add estrtoul()

diff --git a/Makefile b/Makefile
index a8ce4f0..a420784 100644
--- a/Makefile
+++ b/Makefile
@@ -40,6 +40,7 @@ LIBUTILSRC =\
        libutil/eregcomp.c\
        libutil/estrtod.c\
        libutil/estrtol.c\
+       libutil/estrtoul.c\
        libutil/fnck.c\
        libutil/getlines.c\
        libutil/human.c\
diff --git a/libutil/estrtoul.c b/libutil/estrtoul.c
new file mode 100644
index 0000000..b8907be
--- /dev/null
+++ b/libutil/estrtoul.c
@@ -0,0 +1,26 @@
+/* See LICENSE file for copyright and license details. */
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "../util.h"
+
+unsigned long
+estrtoul(const char *s, int base)
+{
+       char *end;
+       unsigned long n;
+
+       errno = 0;
+       n = strtoul(s, &end, base);
+       if (*end != '\0') {
+               if (base == 0)
+                       eprintf("%s: not an integer\n", s);
+               else
+                       eprintf("%s: not a base %d integer\n", s, base);
+       }
+       if (errno != 0)
+               eprintf("%s:", s);
+
+       return n;
+}
diff --git a/util.h b/util.h
index f926044..f32f8b3 100644
--- a/util.h
+++ b/util.h
@@ -32,6 +32,7 @@ void weprintf(const char *, ...);
 
 double estrtod(const char *);
 long estrtol(const char *, int);
+unsigned long estrtoul(const char *, int);
 
 #undef strcasestr
 char *strcasestr(const char *, const char *);

Reply via email to