summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-02-10 03:58:00 -0500
committerJune McEnroe <june@causal.agency>2020-02-10 03:58:25 -0500
commit8e55c049b50e7a08dae819a5d7f704bdfaf4966c (patch)
tree63776714444a7062dc6cf46eefde8197b84ba9ba
parentRecalculate unreadLines on reflow (diff)
downloadcatgirl-8e55c049b50e7a08dae819a5d7f704bdfaf4966c.tar.gz
catgirl-8e55c049b50e7a08dae819a5d7f704bdfaf4966c.zip
Avoid coloring mentions if there are control codes
This was breaking leading color codes.
-rw-r--r--handle.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/handle.c b/handle.c
index 708acc7..fd2a67f 100644
--- a/handle.c
+++ b/handle.c
@@ -490,19 +490,16 @@ static bool isMention(const struct Message *msg) {
 }
 
 static const char *colorMentions(size_t id, struct Message *msg) {
-	char *mention;
-	char final;
-	if (strchr(msg->params[1], ':')) {
-		mention = strsep(&msg->params[1], ":");
-		final = ':';
-	} else if (strchr(msg->params[1], ' ')) {
-		mention = strsep(&msg->params[1], " ");
-		final = ' ';
-	} else {
-		mention = msg->params[1];
-		msg->params[1] = "";
-		final = '\0';
+	char *split = strchr(msg->params[1], ':');
+	if (!split) split = strchr(msg->params[1], ' ');
+	if (!split) split = &msg->params[1][strlen(msg->params[1])];
+	for (char *ch = msg->params[1]; ch < split; ++ch) {
+		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];
 	FILE *str = fmemopen(buf, sizeof(buf), "w");
@@ -520,7 +517,7 @@ static const char *colorMentions(size_t id, struct Message *msg) {
 		mention[len] = punct;
 		mention += len;
 	}
-	fputc(final, str);
+	fputc(delimit, str);
 
 	fclose(str);
 	buf[sizeof(buf) - 1] = '\0';
exman.1?h=2064.25&id=018d8e4beba009e368003d83d3354fc2c1b24db0&follow=1'>Update to OpenBSD 7.1 2062.73June McEnroe 2021-10-15Update to OpenBSD 7.0 2062.63June McEnroe 2021-08-29Update to Linux man-pages 5.13 2062.53Štěpán Němec 2021-08-26Update to NetBSD 9.2 2062.52June McEnroe 2021-08-26Support DESTDIR in install/uninstallJune McEnroe 2021-08-26Add version number generatorJune McEnroe 2021-08-22Add ISC license headerJune McEnroe 2021-08-22Update to Linux man-pages 5.12Štěpán Němec 2021-06-21Add manuals for macOS 11.3June McEnroe 2021-05-08Update to OpenBSD 6.9June McEnroe 2021-04-26Update to Linux man-pages 5.11June McEnroe 2021-04-26Update to FreeBSD 13.0June McEnroe 2021-01-27Completely rewrite how manuals are fetched and installedJune McEnroe Also add section 6 manuals from NetBSD and OpenBSD! 2020-12-14Update to man-pages-posix 2017-aJune McEnroe 2020-12-14Update to OpenBSD 6.8June McEnroe 2020-12-14Update to NetBSD 9.1June McEnroe 2020-12-14Update to man-pages 5.09June McEnroe 2020-12-14Update to FreeBSD 12.2June McEnroe 2020-06-08Update to OpenBSD 6.7June McEnroe 2020-05-04Add hack for macOS to search extra man sectionsJune McEnroe 2020-05-04Don't clear MANSECTJune McEnroe