+ return IRC_WriteStrClient(Client, RPL_ENDOFWHO_MSG, Client_ID(Client),
+ Mask ? Mask : "*");
+}
+
+
+/**
+ * Handler for the IRC "WHO" command.
+ *
+ * See RFC 2812, 3.6.1 "Who query".
+ *
+ * @param Client The client from which this command has been received.
+ * @param Req Request structure with prefix and all parameters.
+ * @return CONNECTED or DISCONNECTED.
+ */
+GLOBAL bool
+IRC_WHO(CLIENT *Client, REQUEST *Req)
+{
+ bool only_ops, have_arg;
+ CHANNEL *chan;
+
+ assert (Client != NULL);
+ assert (Req != NULL);
+
+ if (Req->argc > 2)
+ return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG,
+ Client_ID(Client), Req->command);
+
+ only_ops = false;
+ have_arg = false;
+
+ if (Req->argc == 2) {
+ if (strcmp(Req->argv[1], "o") == 0)
+ only_ops = true;
+#ifdef STRICT_RFC
+ else
+ return IRC_WriteStrClient(Client,
+ ERR_NEEDMOREPARAMS_MSG,
+ Client_ID(Client),
+ Req->command);
+#endif
+ }