summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-11-08 15:16:25 -0500
committerJune McEnroe <june@causal.agency>2020-11-08 15:16:25 -0500
commitded0455d3eacbf7fef25dddf0c451c05df8efc99 (patch)
tree39bf7b25df0bb42d9cf76070d75c2bfb41667e4c
parentRemove static buffer from capList (diff)
downloadcatgirl-ded0455d3eacbf7fef25dddf0c451c05df8efc99.tar.gz
catgirl-ded0455d3eacbf7fef25dddf0c451c05df8efc99.zip
Remove static buffer from colorMentions
-rw-r--r--handle.c26
1 files changed, 12 insertions, 14 deletions
diff --git a/handle.c b/handle.c
index 28824d4..9c37f34 100644
--- a/handle.c
+++ b/handle.c
@@ -1160,7 +1160,7 @@ static bool isMention(const struct Message *msg) {
 	return false;
 }
 
-static const char *colorMentions(uint id, struct Message *msg) {
+static void colorMentions(struct Cat *cat, uint id, struct Message *msg) {
 	char *split = strstr(msg->params[1], ": ");
 	if (!split) {
 		split = strchr(msg->params[1], ' ');
@@ -1168,19 +1168,16 @@ static const char *colorMentions(uint id, struct Message *msg) {
 	}
 	if (!split) split = &msg->params[1][strlen(msg->params[1])];
 	for (char *ch = msg->params[1]; ch < split; ++ch) {
-		if (iscntrl(*ch)) return "";
+		if (iscntrl(*ch)) return;
 	}
 	char delimit = *split;
 	char *mention = msg->params[1];
 	msg->params[1] = (delimit ? &split[1] : split);
 	*split = '\0';
 
-	static char buf[1024];
-	buf[0] = '\0';
-	struct Cat cat = { buf, sizeof(buf), 0 };
 	while (*mention) {
 		size_t skip = strspn(mention, ",<> ");
-		catf(&cat, "%.*s", (int)skip, mention);
+		catf(cat, "%.*s", (int)skip, mention);
 		mention += skip;
 
 		size_t len = strcspn(mention, ",<> ");
@@ -1188,15 +1185,14 @@ static const char *colorMentions(uint id, struct Message *msg) {
 		mention[len] = '\0';
 		enum Color color = completeColor(id, mention);
 		if (color != Default) {
-			catf(&cat, "\3%02d%s\3", color, mention);
+			catf(cat, "\3%02d%s\3", color, mention);
 		} else {
-			catf(&cat, "%s", mention);
+			catf(cat, "%s", mention);
 		}
 		mention[len] = punct;
 		mention += len;
 	}
-	catf(&cat, "%c", delimit);
-	return buf;
+	catf(cat, "%c", delimit);
 }
 
 static void handlePrivmsg(struct Message *msg) {
@@ -1223,6 +1219,8 @@ static void handlePrivmsg(struct Message *msg) {
 	}
 	if (heat > Ice) urlScan(id, msg->nick, msg->params[1]);
 
+	char buf[1024] = "";
+	struct Cat cat = { buf, sizeof(buf), 0 };
 	if (notice) {
 		if (id != Network) {
 			logFormat(id, tagTime(msg), "-%s- %s", msg->nick, msg->params[1]);
@@ -1234,21 +1232,21 @@ static void handlePrivmsg(struct Message *msg) {
 		);
 	} else if (action) {
 		logFormat(id, tagTime(msg), "* %s %s", msg->nick, msg->params[1]);
-		const char *mentions = colorMentions(id, msg);
+		colorMentions(&cat, id, msg);
 		uiFormat(
 			id, heat, tagTime(msg),
 			"%s\35\3%d* %s\17\35\t%s%s",
 			(mention ? "\26" : ""), hash(msg->user), msg->nick,
-			mentions, msg->params[1]
+			buf, msg->params[1]
 		);
 	} else {
 		logFormat(id, tagTime(msg), "<%s> %s", msg->nick, msg->params[1]);
-		const char *mentions = colorMentions(id, msg);
+		colorMentions(&cat, id, msg);
 		uiFormat(
 			id, heat, tagTime(msg),
 			"%s\3%d<%s>\17\t%s%s",
 			(mention ? "\26" : ""), hash(msg->user), msg->nick,
-			mentions, msg->params[1]
+			buf, msg->params[1]
 		);
 	}
 }
tle='2021-09-22 18:46:14 -0400'>2021-09-22Remove Linux-specific utilitiesJune McEnroe I haven't used these in ages. 2021-09-22Call sandbox in CGI modeJune McEnroe Otherwise upload won't actually work. 2021-09-22Support HTTP PUT in upJune McEnroe For use by Palaver[1]. Unfortunately, at least in the current App Store version of Palaver, this doesn't work correctly with basic auth. [1]: https://palaverapp.com/guides/commands/set.html#ui-image_service 2021-09-22Remove default faviconJune McEnroe I hate these things and also this one sucks. 2021-09-21Use Z_FILTERED strategyJune McEnroe 2021-09-21Recalculate various lengths only as neededJune McEnroe This actually speeds things up quite a bit, saving roughly a second on a big PNG screenshot. Almost all the remaining time is spent in deflate. 2021-09-21Rewrite pngo, add explicit optionsJune McEnroe Interesting to see how my code habits have changed. 2021-09-16Fix /* **/ comment matchingJune McEnroe 2021-09-15Remove typer, add downgrade to READMEJune McEnroe 2021-09-15Set bot mode on downgradeJune McEnroe 2021-09-15Enter capsicum in downgradeJune McEnroe 2021-09-15Factor out common parts of downgrade messagesJune McEnroe Also bump the message cap to 1024 because that is ostensibly useful for replying to older messages. 2021-09-14Add downgrade IRC botJune McEnroe 2021-09-14Sort by title if authors matchJune McEnroe There are probably better things to sort by but title definitely always exists. 2021-09-13Swap-remove tags as they're foundJune McEnroe This makes it even faster. From ~1s on a sqlite3.c amalgamation to ~0.85s. 2021-09-12Replace htagml regex with strncmpJune McEnroe Since ctags only ever produces regular expressions of the form /^re$/ or /^re/ with no other special characters, instead unescape the pattern and simply use strncmp. Running on a sqlite3.c amalgamation, the regex version takes ~37s while the strncmp version takes ~1s, producing identical output. Big win! 2021-09-11Also defer printing comment for lone close-parensJune McEnroe 2021-09-10Publish "git-comment"June McEnroe 2021-09-10Add git comment --pretty optionJune McEnroe 2021-09-08Defer printing comment if line is blank or closing braceJune McEnroe This fixes badly indented comments. 2021-09-08Up default min-repeat to 30 linesJune McEnroe 2021-09-08Handle dirty lines in git-commentJune McEnroe 2021-09-08Document and install git-commentJune McEnroe 2021-09-08Add repeat and all options to git-commentJune McEnroe 2021-09-08Add group threshold to git-commentJune McEnroe