# HG changeset patch # User Yoshiki Yazawa # Date 1183048975 -32400 # Node ID f1dc959e4706a41dc4cf3f6c8172399439162054 # Parent 46071692f19104e469e3a4db5baf4bb8838165df modify process_alias to follow recent changes. diff -r 46071692f191 -r f1dc959e4706 pidgin-audacious.c --- a/pidgin-audacious.c Thu Jun 28 21:36:17 2007 +0900 +++ b/pidgin-audacious.c Fri Jun 29 01:42:55 2007 +0900 @@ -271,15 +271,13 @@ static void aud_process_alias(PurpleConnection *gc, gchar *aud_info) { - gchar *new; - const gchar *old, *proto; + gchar *new = NULL, *key = NULL; + const gchar *current, *seed, *pushed, *proto; PurpleAccount *account; PurplePlugin *prpl; PurplePluginProtocolInfo *prpl_info; - gpointer val; // for hash - glong bytes; - gchar *key; + glong bytes; account = purple_connection_get_account(gc); @@ -290,57 +288,54 @@ prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); g_return_if_fail(prpl_info != NULL); - /* retrieve the old alias */ -// old = purple_url_decode(purple_account_get_alias(account)); - old = purple_account_get_alias(account); - if(old == NULL || strlen(old) == 0) { - aud_error("couldn't get old alias\n"); + /* generate key for hash table*/ + key = g_strdup_printf("%s %s", account->username, account->protocol_id); + + /* retrieve current alias */ +// current = purple_url_decode(purple_account_get_alias(account)); + current = purple_account_get_alias(account); + if(current == NULL || strlen(current) == 0) { + aud_error("couldn't get current alias\n"); + g_free(key); return; } - aud_debug("old alias = %s\n", old); + aud_debug("current alias = %s\n", current); - /* generate key for hash table*/ - key = g_strdup_printf("%s %s", account->username, account->protocol_id); -// aud_debug("alias key = %s\n", key); + /* pop pushed_alias */ + pushed = g_hash_table_lookup(pushed_alias, key); - val = g_hash_table_lookup(pushed_alias, key); - - /* if current alias differs from pushed_alias or contains token, replace seed with this. */ - if( (val && g_ascii_strcasecmp(old, val)) || strstr(old, SONG_TOKEN) ) { - g_hash_table_replace(seed_alias, g_strdup(key), g_strdup(old)); + /* if current alias differs from pushed_alias or contains token, replace seed with current. */ + if( (pushed && g_ascii_strcasecmp(current, pushed)) || strstr(current, SONG_TOKEN) ) { + g_hash_table_replace(seed_alias, g_strdup(key), g_strdup(current)); +// g_hash_table_replace(pushed_alias, g_strdup(key), g_strdup(current)); //XXX should do? } /* construct new status message */ - val = g_hash_table_lookup(seed_alias, key); - g_return_if_fail(val != NULL); + seed = g_hash_table_lookup(seed_alias, key); + g_return_if_fail(seed != NULL); + aud_debug("alias: seed = %s\n", (gchar *)seed); - bytes = strlen(val); + bytes = strlen(seed); bytes -= strlen(SONG_TOKEN); aud_debug("alias: bytes = %ld", bytes); - aud_debug("alias: stored = %s\n", (gchar *)val); - if(aud_info){ gchar *tmp = g_malloc0(BUDDY_ALIAS_MAXLEN); glong utflen = g_utf8_strlen(aud_info, BUDDY_ALIAS_MAXLEN/3 - bytes - 1); g_utf8_strncpy(tmp, aud_info, utflen); -// aud_debug("alias: utflen = %ld tmp = %s\n", utflen, tmp); - new = purple_strreplace(val, SONG_TOKEN, tmp); -// aud_debug("alias: new bytes = %ld new = %s\n", strlen(new), new); + new = purple_strreplace(seed, SONG_TOKEN, tmp); g_free(tmp); } else { - new = purple_strreplace(val, SONG_TOKEN, NO_SONG_MESSAGE); + new = purple_strreplace(seed, SONG_TOKEN, NO_SONG_MESSAGE); } - g_return_if_fail(new != NULL); /* set user info only if text has been changed */ - val = g_hash_table_lookup(pushed_alias, key); - aud_debug("alias pushed = %s\n", (gchar *)val); + pushed = g_hash_table_lookup(pushed_alias, key); + aud_debug("alias pushed = %s\n", (gchar *)pushed); - if (!val || g_ascii_strcasecmp(val, new) != 0) { - //gint result; + if (!pushed || g_ascii_strcasecmp(pushed, new) != 0) { gboolean ok = FALSE; PurplePlugin *msn_plugin = NULL; msn_plugin = purple_plugins_find_with_id("prpl-msn");