diff options
author | Curtis McEnroe | 2018-08-03 18:58:19 -0400 |
---|---|---|
committer | Curtis McEnroe | 2018-08-03 18:58:19 -0400 |
commit | c609684d2bb7b3e544225b49b748f9a6fa15b4f0 (patch) | |
tree | abba9a426e1f2277f7a66039dc01b6e7b1be6134 /chat.c | |
parent | 3b490562d4b531218510e907e3b4dd18f946d066 (diff) |
Send a WHO in response to NAMES to get usernames
Other than this slight hack, I think coloring by username rather than nick is a much better idea.
Diffstat (limited to 'chat.c')
-rw-r--r-- | chat.c | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/chat.c b/chat.c index 0303004..7058802 100644 --- a/chat.c +++ b/chat.c @@ -294,14 +294,38 @@ static void handleTopic(char *prefix, char *params) { uiTopic(topic); } -static void handle353(char *prefix, char *params) { +static void handle366(char *prefix, char *params) { (void)prefix; shift(¶ms); + char *chan = shift(¶ms); + clientFmt("WHO %s\r\n", chan); +} + +static char whoBuf[4096]; +static size_t whoLen; +static void handle352(char *prefix, char *params) { + (void)prefix; + shift(¶ms); + shift(¶ms); + char *user = shift(¶ms); + shift(¶ms); + shift(¶ms); + char *nick = shift(¶ms); + whoLen += snprintf( + &whoBuf[whoLen], sizeof(whoBuf) - whoLen, + "%s\3%d%s\3", + (whoLen ? ", " : ""), color(user), nick + ); +} +static void handle315(char *prefix, char *params) { + (void)prefix; shift(¶ms); char *chan = shift(¶ms); - char *names = shift(¶ms); - // TODO: Do a WHO instead to get usernames - uiFmt("In %s are %s", chan, names); + whoLen = 0; + uiFmt( + "In \3%d%s\3 are %s", + color(chan), chan, whoBuf + ); } static void handlePrivmsg(char *prefix, char *params) { @@ -324,8 +348,10 @@ static const struct { Handler handler; } HANDLERS[] = { { "001", handle001 }, + { "315", handle315 }, { "332", handle332 }, - { "353", handle353 }, + { "352", handle352 }, + { "366", handle366 }, { "JOIN", handleJoin }, { "NOTICE", handleNotice }, { "PART", handlePart }, |