# HG changeset patch # User Mark Doliner # Date 1131497949 0 # Node ID 39734dd473e0e956e0369310ee52ebb8f4ce69d7 # Parent 16f75a4d9fec8facf26a10d568055b97877f8de3 [gaim-migrate @ 14306] sf patch #1167921, from Joao Lu??s Marques Pinto "This patch adds the command /nickserv, /chanserv, /memoserv, /operserv, it is safer than the /msg option because more modern ircds will ensure that the message is routed to a service and not to a "fake" client." committer: Tailor Script diff -r 16f75a4d9fec -r 39734dd473e0 COPYRIGHT --- a/COPYRIGHT Wed Nov 09 00:24:22 2005 +0000 +++ b/COPYRIGHT Wed Nov 09 00:59:09 2005 +0000 @@ -173,6 +173,7 @@ Havoc Pennington Ted Percival Eduardo Pérez +Joao Luís Marques Pinto Ari Pollak Robey Pointer Nathan Poznick diff -r 16f75a4d9fec -r 39734dd473e0 ChangeLog --- a/ChangeLog Wed Nov 09 00:24:22 2005 +0000 +++ b/ChangeLog Wed Nov 09 00:59:09 2005 +0000 @@ -90,6 +90,8 @@ * SSL support for IRC connections (Daniel Atallah) * Show an error message when temporarily unable to join an IRC channel or change your nick (Richard Laager) + * Added /nickserv, /memoserv, /chanserv and /operserv + commands (Joao Luís Marques Pinto) Other Protocol Changes: * Jabber support for SRV lookups diff -r 16f75a4d9fec -r 39734dd473e0 src/protocols/irc/cmds.c --- a/src/protocols/irc/cmds.c Wed Nov 09 00:24:22 2005 +0000 +++ b/src/protocols/irc/cmds.c Wed Nov 09 00:59:09 2005 +0000 @@ -434,6 +434,23 @@ return 0; } +int irc_cmd_service(struct irc_conn *irc, const char *cmd, const char *target, const char **args) +{ + char *capital_cmd, *buf; + + if (!args || !args[0]) + return 0; + + /* cmd will be one of nickserv, chanserv, memoserv or operserv */ + capital_cmd = g_ascii_strup(cmd, -1); + buf = irc_format(irc, "v:", capital_cmd, args[0]); + irc_send(irc, buf); + g_free(capital_cmd); + g_free(buf); + + return 0; +} + int irc_cmd_time(struct irc_conn *irc, const char *cmd, const char *target, const char **args) { char *buf; diff -r 16f75a4d9fec -r 39734dd473e0 src/protocols/irc/irc.h --- a/src/protocols/irc/irc.h Wed Nov 09 00:24:22 2005 +0000 +++ b/src/protocols/irc/irc.h Wed Nov 09 00:59:09 2005 +0000 @@ -162,6 +162,7 @@ int irc_cmd_quote(struct irc_conn *irc, const char *cmd, const char *target, const char **args); int irc_cmd_query(struct irc_conn *irc, const char *cmd, const char *target, const char **args); int irc_cmd_remove(struct irc_conn *irc, const char *cmd, const char *target, const char **args); +int irc_cmd_service(struct irc_conn *irc, const char *cmd, const char *Target, const char **args); int irc_cmd_time(struct irc_conn *irc, const char *cmd, const char *target, const char **args); int irc_cmd_topic(struct irc_conn *irc, const char *cmd, const char *target, const char **args); int irc_cmd_wallops(struct irc_conn *irc, const char *cmd, const char *target, const char **args); diff -r 16f75a4d9fec -r 39734dd473e0 src/protocols/irc/parse.c --- a/src/protocols/irc/parse.c Wed Nov 09 00:24:22 2005 +0000 +++ b/src/protocols/irc/parse.c Wed Nov 09 00:59:09 2005 +0000 @@ -113,6 +113,7 @@ } _irc_cmds[] = { { "action", ":", irc_cmd_ctcp_action, N_("action <action to perform>: Perform an action.") }, { "away", ":", irc_cmd_away, N_("away [message]: Set an away message, or use no message to return from being away.") }, + { "chanserv", ":", irc_cmd_service, N_("chanserv: Send a command to chanserv") }, { "deop", ":", irc_cmd_op, N_("deop <nick1> [nick2] ...: Remove channel operator status from someone. You must be a channel operator to do this.") }, { "devoice", ":", irc_cmd_op, N_("devoice <nick1> [nick2] ...: Remove channel voice status from someone, preventing them from speaking if the channel is moderated (+m). You must be a channel operator to do this.") }, { "invite", ":", irc_cmd_invite, N_("invite <nick> [room]: Invite someone to join you in the specified channel, or the current channel.") }, @@ -121,12 +122,15 @@ { "kick", "n:", irc_cmd_kick, N_("kick <nick> [message]: Remove someone from a channel. You must be a channel operator to do this.") }, { "list", ":", irc_cmd_list, N_("list: Display a list of chat rooms on the network. Warning, some servers may disconnect you upon doing this.") }, { "me", ":", irc_cmd_ctcp_action, N_("me <action to perform>: Perform an action.") }, + { "memoserv", ":", irc_cmd_service, N_("memoserv: Send a command to memoserv") }, { "mode", ":", irc_cmd_mode, N_("mode <+|-><A-Za-z> <nick|channel>: Set or unset a channel or user mode.") }, { "msg", "t:", irc_cmd_privmsg, N_("msg <nick> <message>: Send a private message to a user (as opposed to a channel).") }, { "names", "c", irc_cmd_names, N_("names [channel]: List the users currently in a channel.") }, { "nick", "n", irc_cmd_nick, N_("nick <new nickname>: Change your nickname.") }, + { "nickserv", ":", irc_cmd_service, N_("nickserv: Send a command to nickserv") }, { "op", ":", irc_cmd_op, N_("op <nick1> [nick2] ...: Grant channel operator status to someone. You must be a channel operator to do this.") }, { "operwall", ":", irc_cmd_wallops, N_("operwall <message>: If you don't know what this is, you probably can't use it.") }, + { "operserv", ":", irc_cmd_service, N_("operserv: Send a command to operserv") }, { "part", "c:", irc_cmd_part, N_("part [room] [message]: Leave the current channel, or a specified channel, with an optional message.") }, { "ping", "n", irc_cmd_ping, N_("ping [nick]: Asks how much lag a user (or the server if no user specified) has.") }, { "query", "n:", irc_cmd_query, N_("query <nick> <message>: Send a private message to a user (as opposed to a channel).") },