iutil: ship a clean-room version of strtonum for convenience - ics2txt - convert icalendar .ics file to plain text Err bitreich.org 70
hgit clone git://bitreich.org/ics2txt git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ics2txt URL:git://bitreich.org/ics2txt git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ics2txt bitreich.org 70
1Log /scm/ics2txt/log.gph bitreich.org 70
1Files /scm/ics2txt/files.gph bitreich.org 70
1Refs /scm/ics2txt/refs.gph bitreich.org 70
1Tags /scm/ics2txt/tag bitreich.org 70
1README /scm/ics2txt/file/README.md.gph bitreich.org 70
i--- Err bitreich.org 70
1commit 94173d57d064a613633e0cdd0b1a6da35d28fee8 /scm/ics2txt/commit/94173d57d064a613633e0cdd0b1a6da35d28fee8.gph bitreich.org 70
1parent 599d47ef952d535e775263772cfbbbe9a2704971 /scm/ics2txt/commit/599d47ef952d535e775263772cfbbbe9a2704971.gph bitreich.org 70
hAuthor: Josuah Demangeon <me@josuah.net> URL:mailto:me@josuah.net bitreich.org 70
iDate: Thu, 24 Jun 2021 23:48:52 +0200 Err bitreich.org 70
i Err bitreich.org 70
iutil: ship a clean-room version of strtonum for convenience Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M Makefile | 2 +- Err bitreich.org 70
i D strtonum.c | 65 ------------------------------- Err bitreich.org 70
i M util.c | 37 +++++++++++++++++++++++++------ Err bitreich.org 70
i M util.h | 8 +------- Err bitreich.org 70
i Err bitreich.org 70
i4 files changed, 32 insertions(+), 80 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/Makefile b/Makefile /scm/ics2txt/file/Makefile.gph bitreich.org 70
i@@ -7,7 +7,7 @@ CFLAGS = $D $W -g Err bitreich.org 70
i PREFIX = /usr/local Err bitreich.org 70
i MANPREFIX = ${PREFIX}/man Err bitreich.org 70
i Err bitreich.org 70
i-SRC = ical.c base64.c util.c strtonum.c Err bitreich.org 70
i+SRC = ical.c base64.c util.c Err bitreich.org 70
i HDR = ical.h base64.h util.h Err bitreich.org 70
i OBJ = ${SRC:.c=.o} Err bitreich.org 70
i AWK = tsv2ics.awk Err bitreich.org 70
1diff --git a/strtonum.c b/strtonum.c /scm/ics2txt/file/strtonum.c.gph bitreich.org 70
i@@ -1,65 +0,0 @@ Err bitreich.org 70
i-/* $OpenBSD: strtonum.c,v 1.8 2015/09/13 08:31:48 guenther Exp $ */ Err bitreich.org 70
i- Err bitreich.org 70
i-/* Err bitreich.org 70
i- * Copyright (c) 2004 Ted Unangst and Todd Miller Err bitreich.org 70
i- * All rights reserved. Err bitreich.org 70
i- * Err bitreich.org 70
i- * Permission to use, copy, modify, and distribute this software for any Err bitreich.org 70
i- * purpose with or without fee is hereby granted, provided that the above Err bitreich.org 70
i- * copyright notice and this permission notice appear in all copies. Err bitreich.org 70
i- * Err bitreich.org 70
i- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES Err bitreich.org 70
i- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF Err bitreich.org 70
i- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR Err bitreich.org 70
i- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES Err bitreich.org 70
i- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN Err bitreich.org 70
i- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF Err bitreich.org 70
i- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Err bitreich.org 70
i- */ Err bitreich.org 70
i- Err bitreich.org 70
i-#include <errno.h> Err bitreich.org 70
i-#include <limits.h> Err bitreich.org 70
i-#include <stdlib.h> Err bitreich.org 70
i- Err bitreich.org 70
i-#define INVALID 1 Err bitreich.org 70
i-#define TOOSMALL 2 Err bitreich.org 70
i-#define TOOLARGE 3 Err bitreich.org 70
i- Err bitreich.org 70
i-long long Err bitreich.org 70
i-strtonum(const char *numstr, long long minval, long long maxval, Err bitreich.org 70
i- const char **errstrp) Err bitreich.org 70
i-{ Err bitreich.org 70
i- long long ll = 0; Err bitreich.org 70
i- int error = 0; Err bitreich.org 70
i- char *ep; Err bitreich.org 70
i- struct errval { Err bitreich.org 70
i- const char *errstr; Err bitreich.org 70
i- int err; Err bitreich.org 70
i- } ev[4] = { Err bitreich.org 70
i- { NULL, 0 }, Err bitreich.org 70
i- { "invalid", EINVAL }, Err bitreich.org 70
i- { "too small", ERANGE }, Err bitreich.org 70
i- { "too large", ERANGE }, Err bitreich.org 70
i- }; Err bitreich.org 70
i- Err bitreich.org 70
i- ev[0].err = errno; Err bitreich.org 70
i- errno = 0; Err bitreich.org 70
i- if (minval > maxval) { Err bitreich.org 70
i- error = INVALID; Err bitreich.org 70
i- } else { Err bitreich.org 70
i- ll = strtoll(numstr, &ep, 10); Err bitreich.org 70
i- if (numstr == ep || *ep != '\0') Err bitreich.org 70
i- error = INVALID; Err bitreich.org 70
i- else if ((ll == LLONG_MIN && errno == ERANGE) || ll < minval) Err bitreich.org 70
i- error = TOOSMALL; Err bitreich.org 70
i- else if ((ll == LLONG_MAX && errno == ERANGE) || ll > maxval) Err bitreich.org 70
i- error = TOOLARGE; Err bitreich.org 70
i- } Err bitreich.org 70
i- if (errstrp != NULL) Err bitreich.org 70
i- *errstrp = ev[error].errstr; Err bitreich.org 70
i- errno = ev[error].err; Err bitreich.org 70
i- if (error) Err bitreich.org 70
i- ll = 0; Err bitreich.org 70
i- Err bitreich.org 70
i- return (ll); Err bitreich.org 70
i-} Err bitreich.org 70
1diff --git a/util.c b/util.c /scm/ics2txt/file/util.c.gph bitreich.org 70
i@@ -2,6 +2,7 @@ Err bitreich.org 70
i #include <assert.h> Err bitreich.org 70
i #include <errno.h> Err bitreich.org 70
i #include <stdint.h> Err bitreich.org 70
i+#include <limits.h> Err bitreich.org 70
i #include <stdlib.h> Err bitreich.org 70
i #include <string.h> Err bitreich.org 70
i #include <stdio.h> Err bitreich.org 70
i@@ -9,8 +10,6 @@ Err bitreich.org 70
i Err bitreich.org 70
i char *arg0; Err bitreich.org 70
i Err bitreich.org 70
i-/** logging **/ Err bitreich.org 70
i- Err bitreich.org 70
i static void Err bitreich.org 70
i _log(char const *fmt, va_list va) Err bitreich.org 70
i { Err bitreich.org 70
i@@ -54,8 +53,6 @@ debug(char const *fmt, ...) Err bitreich.org 70
i _log(fmt, va); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i-/** strings **/ Err bitreich.org 70
i- Err bitreich.org 70
i size_t Err bitreich.org 70
i strlcpy(char *d, char const *s, size_t sz) Err bitreich.org 70
i { Err bitreich.org 70
i@@ -137,7 +134,35 @@ strsplit(char *s, char **array, size_t len, char const *sep) Err bitreich.org 70
i return i; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i-/** memory **/ Err bitreich.org 70
i+long long Err bitreich.org 70
i+strtonum(char const *s, long long min, long long max, char const **errstr) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ long long ll = 0; Err bitreich.org 70
i+ char *end; Err bitreich.org 70
i+ Err bitreich.org 70
i+ assert(min < max); Err bitreich.org 70
i+ errno = 0; Err bitreich.org 70
i+ ll = strtoll(s, &end, 10); Err bitreich.org 70
i+ if ((errno == ERANGE && ll == LLONG_MIN) || ll < min) { Err bitreich.org 70
i+ if (errstr != NULL) Err bitreich.org 70
i+ *errstr = "too small"; Err bitreich.org 70
i+ return 0; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ if ((errno == ERANGE && ll == LLONG_MAX) || ll > max) { Err bitreich.org 70
i+ if (errstr != NULL) Err bitreich.org 70
i+ *errstr = "too large"; Err bitreich.org 70
i+ return 0; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ if (errno == EINVAL || *end != '\0') { Err bitreich.org 70
i+ if (errstr != NULL) Err bitreich.org 70
i+ *errstr = "invalid"; Err bitreich.org 70
i+ return 0; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ assert(errno == 0); Err bitreich.org 70
i+ if (errstr != NULL) Err bitreich.org 70
i+ *errstr = NULL; Err bitreich.org 70
i+ return ll; Err bitreich.org 70
i+} Err bitreich.org 70
i Err bitreich.org 70
i void * Err bitreich.org 70
i reallocarray(void *mem, size_t n, size_t sz) Err bitreich.org 70
i@@ -147,8 +172,6 @@ reallocarray(void *mem, size_t n, size_t sz) Err bitreich.org 70
i return realloc(mem, n * sz); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i-/** time **/ Err bitreich.org 70
i- Err bitreich.org 70
i time_t Err bitreich.org 70
i tztime(struct tm *tm, char const *tz) Err bitreich.org 70
i { Err bitreich.org 70
1diff --git a/util.h b/util.h /scm/ics2txt/file/util.h.gph bitreich.org 70
i@@ -8,13 +8,11 @@ Err bitreich.org 70
i Err bitreich.org 70
i #define LEN(x) (sizeof (x) / sizeof *(x)) Err bitreich.org 70
i Err bitreich.org 70
i-/** logging **/ Err bitreich.org 70
i extern char *arg0; Err bitreich.org 70
i+ Err bitreich.org 70
i void err(int, char const *fmt, ...); Err bitreich.org 70
i void warn(char const *fmt, ...); Err bitreich.org 70
i void debug(char const *fmt, ...); Err bitreich.org 70
i- Err bitreich.org 70
i-/** strings **/ Err bitreich.org 70
i size_t strlcpy(char *, char const *, size_t); Err bitreich.org 70
i char *strsep(char **, char const *); Err bitreich.org 70
i void strchomp(char *); Err bitreich.org 70
i@@ -22,11 +20,7 @@ char *strappend(char **, char const *); Err bitreich.org 70
i size_t strlcat(char *, char const *, size_t); Err bitreich.org 70
i long long strtonum(const char *, long long, long long, const char **); Err bitreich.org 70
i size_t strsplit(char *, char **, size_t, char const *); Err bitreich.org 70
i- Err bitreich.org 70
i-/** memory **/ Err bitreich.org 70
i void *reallocarray(void *, size_t, size_t); Err bitreich.org 70
i- Err bitreich.org 70
i-/** time **/ Err bitreich.org 70
i time_t tztime(struct tm *, char const *); Err bitreich.org 70
i Err bitreich.org 70
i #endif Err bitreich.org 70
.
Response:
text/plain