Mercurial > pidgin
diff libpurple/protocols/oscar/family_icbm.c @ 30648:1558900f47e5
Merged my changes that fix #11964 and #12593. Mark looked over them
and said they looked good to him.
applied changes from 7b998c02b684a694f1089bee715e4a3952bbcf08
through 563c6a79e1266b750fe4bd608890195cfbcd8a2c
author | ivan.komarov@soc.pidgin.im |
---|---|
date | Sat, 30 Oct 2010 21:53:38 +0000 |
parents | 6f8a8685eef1 |
children | 0c0b94fb9ac7 |
line wrap: on
line diff
--- a/libpurple/protocols/oscar/family_icbm.c Sat Oct 30 21:36:34 2010 +0000 +++ b/libpurple/protocols/oscar/family_icbm.c Sat Oct 30 21:53:38 2010 +0000 @@ -1691,7 +1691,7 @@ purple_debug_misc("oscar", "X-Status: Received XML reply\n"); if (xml) { GString *xstatus; - char *tmp1, *tmp2; + char *tmp1, *tmp2, *unescaped_xstatus; /* purple_debug_misc("oscar", "X-Status: XML reply: %s\n", xml); */ @@ -1709,29 +1709,32 @@ tmp1 += 12; tmp2 = strstr(tmp1, "</desc>"); if (tmp2 != NULL) { - if (xstatus->len > 0) + if (xstatus->len > 0 && tmp2 > tmp1) g_string_append(xstatus, " - "); g_string_append_len(xstatus, tmp1, tmp2 - tmp1); } } - if (xstatus->len > 0) { - purple_debug_misc("oscar", "X-Status reply: %s\n", xstatus->str); + unescaped_xstatus = purple_unescape_text(xstatus->str); + g_string_free(xstatus, TRUE); + if (*unescaped_xstatus) { + purple_debug_misc("oscar", "X-Status reply: %s\n", unescaped_xstatus); account = purple_connection_get_account(od->gc); buddy = purple_find_buddy(account, bn); presence = purple_buddy_get_presence(buddy); - status = purple_presence_get_active_status(presence); - purple_prpl_got_user_status(account, bn, - purple_status_get_id(status), - "message", xstatus->str, NULL); + status = purple_presence_get_status(presence, "mood"); + if (status) { + purple_prpl_got_user_status(account, bn, + "mood", + PURPLE_MOOD_NAME, purple_status_get_attr_string(status, PURPLE_MOOD_NAME), + PURPLE_MOOD_COMMENT, unescaped_xstatus, NULL); + } } - g_string_free(xstatus, TRUE); + g_free(unescaped_xstatus); } else { purple_debug_misc("oscar", "X-Status: Can't get XML reply string\n"); } } else { purple_debug_misc("oscar", "X-Status: 0x0004, 0x000b not an xstatus reply\n"); - /* if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) - ret = userfunc(od, conn, frame, channel, sn, reason); */ } }