/pidgin/main: 2e449140fe0b: Switch sending-im-msg to PurpleMessage

Tomasz Wasilczyk <[email protected]>
Newsgroups gmane.comp.gnome.gaim.cvs
Message-ID <[email protected]>
Changeset: 2e449140fe0b5a02c616b3f4d3c3064c695cd4b0
Author:	 Tomasz Wasilczyk <[email protected]>
Date:	 2014-05-22 16:38 +0200
Branch:	 default
URL: https://hg.pidgin.im/pidgin/main/rev/2e449140fe0b

Description:

Switch sending-im-msg to PurpleMessage

diffstat:

 libpurple/conversation.c                       |   4 +--
 libpurple/conversations.c                      |   5 +--
 libpurple/message.c                            |   6 ++++
 libpurple/message.h                            |   3 ++
 libpurple/plugins/codeinline.c                 |  35 +++++++++++++++++++------
 libpurple/plugins/offlinemsg.c                 |  10 +++---
 libpurple/plugins/perl/common/Server.xs        |  21 ---------------
 libpurple/plugins/signals-test.c               |   6 ++-
 libpurple/protocols/irc/cmds.c                 |  14 ++++++---
 pidgin/plugins/musicmessaging/musicmessaging.c |  21 ++++++++-------
 10 files changed, 67 insertions(+), 58 deletions(-)

diffs (truncated from 303 to 300 lines):

diff --git a/libpurple/conversation.c b/libpurple/conversation.c
--- a/libpurple/conversation.c
+++ b/libpurple/conversation.c
@@ -137,10 +137,8 @@ common_send(PurpleConversation *conv, co
 		msg = purple_message_new(purple_conversation_get_name(conv),
 			sent, msgflags);
 
-		/* TODO: use msg! */
 		purple_signal_emit(purple_conversations_get_handle(), "sending-im-msg",
-						 account,
-						 purple_conversation_get_name(conv), &sent);
+			account, msg);
 
 		if (!purple_message_is_empty(msg)) {
 
diff --git a/libpurple/conversations.c b/libpurple/conversations.c
--- a/libpurple/conversations.c
+++ b/libpurple/conversations.c
@@ -305,9 +305,8 @@ purple_conversations_init(void)
 						 PURPLE_TYPE_CONVERSATION, G_TYPE_UINT);
 
 	purple_signal_register(handle, "sending-im-msg",
-						 purple_marshal_VOID__POINTER_POINTER_POINTER,
-						 G_TYPE_NONE, 3, PURPLE_TYPE_ACCOUNT, G_TYPE_STRING,
-						 G_TYPE_POINTER); /* pointer to a string */
+		purple_marshal_VOID__POINTER_POINTER, G_TYPE_NONE,
+		2, PURPLE_TYPE_ACCOUNT, PURPLE_TYPE_MESSAGE);
 
 	purple_signal_register(handle, "sent-im-msg",
 						 purple_marshal_VOID__POINTER_POINTER_POINTER,
diff --git a/libpurple/message.c b/libpurple/message.c
--- a/libpurple/message.c
+++ b/libpurple/message.c
@@ -94,6 +94,12 @@ purple_message_get_who(PurpleMessage *ms
 	return priv->who;
 }
 
+void
+purple_message_set_contents(PurpleMessage *msg, const gchar *cont)
+{
+	g_object_set(msg, "contents", cont, NULL);
+}
+
 const gchar *
 purple_message_get_contents(PurpleMessage *msg)
 {
diff --git a/libpurple/message.h b/libpurple/message.h
--- a/libpurple/message.h
+++ b/libpurple/message.h
@@ -95,6 +95,9 @@ purple_message_find_by_id(guint id);
 const gchar *
 purple_message_get_who(PurpleMessage *msg);
 
+void
+purple_message_set_contents(PurpleMessage *msg, const gchar *cont);
+
 const gchar *
 purple_message_get_contents(PurpleMessage *msg);
 
diff --git a/libpurple/plugins/codeinline.c b/libpurple/plugins/codeinline.c
--- a/libpurple/plugins/codeinline.c
+++ b/libpurple/plugins/codeinline.c
@@ -28,20 +28,37 @@
 
 PurplePlugin *plugin_handle = NULL;
 
-static gboolean outgoing_msg_cb(PurpleAccount *account, const char *who, char **message,
-					PurpleConversation *conv, PurpleMessageFlags flags, gpointer null)
+static char *
+outgoing_msg_common(const char *message)
 {
   char *m;
-  char **ms = g_strsplit(*message, "<u>", -1);
+  char **ms = g_strsplit(message, "<u>", -1);
   m = g_strjoinv("<font face=\"monospace\" color=\"#00b025\">", ms);
   g_strfreev(ms);
 
   ms = g_strsplit(m, "</u>", -1);
   g_free(m);
-  m = g_strjoinv("</font>", ms);
-  g_free(*message);
-  *message = m;
-  return FALSE;
+  return g_strjoinv("</font>", ms);
+}
+
+static gboolean outgoing_msg_cb1(PurpleAccount *account, const char *who, char **message,
+					PurpleConversation *conv, PurpleMessageFlags flags, gpointer null)
+{
+	char *m;
+
+	m = outgoing_msg_common(*message);
+	g_free(*message);
+	*message = m;
+
+	return FALSE;
+}
+
+static void
+outgoing_msg_cb2(PurpleAccount *account, PurpleMessage *msg,
+	PurpleConversation *conv, PurpleMessageFlags flags, gpointer null)
+{
+	purple_message_set_contents(msg,
+		outgoing_msg_common(purple_message_get_contents(msg)));
 }
 
 static gboolean
@@ -50,9 +67,9 @@ plugin_load(PurplePlugin *plugin)
      void *handle = purple_conversations_get_handle();
      plugin_handle = plugin;
      purple_signal_connect(handle, "writing-im-msg", plugin,
-                PURPLE_CALLBACK(outgoing_msg_cb), NULL);
+                PURPLE_CALLBACK(outgoing_msg_cb1), NULL);
      purple_signal_connect(handle, "sending-im-msg", plugin,
-		PURPLE_CALLBACK(outgoing_msg_cb), NULL);
+		PURPLE_CALLBACK(outgoing_msg_cb2), NULL);
 
      return TRUE;
 }
diff --git a/libpurple/plugins/offlinemsg.c b/libpurple/plugins/offlinemsg.c
--- a/libpurple/plugins/offlinemsg.c
+++ b/libpurple/plugins/offlinemsg.c
@@ -112,15 +112,15 @@ record_pounce(OfflineMsg *offline)
 }
 
 static void
-sending_msg_cb(PurpleAccount *account, const char *who, char **message, gpointer handle)
+sending_msg_cb(PurpleAccount *account, PurpleMessage *msg, gpointer handle)
 {
 	PurpleBuddy *buddy;
 	OfflineMsg *offline;
 	PurpleConversation *conv;
 	OfflineMessageSetting setting;
+	const gchar *who = purple_message_get_who(msg);
 
-	if (message == NULL || *message == NULL ||
-			**message == '\0')
+	if (purple_message_is_empty(msg))
 		return;
 
 	buddy = purple_blist_find_buddy(account, who);
@@ -150,8 +150,8 @@ sending_msg_cb(PurpleAccount *account, c
 	offline->conv = conv;
 	offline->account = account;
 	offline->who = g_strdup(who);
-	offline->message = *message;
-	*message = NULL;
+	offline->message = g_strdup(purple_message_get_contents(msg));
+	purple_message_set_contents(msg, NULL);
 
 	if (purple_prefs_get_bool(PREF_ALWAYS) || setting == OFFLINE_MSG_YES)
 		record_pounce(offline);
diff --git a/libpurple/plugins/perl/common/Server.xs b/libpurple/plugins/perl/common/Server.xs
--- a/libpurple/plugins/perl/common/Server.xs
+++ b/libpurple/plugins/perl/common/Server.xs
@@ -30,20 +30,6 @@ purple_serv_chat_leave(a, b)
 	Purple::Connection a
 	int b
 
-int  
-purple_serv_chat_send(con, a, b, flags)
-	Purple::Connection con 
-	int a
-	const char * b
-	Purple::MessageFlags flags
-
-void 
-purple_serv_chat_whisper(con, a, b, c)
-	Purple::Connection con
-	int a
-	const char * b
-	const char * c
-
 void 
 purple_serv_get_info(con, a)
 	Purple::Connection con 
@@ -193,13 +179,6 @@ purple_serv_send_file(gc, who, file)
 	const char *file
 
 int  
-purple_serv_send_im(con, a, b, flags )
-	Purple::Connection con
-	const char * a
-	const char * b
-	Purple::MessageFlags flags
-
-int  
 purple_serv_send_typing(con, a, state)
 	Purple::Connection con
 	const char * a
diff --git a/libpurple/plugins/signals-test.c b/libpurple/plugins/signals-test.c
--- a/libpurple/plugins/signals-test.c
+++ b/libpurple/plugins/signals-test.c
@@ -301,10 +301,12 @@ wrote_im_msg_cb(PurpleAccount *account, 
 }
 
 static void
-sending_im_msg_cb(PurpleAccount *account, char *recipient, char **buffer, void *data)
+sending_im_msg_cb(PurpleAccount *account, PurpleMessage *msg, void *data)
 {
 	purple_debug_misc("signals test", "sending-im-msg (%s, %s, %s)\n",
-					purple_account_get_username(account), recipient, *buffer);
+		purple_account_get_username(account),
+		purple_message_get_who(msg),
+		purple_message_get_contents(msg));
 
 }
 
diff --git a/libpurple/protocols/irc/cmds.c b/libpurple/protocols/irc/cmds.c
--- a/libpurple/protocols/irc/cmds.c
+++ b/libpurple/protocols/irc/cmds.c
@@ -97,6 +97,7 @@ int irc_cmd_ctcp_action(struct irc_conn 
 	const char *src;
 	char *msg;
 	PurpleConversation *convo;
+	PurpleMessage *pmsg;
 
 	if (!args || !args[0] || !gc)
 		return 0;
@@ -107,19 +108,22 @@ int irc_cmd_ctcp_action(struct irc_conn 
 
 	/* XXX: we'd prefer to keep this in conversation.c */
 	if (PURPLE_IS_IM_CONVERSATION(convo)) {
+		pmsg = purple_message_new(purple_conversation_get_name(convo),
+			msg, PURPLE_MESSAGE_SEND);
+
 		purple_signal_emit(purple_conversations_get_handle(),
-			"sending-im-msg", irc->account,
-			purple_conversation_get_name(convo), &msg);
+			"sending-im-msg", irc->account, pmsg);
 	} else {
+		/* TODO: pmsg! */
 		purple_signal_emit(purple_conversations_get_handle(),
 			"sending-chat-msg", irc->account, &msg,
 			purple_chat_conversation_get_id(PURPLE_CHAT_CONVERSATION(convo)));
 	}
 
-	if (!msg || !msg[0]) {
-		g_free(msg);
+	g_free(msg);
+	if (purple_message_is_empty(pmsg))
 		return 0;
-	}
+	msg = g_strdup(purple_message_get_contents(pmsg)); /* XXX: is it really necessary? */
 
 	if (strncmp(msg, "/me ", 4) != 0) {
 		newargs = g_new0(char *, 2);
diff --git a/pidgin/plugins/musicmessaging/musicmessaging.c b/pidgin/plugins/musicmessaging/musicmessaging.c
--- a/pidgin/plugins/musicmessaging/musicmessaging.c
+++ b/pidgin/plugins/musicmessaging/musicmessaging.c
@@ -64,7 +64,7 @@ static void add_button (MMConversation *
 static void remove_widget (GtkWidget *button);
 static void init_conversation (PurpleConversation *conv);
 static void conv_destroyed(PurpleConversation *conv);
-static gboolean intercept_sent(PurpleAccount *account, const char *who, char **message, void* pData);
+static gboolean intercept_sent(PurpleAccount *account, PurpleMessage *msg, void* pData);
 static gboolean intercept_received(PurpleAccount *account, char **sender, char **message, PurpleConversation *conv, int *flags);
 static gboolean send_change_request (const int session, const char *id, const char *command, const char *parameters);
 static gboolean send_change_confirmed (const int session, const char *command, const char *parameters);
@@ -329,33 +329,34 @@ plugin_unload(PurplePlugin *plugin) {
 
 
 static gboolean
-intercept_sent(PurpleAccount *account, const char *who, char **message, void* pData)
+intercept_sent(PurpleAccount *account, PurpleMessage *msg, void* pData)
 {
-	if (message == NULL || *message == NULL || **message == '\0')
+	const gchar *cont = purple_message_get_contents(msg);
+
+	if (purple_message_is_empty(msg))
 		return FALSE;
 
-	if (0 == strncmp(*message, MUSICMESSAGING_PREFIX, strlen(MUSICMESSAGING_PREFIX)))
+	if (0 == strncmp(cont, MUSICMESSAGING_PREFIX, strlen(MUSICMESSAGING_PREFIX)))
 	{
-		purple_debug_misc("purple-musicmessaging", "Sent MM Message: %s\n", *message);
-		message = 0;
+		purple_debug_misc("purple-musicmessaging", "Sent MM Message: %s\n", cont);
 	}
-	else if (0 == strncmp(*message, MUSICMESSAGING_START_MSG, strlen(MUSICMESSAGING_START_MSG)))
+	else if (0 == strncmp(cont, MUSICMESSAGING_START_MSG, strlen(MUSICMESSAGING_START_MSG)))
 	{
 		purple_debug_misc("purple-musicmessaging", "Sent MM request.\n");
 		return FALSE;
 	}
-	else if (0 == strncmp(*message, MUSICMESSAGING_CONFIRM_MSG, strlen(MUSICMESSAGING_CONFIRM_MSG)))
+	else if (0 == strncmp(cont, MUSICMESSAGING_CONFIRM_MSG, strlen(MUSICMESSAGING_CONFIRM_MSG)))
 	{
 		purple_debug_misc("purple-musicmessaging", "Sent MM confirm.\n");
 		return FALSE;
 	}
-	else if (0 == strncmp(*message, "test1", strlen("test1")))
+	else if (0 == strncmp(cont, "test1", strlen("test1")))
 	{
 		purple_debug_misc("purple-musicmessaging", "\n\nTEST 1\n\n");
 		send_change_request(0, "test-id", "test-command", "test-parameters");
 		return FALSE;
 	}
-	else if (0 == strncmp(*message, "test2", strlen("test2")))
+	else if (0 == strncmp(cont, "test2", strlen("test2")))
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.