icompat: add strlcpy, strlcat, for glibc - stagit-gopher - A git gopher frontend. (mirror) Err bitreich.org 70 hgit clone git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/stagit-gopher/ URL:git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/stagit-gopher/ bitreich.org 70 1Log /scm/stagit-gopher/log.gph bitreich.org 70 1Files /scm/stagit-gopher/files.gph bitreich.org 70 1Refs /scm/stagit-gopher/refs.gph bitreich.org 70 1Tags /scm/stagit-gopher/tag bitreich.org 70 1README /scm/stagit-gopher/file/README.gph bitreich.org 70 1LICENSE /scm/stagit-gopher/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 55556b66bc57be0d82831b9cb353b79816216316 /scm/stagit-gopher/commit/55556b66bc57be0d82831b9cb353b79816216316.gph bitreich.org 70 1parent 543e74e64fcffd0181cb94f63a4a4029e44c7e4f /scm/stagit-gopher/commit/543e74e64fcffd0181cb94f63a4a4029e44c7e4f.gph bitreich.org 70 hAuthor: Hiltjo Posthuma URL:mailto:hiltjo@codemadness.org bitreich.org 70 iDate: Fri, 25 Dec 2015 17:48:46 +0100 Err bitreich.org 70 i Err bitreich.org 70 icompat: add strlcpy, strlcat, for glibc Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M Makefile | 11 +++++++---- Err bitreich.org 70 i M config.mk | 5 +++++ Err bitreich.org 70 i A strlcat.c | 55 +++++++++++++++++++++++++++++++ Err bitreich.org 70 i A strlcpy.c | 50 +++++++++++++++++++++++++++++++ Err bitreich.org 70 i M urmoms-index.c | 1 + Err bitreich.org 70 i M urmoms.c | 1 + Err bitreich.org 70 i Err bitreich.org 70 i6 files changed, 119 insertions(+), 4 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/Makefile b/Makefile /scm/stagit-gopher/file/Makefile.gph bitreich.org 70 i@@ -5,6 +5,9 @@ VERSION = 0.1 Err bitreich.org 70 i SRC = \ Err bitreich.org 70 i urmoms.c\ Err bitreich.org 70 i urmoms-index.c Err bitreich.org 70 i+COMPATSRC = \ Err bitreich.org 70 i+ strlcat.c\ Err bitreich.org 70 i+ strlcpy.c Err bitreich.org 70 i BIN = \ Err bitreich.org 70 i urmoms\ Err bitreich.org 70 i urmoms-index Err bitreich.org 70 i@@ -15,9 +18,9 @@ DOC = \ Err bitreich.org 70 i LICENSE\ Err bitreich.org 70 i README\ Err bitreich.org 70 i TODO Err bitreich.org 70 i-HDR = Err bitreich.org 70 i+HDR = compat.h Err bitreich.org 70 i Err bitreich.org 70 i-OBJ = ${SRC:.c=.o} Err bitreich.org 70 i+OBJ = ${SRC:.c=.o} ${EXTRAOBJ} Err bitreich.org 70 i Err bitreich.org 70 i all: $(BIN) Err bitreich.org 70 i Err bitreich.org 70 i@@ -42,10 +45,10 @@ config.h: Err bitreich.org 70 i @echo creating $@ from config.def.h Err bitreich.org 70 i @cp config.def.h $@ Err bitreich.org 70 i Err bitreich.org 70 i-urmoms: urmoms.o Err bitreich.org 70 i+urmoms: urmoms.o ${EXTRAOBJ} Err bitreich.org 70 i ${CC} -o $@ urmoms.o ${LDFLAGS} Err bitreich.org 70 i Err bitreich.org 70 i-urmoms-index: urmoms-index.o Err bitreich.org 70 i+urmoms-index: urmoms-index.o ${EXTRAOBJ} Err bitreich.org 70 i ${CC} -o $@ urmoms-index.o ${LDFLAGS} Err bitreich.org 70 i Err bitreich.org 70 i clean: Err bitreich.org 70 1diff --git a/config.mk b/config.mk /scm/stagit-gopher/file/config.mk.gph bitreich.org 70 i@@ -26,5 +26,10 @@ LDFLAGS = ${LIBS} Err bitreich.org 70 i # -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -D_BSD_SOURCE ${INCS} Err bitreich.org 70 i #LDFLAGS = -static -s ${LIBS} Err bitreich.org 70 i Err bitreich.org 70 i+# uncomment for compat Err bitreich.org 70 i+CFLAGS += -DCOMPAT Err bitreich.org 70 i+# uncomment if your libc doesn't support strlcat, strlcpy. Err bitreich.org 70 i+EXTRAOBJ = strlcat.o strlcpy.o Err bitreich.org 70 i+ Err bitreich.org 70 i # compiler and linker Err bitreich.org 70 i #CC = cc Err bitreich.org 70 1diff --git a/strlcat.c b/strlcat.c /scm/stagit-gopher/file/strlcat.c.gph bitreich.org 70 i@@ -0,0 +1,55 @@ Err bitreich.org 70 i+/* $OpenBSD: strlcat.c,v 1.15 2015/03/02 21:41:08 millert Exp $ */ Err bitreich.org 70 i+ Err bitreich.org 70 i+/* Err bitreich.org 70 i+ * Copyright (c) 1998, 2015 Todd C. Miller 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 Err bitreich.org 70 i+#include Err bitreich.org 70 i+ Err bitreich.org 70 i+/* Err bitreich.org 70 i+ * Appends src to string dst of size dsize (unlike strncat, dsize is the Err bitreich.org 70 i+ * full size of dst, not space left). At most dsize-1 characters Err bitreich.org 70 i+ * will be copied. Always NUL terminates (unless dsize <= strlen(dst)). Err bitreich.org 70 i+ * Returns strlen(src) + MIN(dsize, strlen(initial dst)). Err bitreich.org 70 i+ * If retval >= dsize, truncation occurred. Err bitreich.org 70 i+ */ Err bitreich.org 70 i+size_t Err bitreich.org 70 i+strlcat(char *dst, const char *src, size_t dsize) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ const char *odst = dst; Err bitreich.org 70 i+ const char *osrc = src; Err bitreich.org 70 i+ size_t n = dsize; Err bitreich.org 70 i+ size_t dlen; Err bitreich.org 70 i+ Err bitreich.org 70 i+ /* Find the end of dst and adjust bytes left but don't go past end. */ Err bitreich.org 70 i+ while (n-- != 0 && *dst != '\0') Err bitreich.org 70 i+ dst++; Err bitreich.org 70 i+ dlen = dst - odst; Err bitreich.org 70 i+ n = dsize - dlen; Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (n-- == 0) Err bitreich.org 70 i+ return(dlen + strlen(src)); Err bitreich.org 70 i+ while (*src != '\0') { Err bitreich.org 70 i+ if (n != 0) { Err bitreich.org 70 i+ *dst++ = *src; Err bitreich.org 70 i+ n--; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ src++; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ *dst = '\0'; Err bitreich.org 70 i+ Err bitreich.org 70 i+ return(dlen + (src - osrc)); /* count does not include NUL */ Err bitreich.org 70 i+} Err bitreich.org 70 1diff --git a/strlcpy.c b/strlcpy.c /scm/stagit-gopher/file/strlcpy.c.gph bitreich.org 70 i@@ -0,0 +1,50 @@ Err bitreich.org 70 i+/* $OpenBSD: strlcpy.c,v 1.12 2015/01/15 03:54:12 millert Exp $ */ Err bitreich.org 70 i+ Err bitreich.org 70 i+/* Err bitreich.org 70 i+ * Copyright (c) 1998, 2015 Todd C. Miller 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 Err bitreich.org 70 i+#include Err bitreich.org 70 i+ Err bitreich.org 70 i+/* Err bitreich.org 70 i+ * Copy string src to buffer dst of size dsize. At most dsize-1 Err bitreich.org 70 i+ * chars will be copied. Always NUL terminates (unless dsize == 0). Err bitreich.org 70 i+ * Returns strlen(src); if retval >= dsize, truncation occurred. Err bitreich.org 70 i+ */ Err bitreich.org 70 i+size_t Err bitreich.org 70 i+strlcpy(char *dst, const char *src, size_t dsize) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ const char *osrc = src; Err bitreich.org 70 i+ size_t nleft = dsize; Err bitreich.org 70 i+ Err bitreich.org 70 i+ /* Copy as many bytes as will fit. */ Err bitreich.org 70 i+ if (nleft != 0) { Err bitreich.org 70 i+ while (--nleft != 0) { Err bitreich.org 70 i+ if ((*dst++ = *src++) == '\0') Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ /* Not enough room in dst, add NUL and traverse rest of src. */ Err bitreich.org 70 i+ if (nleft == 0) { Err bitreich.org 70 i+ if (dsize != 0) Err bitreich.org 70 i+ *dst = '\0'; /* NUL-terminate dst */ Err bitreich.org 70 i+ while (*src++) Err bitreich.org 70 i+ ; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ return(src - osrc - 1); /* count does not include NUL */ Err bitreich.org 70 i+} Err bitreich.org 70 1diff --git a/urmoms-index.c b/urmoms-index.c /scm/stagit-gopher/file/urmoms-index.c.gph bitreich.org 70 i@@ -12,6 +12,7 @@ Err bitreich.org 70 i Err bitreich.org 70 i #include Err bitreich.org 70 i Err bitreich.org 70 i+#include "compat.h" Err bitreich.org 70 i #include "config.h" Err bitreich.org 70 i Err bitreich.org 70 i static git_repository *repo; Err bitreich.org 70 1diff --git a/urmoms.c b/urmoms.c /scm/stagit-gopher/file/urmoms.c.gph bitreich.org 70 i@@ -12,6 +12,7 @@ Err bitreich.org 70 i Err bitreich.org 70 i #include Err bitreich.org 70 i Err bitreich.org 70 i+#include "compat.h" Err bitreich.org 70 i #include "config.h" Err bitreich.org 70 i Err bitreich.org 70 i struct commitinfo { Err bitreich.org 70 .