tutil.[ch]: add strlcpy for platforms that do not have it - vote - simple cgi v… | |
git clone git://src.adamsgaard.dk/vote | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 5190a3453c2755d07cb5e6afeb9689d27275d4da | |
parent a6ae3f0db3f76e55a4ecc84bf09ee62e629881e3 | |
Author: Anders Damsgaard <[email protected]> | |
Date: Sun, 27 Sep 2020 08:59:58 +0200 | |
util.[ch]: add strlcpy for platforms that do not have it | |
Diffstat: | |
M util.c | 24 ++++++++++++++++++++++++ | |
M util.h | 1 + | |
2 files changed, 25 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/util.c b/util.c | |
t@@ -228,3 +228,27 @@ escapechars(char *s) | |
} | |
} | |
} | |
+ | |
+#ifdef NEED_STRLCPY /* OpenBSD implementation */ | |
+size_t | |
+strlcpy(char *dst, const char *src, size_t dsize) { | |
+ const char *osrc = src; | |
+ size_t nleft = dsize; | |
+ | |
+ if (nleft != 0) { | |
+ while (--nleft != 0) { | |
+ if ((*dst++= *src++) == '\0') | |
+ break; | |
+ } | |
+ } | |
+ | |
+ if (nleft == 0) { | |
+ if (dsize != 0) | |
+ *dst = '\0'; | |
+ while (*src++) | |
+ ; | |
+ } | |
+ | |
+ return(src - osrc - 1); | |
+} | |
+#endif /* NEED_STRLCPY */ | |
diff --git a/util.h b/util.h | |
t@@ -17,3 +17,4 @@ int uriencode(const char *s, char *buf, size_t bufsiz); | |
int utf8pad(char *buf, size_t bufsiz, const char *s, size_t len, int pad); | |
void xmlencode(const char *s); | |
void escapechars(char *s); | |
+size_t strlcpy(char *dst, const char *src, size_t dsize); |