summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--bounce.c4
-rw-r--r--bounce.h15
-rw-r--r--compat.h3
3 files changed, 11 insertions, 11 deletions
diff --git a/bounce.c b/bounce.c
index bee8aca..fc820a3 100644
--- a/bounce.c
+++ b/bounce.c
@@ -392,8 +392,8 @@ int main(int argc, char *argv[]) {
 		int error = stat(bindPath, &st);
 		if (error && errno != ENOENT) err(EX_CANTCREAT, "%s", bindPath);
 		if (S_ISDIR(st.st_mode)) {
-			strlcat(bindPath, "/", sizeof(bindPath));
-			strlcat(bindPath, bindHost, sizeof(bindPath));
+			size_t len = strlen(bindPath);
+			snprintf(&bindPath[len], sizeof(bindPath) - len, "/%s", bindHost);
 		}
 	}
 	if (!certPath[0]) {
diff --git a/bounce.h b/bounce.h
index 050d818..21a1d4e 100644
--- a/bounce.h
+++ b/bounce.h
@@ -138,14 +138,17 @@ static inline enum Cap capParse(const char *list, const char *values[CapBits]) {
 static inline const char *capList(enum Cap caps, const char *values[CapBits]) {
 	static char buf[1024];
 	buf[0] = '\0';
+	size_t len = 0;
 	for (size_t i = 0; i < ARRAY_LEN(CapNames); ++i) {
 		if (caps & (1 << i)) {
-			if (buf[0]) strlcat(buf, " ", sizeof(buf));
-			strlcat(buf, CapNames[i], sizeof(buf));
-			if (values && values[i]) {
-				strlcat(buf, "=", sizeof(buf));
-				strlcat(buf, values[i], sizeof(buf));
-			}
+			len += snprintf(
+				&buf[len], sizeof(buf) - len,
+				"%s%s%s%s",
+				(len ? " " : ""), CapNames[i],
+				(values && values[i] ? "=" : ""),
+				(values && values[i] ? values[i] : "")
+			);
+			if (len >= sizeof(buf)) break;
 		}
 	}
 	return buf;
diff --git a/compat.h b/compat.h
index 4559434..9675320 100644
--- a/compat.h
+++ b/compat.h
@@ -30,9 +30,6 @@
 
 // libcrypto defines these functions if libc doesn't.
 void explicit_bzero(void *b, size_t len);
-#ifndef strlcat
-size_t strlcat(char *restrict dst, const char *restrict src, size_t dstsize);
-#endif
 
 #ifndef SIGINFO
 #define SIGINFO SIGUSR2
Enroe Fixes mistaken highlight of: pngWrite(file, (uint8_t []) { 0, 0, 0 }, 3); 2019-02-18Match whitespace between * [] {}June McEnroe 2019-02-18Fix function-like #define regexJune McEnroe A define like #define FOO (1) is not function-like. 2019-02-18Match Tag in RustJune McEnroe 2019-02-18Match sh functions as TagJune McEnroe 2019-02-18Match Sh and Ss as Tag in mdocJune McEnroe 2019-02-18Match statics and typedefs as TagJune McEnroe 2019-02-18Clean up htmlHeaderJune McEnroe 2019-02-18Remove hi line numberingJune McEnroe Tags are much better for referring to specific parts of a file and line numbering is better done by a post-processing tool such as cat -n or producing a two-column HTML <table>. 2019-02-18Add Tag class to hiJune McEnroe 2019-02-17Generate HTML with hi -n -f html -o anchorJune McEnroe Running hi twice to insert stuff between the head and the content is a bit of a hack but oh well. 2019-02-17Add hi -f html -o anchor for line number linksJune McEnroe 2019-02-17Simplify temp trap in upJune McEnroe 2019-02-17Add line numbers to hiJune McEnroe Renames previous -n option to -m to stay consistent with cat -n. Prefixing lines with line numbers affects where the first tab indent ends up relative to the text above it. Not sure if it's worth fixing somehow. 2019-02-17Always split spans after newlinesJune McEnroe Simplifies ANSI and IRC output code, and prepares for line numbered output. 2019-02-15Color format specifiers light cyan in vimJune McEnroe 2019-02-15Highlight Interp as yellowJune McEnroe 2019-02-15Highlight strings in sh command substitutionsJune McEnroe 2019-02-15Add nmap gpJune McEnroe 2019-02-14Avoid newline when copying URL to pasteboardJune McEnroe 2019-02-13Add forgotten "sixth" book of H2G2June McEnroe