diff src/protocols/irc/irc.c @ 12216:4d3119205a33

[gaim-migrate @ 14518] Remove GaimConvImFlags and GaimConvChatFlags - use GaimMessageFlags everywhere instead. Add a new GAIM_MESSAGE_IMAGES flag, and set it when sending a message containing images. When sending a message, the core will now always send "html" to the prpls, just like it expects to receive html from the prpls for received messages. This will allow text prpls such as SILC to support IM images and differentiate them from user input. Previously gaim_unescape_html() was used before passing the message to the prpl, now the prpl does this itself if it needs it. I think I updated all the prpls correctly, but I'm not so sure about sametime. committer: Tailor Script <tailor@pidgin.im>
author Stu Tomlinson <stu@nosnilmot.com>
date Thu, 24 Nov 2005 20:47:46 +0000
parents 5ae6ab7846a5
children fc464a0abccc
line wrap: on
line diff
--- a/src/protocols/irc/irc.c	Thu Nov 24 20:38:24 2005 +0000
+++ b/src/protocols/irc/irc.c	Thu Nov 24 20:47:46 2005 +0000
@@ -49,8 +49,8 @@
 static void irc_login_cb(gpointer data, gint source, GaimInputCondition cond);
 static void irc_ssl_connect_failure(GaimSslConnection *gsc, GaimSslErrorType error, gpointer data);
 static void irc_close(GaimConnection *gc);
-static int irc_im_send(GaimConnection *gc, const char *who, const char *what, GaimConvImFlags flags);
-static int irc_chat_send(GaimConnection *gc, int id, const char *what);
+static int irc_im_send(GaimConnection *gc, const char *who, const char *what, GaimMessageFlags flags);
+static int irc_chat_send(GaimConnection *gc, int id, const char *what, GaimMessageFlags flags);
 static void irc_chat_join (GaimConnection *gc, GHashTable *data);
 static void irc_input_cb(gpointer data, gint source, GaimInputCondition cond);
 static void irc_input_cb_ssl(gpointer data, GaimSslConnection *gsc, GaimInputCondition cond);
@@ -408,18 +408,22 @@
 	g_free(irc);
 }
 
-static int irc_im_send(GaimConnection *gc, const char *who, const char *what, GaimConvImFlags flags)
+static int irc_im_send(GaimConnection *gc, const char *who, const char *what, GaimMessageFlags flags)
 {
 	struct irc_conn *irc = gc->proto_data;
+	char *plain;
 	const char *args[2];
 
 	if (strchr(status_chars, *who) != NULL)
 		args[0] = who + 1;
 	else
 		args[0] = who;
-	args[1] = what;
+
+	plain = gaim_unescape_html(what);
+	args[1] = plain;
 
 	irc_cmd_privmsg(irc, "msg", NULL, args);
+	g_free(plain);
 	return 1;
 }
 
@@ -596,7 +600,7 @@
 	serv_got_chat_left(gc, id);
 }
 
-static int irc_chat_send(GaimConnection *gc, int id, const char *what)
+static int irc_chat_send(GaimConnection *gc, int id, const char *what, GaimMessageFlags flags)
 {
 	struct irc_conn *irc = gc->proto_data;
 	GaimConversation *convo = gaim_find_chat(gc, id);
@@ -612,13 +616,13 @@
 		return irc_parse_cmd(irc, convo->name, what + 1);
 	}
 #endif
+	tmp = gaim_unescape_html(what);
 	args[0] = convo->name;
-	args[1] = what;
+	args[1] = tmp;
 
 	irc_cmd_privmsg(irc, "msg", NULL, args);
 
-	tmp = g_markup_escape_text(what, -1);
-	serv_got_chat_in(gc, id, gaim_connection_get_display_name(gc), 0, tmp, time(NULL));
+	serv_got_chat_in(gc, id, gaim_connection_get_display_name(gc), 0, what, time(NULL));
 	g_free(tmp);
 	return 0;
 }