summary refs log tree commit diff
path: root/handle.c
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-02-08 00:25:09 -0500
committerJune McEnroe <june@causal.agency>2020-02-08 00:25:09 -0500
commit7ebfeea33041f3d438e2de84760af950000393db (patch)
tree33b4abec74c4c3b0760b68fa9d150e6ec10b336c /handle.c
parentAdd /nick (diff)
downloadcatgirl-7ebfeea33041f3d438e2de84760af950000393db.tar.gz
catgirl-7ebfeea33041f3d438e2de84760af950000393db.zip
Handle NAMES reply
Diffstat (limited to '')
-rw-r--r--handle.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/handle.c b/handle.c
index fe64f33..44329ff 100644
--- a/handle.c
+++ b/handle.c
@@ -14,6 +14,7 @@
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
 
+#include <assert.h>
 #include <ctype.h>
 #include <err.h>
 #include <stdbool.h>
@@ -225,6 +226,32 @@ static void handlePart(struct Message *msg) {
 	);
 }
 
+static void handleReplyNames(struct Message *msg) {
+	require(msg, false, 4);
+	size_t id = idFor(msg->params[2]);
+	char buf[1024];
+	size_t len = 0;
+	while (msg->params[3]) {
+		char *name = strsep(&msg->params[3], " ");
+		name += strspn(name, self.prefixes);
+		char *nick = strsep(&name, "!");
+		char *user = strsep(&name, "@");
+		enum Color color = (user ? hash(user) : Default);
+		completeAdd(id, nick, color);
+		int n = snprintf(
+			&buf[len], sizeof(buf) - len,
+			"%s\3%02d%s\3", (len ? ", " : ""), color, nick
+		);
+		assert(n > 0 && len + n < sizeof(buf));
+		len += n;
+	}
+	uiFormat(
+		id, Cold, tagTime(msg),
+		"In \3%02d%s\3 are %s",
+		hash(msg->params[2]), msg->params[2], buf
+	);
+}
+
 static void handleReplyNoTopic(struct Message *msg) {
 	require(msg, false, 2);
 	uiFormat(
@@ -359,6 +386,7 @@ static const struct Handler {
 	{ "005", handleReplyISupport },
 	{ "331", handleReplyNoTopic },
 	{ "332", handleReplyTopic },
+	{ "353", handleReplyNames },
 	{ "372", handleReplyMOTD },
 	{ "432", handleErrorErroneousNickname },
 	{ "433", handleErrorNicknameInUse },
It's like tr for PTYs. 2018-01-29Remove Tarmak remappings from vimJune McEnroe 2018-01-29Switch back to QWERTY on LinuxJune McEnroe I think the only thing I'll miss is N and E on home row (which was Tarmak 1, if I remember correctly). 2018-01-29Take fbclock font in env varJune McEnroe 2018-01-29Support fbclock fonts wider than 8June McEnroe 2018-01-29Take font path on fbclock argvJune McEnroe 2018-01-29Add fbclockJune McEnroe 2018-01-29Remove color from MakefileJune McEnroe 2018-01-29Set t_Co = 8June McEnroe Weirdly with t_Co = 16 yellow and bright white weren't showing up on TERM=linux. 2018-01-29Add :Q command aliasJune McEnroe It seemes I can't take my finger off the shift key fast enough. 2018-01-29Add setuid target for briJune McEnroe 2018-01-28Add init function to fb interfaceJune McEnroe 2018-01-28Add color.cJune McEnroe