diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-03-26 23:39:23 -0400 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-03-26 23:39:23 -0400 |
commit | b95932eb5a897fd264f3762493285dd7037dccba (patch) | |
tree | 469be96119961205167ae1c5ea23ca638507d10c /irc_commands.c | |
parent | 63a520b8ce1776442f2f79528ddd23fb0de51f94 (diff) |
Added WHOIS command.
Diffstat (limited to 'irc_commands.c')
-rw-r--r-- | irc_commands.c | 68 |
1 files changed, 24 insertions, 44 deletions
diff --git a/irc_commands.c b/irc_commands.c index e5a97ad9..fbba928a 100644 --- a/irc_commands.c +++ b/irc_commands.c @@ -156,6 +156,28 @@ static void irc_cmd_part( irc_t *irc, char **cmd ) } } +static void irc_cmd_whois( irc_t *irc, char **cmd ) +{ + char *nick = cmd[1]; + irc_user_t *iu = irc_user_find( irc, nick ); + + if( iu ) + irc_send_whois( iu ); + else + irc_send_num( irc, 401, "%s :Nick does not exist", nick ); +} + +static void irc_cmd_whowas( irc_t *irc, char **cmd ) +{ + /* For some reason irssi tries a whowas when whois fails. We can + ignore this, but then the user never gets a "user not found" + message from irssi which is a bit annoying. So just respond + with not-found and irssi users will get better error messages */ + + irc_send_num( irc, 406, "%s :Nick does not exist", cmd[1] ); + irc_send_num( irc, 369, "%s :End of WHOWAS", cmd[1] ); +} + #if 0 //#if 0 static void irc_cmd_oper( irc_t *irc, char **cmd ) @@ -474,48 +496,6 @@ static void irc_cmd_away( irc_t *irc, char **cmd ) set_setstr( &irc->set, "away", u->away ); } -static void irc_cmd_whois( irc_t *irc, char **cmd ) -{ - char *nick = cmd[1]; - user_t *u = user_find( irc, nick ); - - if( u ) - { - irc_send_num( irc, 311, "%s %s %s * :%s", u->nick, u->user, u->host, u->realname ); - - if( u->ic ) - irc_send_num( irc, 312, "%s %s.%s :%s network", u->nick, u->ic->acc->user, - u->ic->acc->server && *u->ic->acc->server ? u->ic->acc->server : "", - u->ic->acc->prpl->name ); - else - irc_send_num( irc, 312, "%s %s :%s", u->nick, irc->myhost, IRCD_INFO ); - - if( !u->online ) - irc_send_num( irc, 301, "%s :%s", u->nick, "User is offline" ); - else if( u->away ) - irc_send_num( irc, 301, "%s :%s", u->nick, u->away ); - if( u->status_msg ) - irc_send_num( irc, 333, "%s :Status: %s", u->nick, u->status_msg ); - - irc_send_num( irc, 318, "%s :End of /WHOIS list", nick ); - } - else - { - irc_send_num( irc, 401, "%s :Nick does not exist", nick ); - } -} - -static void irc_cmd_whowas( irc_t *irc, char **cmd ) -{ - /* For some reason irssi tries a whowas when whois fails. We can - ignore this, but then the user never gets a "user not found" - message from irssi which is a bit annoying. So just respond - with not-found and irssi users will get better error messages */ - - irc_send_num( irc, 406, "%s :Nick does not exist", cmd[1] ); - irc_send_num( irc, 369, "%s :End of WHOWAS", cmd[1] ); -} - static void irc_cmd_nickserv( irc_t *irc, char **cmd ) { /* [SH] This aliases the NickServ command to PRIVMSG root */ @@ -582,6 +562,8 @@ static const command_t irc_commands[] = { { "join", 1, irc_cmd_join, IRC_CMD_LOGGED_IN }, { "names", 1, irc_cmd_names, IRC_CMD_LOGGED_IN }, { "part", 1, irc_cmd_part, IRC_CMD_LOGGED_IN }, + { "whois", 1, irc_cmd_whois, IRC_CMD_LOGGED_IN }, + { "whowas", 1, irc_cmd_whowas, IRC_CMD_LOGGED_IN }, #if 0 { "oper", 2, irc_cmd_oper, IRC_CMD_LOGGED_IN }, { "mode", 1, irc_cmd_mode, IRC_CMD_LOGGED_IN }, @@ -594,8 +576,6 @@ static const command_t irc_commands[] = { { "watch", 1, irc_cmd_watch, IRC_CMD_LOGGED_IN }, { "topic", 1, irc_cmd_topic, IRC_CMD_LOGGED_IN }, { "away", 0, irc_cmd_away, IRC_CMD_LOGGED_IN }, - { "whois", 1, irc_cmd_whois, IRC_CMD_LOGGED_IN }, - { "whowas", 1, irc_cmd_whowas, IRC_CMD_LOGGED_IN }, { "nickserv", 1, irc_cmd_nickserv, IRC_CMD_LOGGED_IN }, { "ns", 1, irc_cmd_nickserv, IRC_CMD_LOGGED_IN }, { "motd", 0, irc_cmd_motd, IRC_CMD_LOGGED_IN }, |