summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-02-23 22:44:19 -0500
committerJune McEnroe <june@causal.agency>2020-02-23 22:44:19 -0500
commitc3c40d738ba7da34429eb98cca28640513d22ba3 (patch)
tree7e14b82a89bb6b03ea7fd39877636f1f2c4906cc
parentHandle ERR_CHANOPRIVSNEEDED (diff)
downloadcatgirl-c3c40d738ba7da34429eb98cca28640513d22ba3.tar.gz
catgirl-c3c40d738ba7da34429eb98cca28640513d22ba3.zip
Accumulate mode changes into a buffer for one message
Diffstat (limited to '')
-rw-r--r--handle.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/handle.c b/handle.c
index f49ed3b..2dc4654 100644
--- a/handle.c
+++ b/handle.c
@@ -495,6 +495,7 @@ static void handleMode(struct Message *msg) {
 	uint id = idFor(msg->params[0]);
 	bool set = false;
 	uint param = 2;
+	char buf[1024] = "";
 	for (char *ch = msg->params[1]; *ch; ++ch) {
 		if (*ch == '+') {
 			set = true;
@@ -506,11 +507,8 @@ static void handleMode(struct Message *msg) {
 			char *nick = msg->params[param++];
 			char *mode = strchr(network.prefixModes, *ch);
 			char prefix = network.prefixes[mode - network.prefixModes];
-			// TODO: Invert nick if targeting self?
-			uiFormat(
-				id, (!strcmp(nick, self.nick) ? Hot : Cold), tagTime(msg),
-				"\3%02d%s\3\t%s \3%02d%c%s\3",
-				hash(msg->user), msg->nick,
+			catf(
+				buf, sizeof(buf), ", %s \3%02d%c%s\3",
 				(set ? "grants" : "revokes"),
 				completeColor(id, nick), prefix, nick
 			);
@@ -519,10 +517,8 @@ static void handleMode(struct Message *msg) {
 			assert(param < ParamCap);
 			char *mask = msg->params[param++];
 			if (*ch == 'b') {
-				uiFormat(
-					id, Cold, tagTime(msg),
-					"\3%02d%s\3\t%s %s from \3%02d%s\3",
-					hash(msg->user), msg->nick,
+				catf(
+					buf, sizeof(buf), ", %s %s from \3%02d%s\3",
 					(set ? "bans" : "unbans"),
 					mask,
 					hash(msg->params[0]), msg->params[0]
@@ -532,10 +528,8 @@ static void handleMode(struct Message *msg) {
 			const char *list = (const char[]) { *ch, '\0' };
 			if (*ch == network.excepts) list = "except";
 			if (*ch == network.invex) list = "invite";
-			uiFormat(
-				id, Cold, tagTime(msg),
-				"\3%02d%s\3\t%s %s %s the \3%02d%s\3 %s list",
-				hash(msg->user), msg->nick,
+			catf(
+				buf, sizeof(buf), ", %s %s %s the \3%02d%s\3 %s list",
 				(set ? "adds" : "removes"),
 				mask,
 				(set ? "to" : "from"),
@@ -551,6 +545,11 @@ static void handleMode(struct Message *msg) {
 			// TODO
 		}
 	}
+	if (strlen(buf) < 2) return;
+	uiFormat(
+		id, Cold, tagTime(msg),
+		"\3%02d%s\3\t%s", hash(msg->user), msg->nick, &buf[2]
+	);
 }
 
 static void handleErrorChanopPrivsNeeded(struct Message *msg) {
=1'>Make sans6x8 double quote narrowerJune McEnroe 2018-09-28Add greek glyphs to sans6x8June McEnroe 2018-09-28Add png target in etc/psfJune McEnroe 2018-09-28Disable visual bell in light terminal profileJune McEnroe 2018-09-28Add psf2pngJune McEnroe 2018-09-27Add HJKL for moving glyphs to psfedJune McEnroe 2018-09-27Move psfed paste to edit modeJune McEnroe 2018-09-27Export PWDJune McEnroe Without it, $(PWD) is unset in GNU make. 2018-09-27Add sans6x8 PSF2 fontJune McEnroe 2018-09-26Add copy paste to psfedJune McEnroe 2018-09-25Add r to psfed for invertJune McEnroe 2018-09-24Add psfed, a PSF2 font editorJune McEnroe 2018-09-21Add scheme -i to swap white and blackJune McEnroe 2018-09-21Map caps lock to escape on Linux consoleJune McEnroe 2018-09-19Fix README mandoc lintsJune McEnroe 2018-09-19Un-NOT trans.alpha values in pngoJune McEnroe 2018-09-18Refactor reads in pngo and clear palette between filesJune McEnroe 2018-09-17Add tRNS support to pngoJune McEnroe 2018-09-11Move gfx man pages to gfx/manJune McEnroe 2018-09-11Move bin man pages to bin/manJune McEnroe 2018-09-11Rewrite gfx.7 and render plaintext READMEJune McEnroe 2018-09-11Remove GAMES from BINSJune McEnroe 2018-09-11Rewrite bin.7 and render to plaintext READMEJune McEnroe 2018-09-11Add "blank" lines to man pagesJune McEnroe 2018-09-10Add mdoc syntax fileJune McEnroe 2018-09-08Fix Nm usage in multi-name man pagesJune McEnroe 2018-09-08Put real dates on man pagesJune McEnroe 2018-09-08Replace gfx README with REAMDE.7June McEnroe 2018-09-08Link gfx man pages in ~/.localJune McEnroe