From 7ebfeea33041f3d438e2de84760af950000393db Mon Sep 17 00:00:00 2001
From: C. McEnroe
Date: Sat, 8 Feb 2020 00:25:09 -0500
Subject: Handle NAMES reply
---
handle.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
(limited to 'handle.c')
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 .
*/
+#include
#include
#include
#include
@@ -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 },
--
cgit 1.4.1-2-gfad0