summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-02-08 23:29:32 -0500
committerJune McEnroe <june@causal.agency>2020-02-08 23:29:32 -0500
commitb30b93f67212c8d4c172972fd3399cabb8d1be6e (patch)
treeaebe7e4c9b2d0875ce9b9a39020c4d2298879ddd
parentUse unexpected NAMES replies to populate complete (diff)
downloadcatgirl-b30b93f67212c8d4c172972fd3399cabb8d1be6e.tar.gz
catgirl-b30b93f67212c8d4c172972fd3399cabb8d1be6e.zip
Use fmemopen to build colored mentions string
-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;
 }
 
7Set cursor theme and sizeJune McEnroe 2021-02-07Use scrot for up -s if no screencaptureJune McEnroe Still missing putting the URL in an X selection. 2021-02-07Enable mouse acceleration in XJune McEnroe 2021-02-07Set colours for Xt and cwmJune McEnroe And increase XTerm internalBorder. 2021-02-07Set urgency on bell in xtermJune McEnroe 2021-02-07Add bindings for brightness controlJune McEnroe Weirdly the Fn key doesn't change how the F row registers... I wonder if I can do something about that. 2021-02-07Set X key repeat rateJune McEnroe 2021-02-07Bump font size to 12June McEnroe 11 is what I use on macOS, but I feel like my eyes are working harder here. 2021-02-07Fully configure and rebind cwmJune McEnroe This is sort of a mix of trying to emulate macOS somewhat for my muscle memory and just rebinding some of the cwm defaults to use 4- rather than M-. 2021-02-07Add BintiJune McEnroe 2021-02-07Finish configuring xtermJune McEnroe 2021-02-06Enable tapping, reverse scroll, set scaling in wsconsctlJune McEnroe 2021-02-06Set root window to black on purple snowJune McEnroe 2021-02-06Add xmodmap configurationJune McEnroe 2021-02-06Add initial OpenBSD X configurationJune McEnroe cwm still needs a lot more rebinding, and I need to actually look at its other options. xterm definitely still needs some configuration, but I at least managed to get it to use a decent looking font. Very happy that OpenBSD includes Luxi Mono, which is what my usual font, Go Mono, is based on anyway. Still missing is xmodmap and such. 2021-02-06Add xterm output to schemeJune McEnroe