about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--handle.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/handle.c b/handle.c
index a2d0ddd..d268d14 100644
--- a/handle.c
+++ b/handle.c
@@ -491,6 +491,7 @@ static void handleMode(struct Message *msg) {
 		// TODO: User mode changes.
 		return;
 	}
+
 	uint id = idFor(msg->params[0]);
 	bool set = false;
 	uint param = 2;
@@ -499,6 +500,7 @@ static void handleMode(struct Message *msg) {
 			set = true;
 		} else if (*ch == '-') {
 			set = false;
+
 		} else if (strchr(network.prefixModes, *ch)) {
 			assert(param < ParamCap);
 			char *nick = msg->params[param++];
@@ -512,8 +514,35 @@ static void handleMode(struct Message *msg) {
 				(set ? "grants" : "revokes"),
 				completeColor(id, nick), prefix, nick
 			);
+
 		} else if (strchr(network.listModes, *ch)) {
-			// TODO
+			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,
+					(set ? "bans" : "unbans"),
+					mask,
+					hash(msg->params[0]), msg->params[0]
+				);
+				continue;
+			}
+			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,
+				(set ? "adds" : "removes"),
+				mask,
+				(set ? "to" : "from"),
+				hash(msg->params[0]), msg->params[0],
+				list
+			);
+
 		} else if (strchr(network.paramModes, *ch)) {
 			// TODO
 		} else if (strchr(network.setParamModes, *ch)) {
td>June 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