diff libpurple/protocols/jabber/jabber.c @ 27930:25319f536d93

propagate from branch 'im.pidgin.pidgin' (head 5aca19ea8964e864e3374ac4fd3c1c81cd23a426) to branch 'im.pidgin.pidgin.yaz' (head 908c143511eb03dcaab43319cf4555427004823f)
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Tue, 24 Feb 2009 10:26:45 +0000
parents b90c26f391b0 03279387cbe2
children d8e6a2d592a4
line wrap: on
line diff
--- a/libpurple/protocols/jabber/jabber.c	Tue Feb 24 08:09:17 2009 +0000
+++ b/libpurple/protocols/jabber/jabber.c	Tue Feb 24 10:26:45 2009 +0000
@@ -432,8 +432,9 @@
 
 void jabber_send(JabberStream *js, xmlnode *packet)
 {
-	char *txt;
+	char *txt, *utf;
 	int len;
+	gsize utflen;
 
 	purple_signal_emit(my_protocol, "jabber-sending-xmlnode", js->gc, &packet);
 
@@ -442,8 +443,9 @@
 		return;
 
 	txt = xmlnode_to_str(packet, &len);
-	jabber_send_raw(js, txt, len);
-	g_free(txt);
+	utf = botch_utf(txt, len, &utflen); //yaz
+	jabber_send_raw(js, utf, utflen);
+	g_free(txt); g_free(utf);
 }
 
 static void jabber_pong_cb(JabberStream *js, xmlnode *packet, gpointer unused)
@@ -1653,7 +1655,7 @@
 {
 	char *ret = NULL;
 	JabberBuddy *jb = NULL;
-	
+
 	if (b->account->gc && b->account->gc->proto_data)
 		jb = jabber_buddy_find(b->account->gc->proto_data, b->name, FALSE);
 
@@ -1662,13 +1664,21 @@
 	} else if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) {
 		ret = g_strdup(jb->error_msg);
 	} else {
-		char *stripped;
+		char *stripped = NULL;
 
 		if(!(stripped = purple_markup_strip_html(jabber_buddy_get_status_msg(jb)))) {
 			PurplePresence *presence = purple_buddy_get_presence(b);
 			if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) {
-				PurpleStatus *status = purple_presence_get_status(presence, "tune");
-				stripped = g_strdup(purple_status_get_attr_string(status, PURPLE_TUNE_TITLE));
+				PurpleStatus *status;
+				const char *title, *artist;
+
+				status = purple_presence_get_status(presence, "tune");
+				title = purple_status_get_attr_string(status, PURPLE_TUNE_TITLE);
+				artist = purple_status_get_attr_string(status, PURPLE_TUNE_ARTIST);
+
+				stripped = g_strdup_printf("%s%s%s", title, artist ? " - " : "",
+							   artist ? artist : "");
+
 			}
 		}
 
@@ -1739,6 +1749,7 @@
 				const char *title = purple_status_get_attr_string(tune, PURPLE_TUNE_TITLE);
 				const char *artist = purple_status_get_attr_string(tune, PURPLE_TUNE_ARTIST);
 				const char *album = purple_status_get_attr_string(tune, PURPLE_TUNE_ALBUM);
+
 				char *playing = purple_util_format_song_info(title, artist, album, NULL);
 				if (playing) {
 					purple_notify_user_info_add_pair(user_info, _("Now Listening"), playing);