diff libpurple/protocols/msn/switchboard.c @ 27907:a64685485775

propagate from branch 'im.pidgin.pidgin' (head a4222a6a8081e1e41a29c5b01c09a31ed212eb60) to branch 'im.pidgin.pidgin.yaz' (head f037145e58bf0c248f0bfb71758c04c604be896b)
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Sun, 23 Nov 2008 09:40:48 +0000
parents 3f80f211417e 6ecfc6b9667c
children 770f2f8a2c91
line wrap: on
line diff
--- a/libpurple/protocols/msn/switchboard.c	Sun Nov 23 07:31:20 2008 +0000
+++ b/libpurple/protocols/msn/switchboard.c	Sun Nov 23 09:40:48 2008 +0000
@@ -892,7 +892,7 @@
 	char *body_str;
 	char *body_enc;
 	char *body_final;
-	size_t body_len;
+	size_t body_len, new_len;
 	const char *passport;
 	const char *value;
 
@@ -900,7 +900,7 @@
 	swboard = cmdproc->data;
 
 	body = msn_message_get_bin_data(msg, &body_len);
-	body_str = g_strndup(body, body_len);
+	body_str = sanitize_utf(body, body_len, &new_len);
 	body_enc = g_markup_escape_text(body_str, -1);
 	g_free(body_str);
 
@@ -959,13 +959,17 @@
 	}
 	else
 	{
-		serv_got_im(gc, passport, body_final, 0, time(NULL));
+		char *yaz_body_final;
+		yaz_body_final = purple_strreplace(body_final, "\r\n", "<br>"); // replace 0D 0A with <br>
+		purple_debug_info("yaz msn", "yaz_body_final=%s\n", yaz_body_final);
+		serv_got_im(gc, passport, yaz_body_final, 0, time(NULL));
 		if (swboard->conv == NULL)
 		{
 			swboard->conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
 									passport, purple_connection_get_account(gc));
 			swboard->flag |= MSN_SB_FLAG_IM;
 		}
+		g_free(yaz_body_final);
 	}
 
 	g_free(body_final);