diff options
| -rw-r--r-- | chat.c | 36 | 
1 files changed, 31 insertions, 5 deletions
@@ -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 },  | 
