mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-07-16 04:35:13 +03:00
86 lines
2.8 KiB
Diff
86 lines
2.8 KiB
Diff
musl doesn't have strtonum, import it from OpenBSD.
|
|
|
|
diff -upr docbook2mdoc-1.1.0.orig/Makefile docbook2mdoc-1.1.0/Makefile
|
|
--- docbook2mdoc-1.1.0.orig/Makefile 2020-12-29 10:20:53.933977196 +0100
|
|
+++ docbook2mdoc-1.1.0/Makefile 2020-12-29 10:21:24.500779954 +0100
|
|
@@ -4,8 +4,8 @@ WWWPREFIX = /var/www/vhosts/mdocml.bsd.l
|
|
PREFIX = /usr/local
|
|
|
|
HEADS = xmalloc.h node.h parse.h reorg.h macro.h format.h
|
|
-SRCS = xmalloc.c node.c parse.c reorg.c macro.c docbook2mdoc.c tree.c main.c
|
|
-OBJS = xmalloc.o node.o parse.o reorg.o macro.o docbook2mdoc.o tree.o main.o
|
|
+SRCS = xmalloc.c node.c parse.c reorg.c macro.c docbook2mdoc.c tree.c main.c strtonum.c
|
|
+OBJS = xmalloc.o node.o parse.o reorg.o macro.o docbook2mdoc.o tree.o main.o strtonum.o
|
|
DISTFILES = Makefile NEWS docbook2mdoc.1
|
|
|
|
all: docbook2mdoc
|
|
diff -upr docbook2mdoc-1.1.0.orig/strtonum.c docbook2mdoc-1.1.0/strtonum.c
|
|
--- docbook2mdoc-1.1.0.orig/strtonum.c 2020-12-29 10:22:06.460966781 +0100
|
|
+++ docbook2mdoc-1.1.0/strtonum.c 2020-12-29 10:21:09.747380938 +0100
|
|
@@ -0,0 +1,66 @@
|
|
+/* $OpenBSD: strtonum.c,v 1.8 2015/09/13 08:31:48 guenther Exp $ */
|
|
+
|
|
+/*
|
|
+ * Copyright (c) 2004 Ted Unangst and Todd Miller
|
|
+ * All rights reserved.
|
|
+ *
|
|
+ * Permission to use, copy, modify, and distribute this software for any
|
|
+ * purpose with or without fee is hereby granted, provided that the above
|
|
+ * copyright notice and this permission notice appear in all copies.
|
|
+ *
|
|
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
+ */
|
|
+
|
|
+#include <errno.h>
|
|
+#include <limits.h>
|
|
+#include <stdlib.h>
|
|
+
|
|
+#define INVALID 1
|
|
+#define TOOSMALL 2
|
|
+#define TOOLARGE 3
|
|
+
|
|
+long long
|
|
+strtonum(const char *numstr, long long minval, long long maxval,
|
|
+ const char **errstrp)
|
|
+{
|
|
+ long long ll = 0;
|
|
+ int error = 0;
|
|
+ char *ep;
|
|
+ struct errval {
|
|
+ const char *errstr;
|
|
+ int err;
|
|
+ } ev[4] = {
|
|
+ { NULL, 0 },
|
|
+ { "invalid", EINVAL },
|
|
+ { "too small", ERANGE },
|
|
+ { "too large", ERANGE },
|
|
+ };
|
|
+
|
|
+ ev[0].err = errno;
|
|
+ errno = 0;
|
|
+ if (minval > maxval) {
|
|
+ error = INVALID;
|
|
+ } else {
|
|
+ ll = strtoll(numstr, &ep, 10);
|
|
+ if (numstr == ep || *ep != '\0')
|
|
+ error = INVALID;
|
|
+ else if ((ll == LLONG_MIN && errno == ERANGE) || ll < minval)
|
|
+ error = TOOSMALL;
|
|
+ else if ((ll == LLONG_MAX && errno == ERANGE) || ll > maxval)
|
|
+ error = TOOLARGE;
|
|
+ }
|
|
+ if (errstrp != NULL)
|
|
+ *errstrp = ev[error].errstr;
|
|
+ errno = ev[error].err;
|
|
+ if (error)
|
|
+ ll = 0;
|
|
+
|
|
+ return (ll);
|
|
+}
|
|
+DEF_WEAK(strtonum);
|