# HG changeset patch # User John Bailey # Date 1200549192 0 # Node ID 840e7e1b6dac03099dcb4f9c25e237985dfab9be # Parent 0a0fa9fd5febd0acdb7cf200f52321e07c9de996 disapproval of revision '947ccb889812585e6d53eac13fc12734d8481e33' diff -r 0a0fa9fd5feb -r 840e7e1b6dac libpurple/protocols/yahoo/util.c --- a/libpurple/protocols/yahoo/util.c Wed Jan 16 06:58:48 2008 +0000 +++ b/libpurple/protocols/yahoo/util.c Thu Jan 17 05:53:12 2008 +0000 @@ -164,6 +164,20 @@ return g_strdup(""); } +char *yahoo_convert_to_numeric(const char *str) +{ + char *retstr, buf[7]; + const char *p; + + retstr = (char*)malloc(strlen(str) * 6 + 1); + memset(retstr, 0x00, sizeof(retstr)); + for (p = str; *p; p++) { + sprintf(buf, "&#%d;", (unsigned char)*p); + strcat(retstr, buf); + } + return retstr; +} + /* * I found these on some website but i don't know that they actually * work (or are supposed to work). I didn't implement them yet. diff -r 0a0fa9fd5feb -r 840e7e1b6dac libpurple/protocols/yahoo/yahoo.h --- a/libpurple/protocols/yahoo/yahoo.h Wed Jan 16 06:58:48 2008 +0000 +++ b/libpurple/protocols/yahoo/yahoo.h Thu Jan 17 05:53:12 2008 +0000 @@ -218,6 +218,8 @@ */ char *yahoo_string_decode(PurpleConnection *gc, const char *str, gboolean utf8); +char *yahoo_convert_to_numeric(const char *str); + /* previously-static functions, now needed for yahoo_profile.c */ void yahoo_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full); diff -r 0a0fa9fd5feb -r 840e7e1b6dac libpurple/protocols/yahoo/yahoo_aliases.c --- a/libpurple/protocols/yahoo/yahoo_aliases.c Wed Jan 16 06:58:48 2008 +0000 +++ b/libpurple/protocols/yahoo/yahoo_aliases.c Thu Jan 17 05:53:12 2008 +0000 @@ -226,17 +226,18 @@ { struct yahoo_data *yd; struct YahooUser *yu; - char *content, *url, *request, *webpage, *webaddress, *strtmp, *alias_jp; + char *content, *url, *request, *webpage, *webaddress, *strtmp; int inttmp; struct callback_data *cb; PurpleBuddy *buddy; PurpleUtilFetchUrlData *url_data; + char *alias_jp, *converted_alias_jp; g_return_if_fail(alias != NULL); g_return_if_fail(who != NULL); g_return_if_fail(gc != NULL); - purple_debug_info("yahoo", "Sending '%s' as new alias for user '%s'.\n", alias, who); + purple_debug_info("yahoo", "Sending '%s' as new alias for user '%s'.\n",alias, who); buddy = purple_find_buddy(gc->account, who); if (buddy == NULL || buddy->proto_data == NULL) { @@ -253,15 +254,16 @@ cb->gc = gc; /* Build all the info to make the web request */ - url = yd->jp ? YAHOOJP_ALIAS_UPDATE_URL : YAHOO_ALIAS_UPDATE_URL; + url = yd->jp? YAHOOJP_ALIAS_UPDATE_URL: YAHOO_ALIAS_UPDATE_URL; purple_url_parse(url, &webaddress, &inttmp, &webpage, &strtmp, &strtmp); if (yd->jp) { alias_jp = g_convert(alias, strlen(alias), "EUC-JP", "UTF-8", NULL, NULL, NULL); + converted_alias_jp = yahoo_convert_to_numeric(alias_jp); content = g_strdup_printf("\n" "\n\r\n", - gc->account->username, who, yu->id, - g_markup_escape_text(alias_jp, strlen(alias_jp))); + gc->account->username, who, yu->id, converted_alias_jp); + free(converted_alias_jp); g_free(alias_jp); } else {