# HG changeset patch # User Ethan Blanton # Date 1065308383 0 # Node ID 5c03e3e0d4514c687d517b2869588e57d791cc3f # Parent e9867cdeb0fdace6dc4bb5fb6c26848882930705 [gaim-migrate @ 7715] View MOTD is now a proto action for IRC committer: Tailor Script diff -r e9867cdeb0fd -r 5c03e3e0d451 src/protocols/irc/irc.c --- a/src/protocols/irc/irc.c Sat Oct 04 21:53:11 2003 +0000 +++ b/src/protocols/irc/irc.c Sat Oct 04 22:59:43 2003 +0000 @@ -29,6 +29,7 @@ #include "multi.h" #include "prpl.h" #include "conversation.h" +#include "notify.h" #include "debug.h" #include "blist.h" #include "util.h" @@ -39,6 +40,7 @@ static const char *irc_blist_icon(GaimAccount *a, GaimBuddy *b); static void irc_blist_emblems(GaimBuddy *b, char **se, char **sw, char **nw, char **ne); static GList *irc_away_states(GaimConnection *gc); +static GList *irc_actions(GaimConnection *gc); /* static GList *irc_chat_info(GaimConnection *gc); */ static void irc_login(GaimAccount *account); static void irc_login_cb(gpointer data, gint source, GaimInputCondition cond); @@ -48,6 +50,25 @@ static void irc_chat_join (GaimConnection *gc, GHashTable *data); static void irc_input_cb(gpointer data, gint source, GaimInputCondition cond); +static void irc_view_motd(GaimConnection *gc) +{ + struct irc_conn *irc; + char *title; + + if (gc == NULL || gc->proto_data == NULL) { + gaim_debug(GAIM_DEBUG_ERROR, "irc", "got MOTD request for NULL gc\n"); + return; + } + irc = gc->proto_data; + if (irc->motd == NULL) { + gaim_notify_error(gc, _("Error displaying MOTD"), _("No MOTD available"), + _("There is no MOTD associated with this connection.")); + return; + } + title = g_strdup_printf(_("MOTD for %s"), irc->server); + gaim_notify_formatted(gc, title, title, NULL, irc->motd->str, NULL, NULL); +} + static guint irc_nick_hash(const char *nick); static gboolean irc_nick_equal(const char *nick1, const char *nick2); static void irc_buddy_free(struct irc_buddy *ib); @@ -107,6 +128,21 @@ return g_list_append(NULL, (gpointer)GAIM_AWAY_CUSTOM); } +static GList *irc_actions(GaimConnection *gc) +{ + struct irc_conn *irc = gc->proto_data; + struct proto_actions_menu *pam; + GList *list = NULL; + + pam = g_new0(struct proto_actions_menu, 1); + pam->label = _("View MOTD"); + pam->callback = irc_view_motd; + pam->gc = gc; + list = g_list_append(list, pam); + + return list; +} + static GList *irc_buddy_menu(GaimConnection *gc, const char *who) { return NULL; @@ -437,7 +473,7 @@ NULL, NULL, irc_away_states, - NULL, + irc_actions, irc_buddy_menu, irc_chat_join_info, irc_login,