sbase

suckless unix tools
git clone git://git.2f30.org/sbase.git
Log | Files | Refs | README | LICENSE

commit b90ca482a081d68be4cd7f0e82ad9479ce4d11ab
parent e077e0c00a4a1e00faeb2cc17fa23ae29f1dd8fc
Author: sin <sin@2f30.org>
Date:   Fri, 30 Jan 2015 13:24:41 +0000

Add estrtoul()

Diffstat:
Makefile | 1+
libutil/estrtoul.c | 26++++++++++++++++++++++++++
util.h | 1+
3 files changed, 28 insertions(+), 0 deletions(-)

diff --git 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 @@ -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 @@ -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 *);