summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--handle.c37
1 files changed, 14 insertions, 23 deletions
diff --git a/handle.c b/handle.c
index b4601e4..cf0e853 100644
--- a/handle.c
+++ b/handle.c
@@ -406,34 +406,25 @@ static const char *colorMentions(size_t id, struct Message *msg) {
 	}
 
 	static char buf[1024];
-	size_t len = 0;
+	FILE *str = fmemopen(buf, sizeof(buf), "w");
+	if (!str) err(EX_OSERR, "fmemopen");
+
 	while (*mention) {
 		size_t skip = strspn(mention, ", ");
-		int n = snprintf(
-			&buf[len], sizeof(buf) - len,
-			"%.*s", (int)skip, mention
-		);
-		assert(n >= 0 && len + n < sizeof(buf));
-		len += n;
+		fwrite(mention, skip, 1, str);
 		mention += skip;
 
-		size_t word = strcspn(mention, ", ");
-		char punct = mention[word];
-		mention[word] = '\0';
-
-		n = snprintf(
-			&buf[len], sizeof(buf) - len,
-			"\3%02d%s\3", completeColor(id, mention), mention
-		);
-		assert(n > 0 && len + n < sizeof(buf));
-		len += n;
-
-		mention[word] = punct;
-		mention += word;
+		size_t len = strcspn(mention, ", ");
+		char punct = mention[len];
+		mention[len] = '\0';
+		fprintf(str, "\3%02d%s\3", completeColor(id, mention), mention);
+		mention[len] = punct;
+		mention += len;
 	}
-	assert(len + 1 < sizeof(buf));
-	buf[len++] = final;
-	buf[len] = '\0';
+	fputc(final, str);
+
+	fclose(str);
+	buf[sizeof(buf) - 1] = '\0';
 	return buf;
 }
 
sg'> 2021-03-05build: Add OpenSSL includes to libcompatJune McEnroe Some compat sources (getentropy_linux.c for example) require OpenSSL. Reported by Robert Scheck. 2020-12-15Import LibreSSL 3.3.1June McEnroe 2020-11-24Import LibreSSL 3.3.0June McEnroe 2020-10-22Import LibreSSL 3.2.2June McEnroe 2020-09-29Import LibreSSL 3.2.1June McEnroe 2020-09-29import: Add m4/ax_add_fortify_source.m4June McEnroe 2020-08-05build: Add README.7 to EXTRA_DIST 3.2.0June McEnroe 2020-08-03doc: Indicate that only OpenSSL 1.1.1b and newer workJune McEnroe