# HG changeset patch # User Sadrul Habib Chowdhury # Date 1209869369 0 # Node ID e61d5778b0650396ac8b391f58b9948d9d49f654 # Parent d2c7f183c08fb5af44169f7e91105681006c6a35# Parent 08befc594de4b4b302dd148c50d5d9724c00505e merge of '8c40d658dc534ac7ccbf595c73c2952ff9d1975e' and 'f437e9068c55a8150ca5037abe618c39190b60c0' diff -r 08befc594de4 -r e61d5778b065 ChangeLog --- a/ChangeLog Sat May 03 21:23:18 2008 +0000 +++ b/ChangeLog Sun May 04 02:49:29 2008 +0000 @@ -7,6 +7,8 @@ * IRC now displays ban lists in-channel for joined channels. * Fixed a bug where the list of loaded plugins would get removed when switching between different operating systems. + * Fix reception of IRC PART without a part message on Undernet + (fixes a problem with litter in the channel user list). Pidgin: * The typing notification in the conversation history can be disabled or diff -r 08befc594de4 -r e61d5778b065 libpurple/log.c --- a/libpurple/log.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/log.c Sun May 04 02:49:29 2008 +0000 @@ -667,6 +667,18 @@ purple_log_uninit(void) { purple_signals_unregister_by_instance(purple_log_get_handle()); + + purple_log_logger_remove(html_logger); + purple_log_logger_free(html_logger); + html_logger = NULL; + + purple_log_logger_remove(txt_logger); + purple_log_logger_free(txt_logger); + txt_logger = NULL; + + purple_log_logger_remove(old_logger); + purple_log_logger_free(old_logger); + old_logger = NULL; } /**************************************************************************** diff -r 08befc594de4 -r e61d5778b065 libpurple/plugins/log_reader.c --- a/libpurple/plugins/log_reader.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/plugins/log_reader.c Sun May 04 02:49:29 2008 +0000 @@ -2789,14 +2789,34 @@ g_return_val_if_fail(plugin != NULL, FALSE); purple_log_logger_remove(adium_logger); + purple_log_logger_free(adium_logger); + adium_logger = NULL; + #if 0 purple_log_logger_remove(fire_logger); + purple_log_logger_free(fire_logger); + fire_logger = NULL; + purple_log_logger_remove(messenger_plus_logger); + purple_log_logger_free(messenger_plus_logger); + messenger_plus_logger = NULL; #endif + purple_log_logger_remove(msn_logger); + purple_log_logger_free(msn_logger); + msn_logger = NULL; + purple_log_logger_remove(trillian_logger); + purple_log_logger_free(trillian_logger); + trillian_logger = NULL; + purple_log_logger_remove(qip_logger); + purple_log_logger_free(qip_logger); + qip_logger = NULL; + purple_log_logger_remove(amsn_logger); + purple_log_logger_free(amsn_logger); + amsn_logger = NULL; return TRUE; } diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/irc/msgs.c --- a/libpurple/protocols/irc/msgs.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/irc/msgs.c Sun May 04 02:49:29 2008 +0000 @@ -1015,14 +1015,18 @@ { PurpleConnection *gc = purple_account_get_connection(irc->account); PurpleConversation *convo; - char *nick, *msg; + char *nick, *msg, *channel; if (!args || !args[0] || !gc) return; - convo = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, args[0], irc->account); + /* Undernet likes to :-quote the channel name, for no good reason + * that I can see. This catches that. */ + channel = (args[0][0] == ':') ? &args[0][1] : args[0]; + + convo = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, channel, irc->account); if (!convo) { - purple_debug(PURPLE_DEBUG_INFO, "irc", "Got a PART on %s, which doesn't exist -- probably closed\n", args[0]); + purple_debug(PURPLE_DEBUG_INFO, "irc", "Got a PART on %s, which doesn't exist -- probably closed\n", channel); return; } @@ -1033,7 +1037,7 @@ (args[1] && *args[1]) ? ": " : "", (escaped && *escaped) ? escaped : ""); g_free(escaped); - purple_conv_chat_write(PURPLE_CONV_CHAT(convo), args[0], msg, PURPLE_MESSAGE_SYSTEM, time(NULL)); + purple_conv_chat_write(PURPLE_CONV_CHAT(convo), channel, msg, PURPLE_MESSAGE_SYSTEM, time(NULL)); g_free(msg); serv_got_chat_left(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(convo))); } else { diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/msn/contact.c --- a/libpurple/protocols/msn/contact.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/msn/contact.c Sun May 04 02:49:29 2008 +0000 @@ -100,56 +100,46 @@ void msn_callback_state_set_who(MsnCallbackState *state, const gchar *who) { - gchar *nval; g_return_if_fail(state != NULL); - nval = g_strdup(who); g_free(state->who); - state->who = nval; + state->who = g_strdup(who); } void msn_callback_state_set_uid(MsnCallbackState *state, const gchar *uid) { - gchar *nval; g_return_if_fail(state != NULL); - nval = g_strdup(uid); g_free(state->uid); - state->uid = nval; + state->uid = g_strdup(uid); } void msn_callback_state_set_old_group_name(MsnCallbackState *state, const gchar *old_group_name) { - gchar *nval; g_return_if_fail(state != NULL); - nval = g_strdup(old_group_name); g_free(state->old_group_name); - state->old_group_name = nval; + state->old_group_name = g_strdup(old_group_name); } void msn_callback_state_set_new_group_name(MsnCallbackState *state, const gchar *new_group_name) { - gchar *nval; g_return_if_fail(state != NULL); - nval = g_strdup(new_group_name); g_free(state->new_group_name); - state->new_group_name = nval; + state->new_group_name = g_strdup(new_group_name); } void msn_callback_state_set_guid(MsnCallbackState *state, const gchar *guid) { - gchar *nval; g_return_if_fail(state != NULL); - nval = g_strdup(guid); g_free(state->guid); - state->guid = nval; + state->guid = g_strdup(guid); } @@ -495,12 +485,13 @@ xmlnode *messenger_enabled; char *is_messenger_enabled = NULL; + g_free(mobile_number); mobile_number = xmlnode_get_data(number); if (mobile_number && - (messenger_enabled = xmlnode_get_child(contact_phone, "isMessengerEnabled")) - && (is_messenger_enabled = xmlnode_get_data(messenger_enabled)) - && !strcmp(is_messenger_enabled, "true")) + (messenger_enabled = xmlnode_get_child(contact_phone, "isMessengerEnabled")) + && (is_messenger_enabled = xmlnode_get_data(messenger_enabled)) + && !strcmp(is_messenger_enabled, "true")) mobile = TRUE; g_free(is_messenger_enabled); @@ -538,6 +529,7 @@ g_free(Name); g_free(uid); g_free(type); + g_free(mobile_number); passport = Name = uid = type = mobile_number = NULL; mobile = FALSE; @@ -659,6 +651,7 @@ g_free(Name); g_free(uid); g_free(type); + g_free(mobile_number); } static gboolean @@ -691,6 +684,7 @@ g_free(errorcode); return TRUE; } + g_free(errorcode); } return FALSE; diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/msn/dialog.c --- a/libpurple/protocols/msn/dialog.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/msn/dialog.c Sun May 04 02:49:29 2008 +0000 @@ -112,7 +112,7 @@ data = g_new0(MsnAddRemData, 1); data->who = g_strdup(passport); - data->group = group_name != NULL ? g_strdup(group_name) : NULL; + data->group = g_strdup(group_name); data->gc = gc; msg = g_strdup_printf(_("Buddy list synchronization issue in %s (%s)"), diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/msn/nexus.c --- a/libpurple/protocols/msn/nexus.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/msn/nexus.c Sun May 04 02:49:29 2008 +0000 @@ -52,6 +52,7 @@ if (nexus->challenge_data != NULL) g_hash_table_destroy(nexus->challenge_data); + g_free(nexus->challenge_data_str); g_free(nexus); } @@ -101,13 +102,10 @@ msn_twn_p = g_hash_table_lookup(nexus->challenge_data, "p"); /*setup the t and p parameter for session*/ - if (session->passport_info.t != NULL){ - g_free(session->passport_info.t); - } + g_free(session->passport_info.t); session->passport_info.t = g_strdup(msn_twn_t); - if (session->passport_info.p != NULL) - g_free(session->passport_info.p); + g_free(session->passport_info.p); session->passport_info.p = g_strdup(msn_twn_p); cert_str = g_strdup_printf("t=%s&p=%s",msn_twn_t,msn_twn_p); @@ -133,7 +131,8 @@ MsnSession *session = nexus->session; char *ru,*lc,*id,*tw,*ct,*kpp,*kv,*ver,*rn,*tpf; char *fs0,*fs; - char *username, *password; + const char *username; + char *password; char *tail; #ifdef NEXUS_LOGIN_TWN char *challenge_str; @@ -147,7 +146,7 @@ msn_session_set_login_step(session, MSN_LOGIN_STEP_GET_COOKIE); /*prepare the Windows Live ID authentication token*/ - username = g_strdup(purple_account_get_username(session->account)); + username = purple_account_get_username(session->account); password = g_strndup(purple_connection_get_password(session->account->gc), 16); lc = (char *)g_hash_table_lookup(nexus->challenge_data, "lc"); @@ -170,7 +169,6 @@ if(!(lc && id && tw && ru && ct && kpp && kv && ver && tpf)){ purple_debug_error("MSN Nexus","WLM Authenticate Key Error!\n"); msn_session_set_error(session, MSN_ERROR_AUTH, _("Windows Live ID authentication Failed")); - g_free(username); g_free(password); msn_nexus_destroy(nexus); session->nexus = NULL; diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/msn/notification.c --- a/libpurple/protocols/msn/notification.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/msn/notification.c Sun May 04 02:49:29 2008 +0000 @@ -414,7 +414,9 @@ { g_return_if_fail(cmd->payload_cb != NULL); - purple_debug_info("MSNP14", "MSG payload:{%.*s}\n", (guint)(cmd->payload_len), cmd->payload); +#if 0 /* glib on win32 doesn't correctly support precision modifiers for a string */ + purple_debug_info("MSNP14", "MSG payload:{%.*s}\n", cmd->payload_len, cmd->payload); +#endif cmd->payload_cb(cmdproc, cmd, cmd->payload, cmd->payload_len); } } @@ -647,8 +649,8 @@ { MsnTransaction *trans; purple_debug_info("MSN Notification","Sending ADL with payload: %s\n", payload); - trans = msn_transaction_new(cmdproc, "ADL","%" G_GSIZE_FORMAT, strlen(payload)); - msn_transaction_set_payload(trans, payload, strlen(payload)); + trans = msn_transaction_new(cmdproc, "ADL","%" G_GSIZE_FORMAT, payload_len); + msn_transaction_set_payload(trans, payload, payload_len); msn_cmdproc_send_trans(cmdproc, trans); } @@ -1705,6 +1707,9 @@ msn_user_set_currentmedia(user, &media); else msn_user_set_currentmedia(user, NULL); + g_free(media.title); + g_free(media.album); + g_free(media.artist); g_free(str); msn_user_update(user); diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/msn/oim.c --- a/libpurple/protocols/msn/oim.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/msn/oim.c Sun May 04 02:49:29 2008 +0000 @@ -58,7 +58,7 @@ oim = g_new0(MsnOim, 1); oim->session = session; - oim->oim_list = NULL; + oim->oim_list = NULL; oim->run_id = rand_guid(); oim->challenge = NULL; oim->send_queue = g_queue_new(); @@ -71,16 +71,18 @@ msn_oim_destroy(MsnOim *oim) { MsnOimSendReq *request; - - purple_debug_info("OIM","destroy the OIM \n"); + + purple_debug_info("OIM", "destroy the OIM %p\n", oim); g_free(oim->run_id); g_free(oim->challenge); - + while((request = g_queue_pop_head(oim->send_queue)) != NULL){ msn_oim_free_send_req(request); } + g_queue_free(oim->send_queue); - + g_list_free(oim->oim_list); + g_free(oim); } @@ -91,7 +93,7 @@ MsnOimSendReq *request; request = g_new0(MsnOimSendReq, 1); - request->from_member =g_strdup(from_member); + request->from_member = g_strdup(from_member); request->friendname = g_strdup(friendname); request->to_member = g_strdup(to_member); request->oim_msg = g_strdup(msg); @@ -170,7 +172,6 @@ msg->oim_msg); g_queue_push_head(oim->send_queue, msg); msn_oim_send_msg(oim); - return; } else { purple_debug_info("msnoim", "can't find lock key for OIM: %s\n", @@ -191,9 +192,10 @@ purple_debug_info("MSNP14","resending OIM: %s\n", msg->oim_msg); g_queue_push_head(oim->send_queue, msg); msn_oim_send_msg(oim); - return; } } + + g_free(faultcode_str); } } } @@ -472,7 +474,7 @@ xmlnode *iu_node; MsnSession *session = oim->session; - purple_debug_info("MSNP14:OIM", "%s", xmlmsg); + purple_debug_info("MSNP14:OIM", "%s\n", xmlmsg); node = xmlnode_from_str(xmlmsg, -1); if (strcmp(node->name, "MD") != 0) { diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/msn/page.c --- a/libpurple/protocols/msn/page.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/msn/page.c Sun May 04 02:49:29 2008 +0000 @@ -39,14 +39,9 @@ { g_return_if_fail(page != NULL); - if (page->body != NULL) - g_free(page->body); - - if (page->from_location != NULL) - g_free(page->from_location); - - if (page->from_phone != NULL) - g_free(page->from_phone); + g_free(page->body); + g_free(page->from_location); + g_free(page->from_phone); g_free(page); } diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/msn/slp.c --- a/libpurple/protocols/msn/slp.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/msn/slp.c Sun May 04 02:49:29 2008 +0000 @@ -359,6 +359,7 @@ g_free(bin); purple_xfer_set_filename(xfer, file_name); + g_free(file_name); purple_xfer_set_size(xfer, file_size); purple_xfer_set_init_fnc(xfer, msn_xfer_init); purple_xfer_set_request_denied_fnc(xfer, msn_xfer_cancel); diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/msn/slpcall.c --- a/libpurple/protocols/msn/slpcall.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/msn/slpcall.c Sun May 04 02:49:29 2008 +0000 @@ -71,14 +71,9 @@ if (slpcall->timer) purple_timeout_remove(slpcall->timer); - if (slpcall->id != NULL) - g_free(slpcall->id); - - if (slpcall->branch != NULL) - g_free(slpcall->branch); - - if (slpcall->data_info != NULL) - g_free(slpcall->data_info); + g_free(slpcall->id); + g_free(slpcall->branch); + g_free(slpcall->data_info); for (e = slpcall->slplink->slp_msgs; e != NULL; ) { diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/msn/slplink.c --- a/libpurple/protocols/msn/slplink.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/msn/slplink.c Sun May 04 02:49:29 2008 +0000 @@ -101,11 +101,8 @@ session = slplink->session; - if (slplink->local_user != NULL) - g_free(slplink->local_user); - - if (slplink->remote_user != NULL) - g_free(slplink->remote_user); + g_free(slplink->local_user); + g_free(slplink->remote_user); #if 0 if (slplink->directconn != NULL) diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/msn/slpmsg.c --- a/libpurple/protocols/msn/slpmsg.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/msn/slpmsg.c Sun May 04 02:49:29 2008 +0000 @@ -95,6 +95,7 @@ msg->nak_cb = NULL; msg->ack_data = NULL; } + g_list_free(slpmsg->msgs); slplink->slp_msgs = g_list_remove(slplink->slp_msgs, slpmsg); diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/msn/soap2.c --- a/libpurple/protocols/msn/soap2.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/msn/soap2.c Sun May 04 02:49:29 2008 +0000 @@ -261,7 +261,7 @@ static void msn_soap_read_cb(gpointer data, gint fd, PurpleInputCondition cond) { - MsnSoapConnection *conn = data; + MsnSoapConnection *conn = data; int count = 0, cnt; char buf[8192]; char *linebreak; @@ -382,7 +382,7 @@ } if (!handled && conn->headers_done) { - if (conn->buf->len - conn->handled_len >= + if (conn->buf->len - conn->handled_len >= conn->body_len) { xmlnode *node = xmlnode_from_str(cursor, conn->body_len); @@ -394,8 +394,11 @@ conn->message = NULL; message->xml = node; - if (!msn_soap_handle_body(conn, message)) + if (!msn_soap_handle_body(conn, message)) { + msn_soap_message_destroy(message); return; + } + msn_soap_message_destroy(message); } msn_soap_connection_handle_next(conn); @@ -508,7 +511,7 @@ g_free(authstr); g_free(body); - } + } } return FALSE; @@ -643,12 +646,12 @@ } void -msn_soap_message_add_header(MsnSoapMessage *req, +msn_soap_message_add_header(MsnSoapMessage *message, const char *name, const char *value) { char *header = g_strdup_printf("%s: %s\r\n", name, value); - req->headers = g_slist_prepend(req->headers, header); + message->headers = g_slist_prepend(message->headers, header); } static void diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/msn/sync.c --- a/libpurple/protocols/msn/sync.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/msn/sync.c Sun May 04 02:49:29 2008 +0000 @@ -156,16 +156,13 @@ for (c = tokens; *c != NULL; c++) { - char *id; - - id = *c; - group_ids = g_slist_append(group_ids, g_strdup(id)); + group_ids = g_slist_append(group_ids, *c); } - g_strfreev(tokens); msn_got_lst_user(session, user, list_op, group_ids); + g_strfreev(tokens); g_slist_free(group_ids); } else diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/msn/userlist.c --- a/libpurple/protocols/msn/userlist.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/msn/userlist.c Sun May 04 02:49:29 2008 +0000 @@ -349,8 +349,7 @@ GSList *c; for (c = group_ids; c != NULL; c = g_slist_next(c)) { - char *group_id; - group_id = c->data; + char *group_id = c->data; msn_user_add_group_id(user, group_id); } diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/yahoo/yahoo.c --- a/libpurple/protocols/yahoo/yahoo.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/yahoo/yahoo.c Sun May 04 02:49:29 2008 +0000 @@ -3483,9 +3483,12 @@ { PurpleConnection *gc = user_data; gboolean set_cookie = FALSE; - char *url; + gchar *url; + struct yahoo_data *yd = gc->proto_data; g_return_if_fail(PURPLE_CONNECTION_IS_VALID(gc)); + + yd->url_datas = g_slist_remove(yd->url_datas, url_data); if (error_message != NULL) purple_debug_error("yahoo", "Requesting mail login token failed: %s\n", error_message); @@ -3500,7 +3503,6 @@ } if (!set_cookie) { - struct yahoo_data *yd = gc->proto_data; purple_debug_error("yahoo", "No mail login token; forwarding to login screen.\n"); url = g_strdup(yd->jp ? YAHOOJP_MAIL_URL : YAHOO_MAIL_URL); } @@ -3541,7 +3543,9 @@ g_free(request); - if (url_data == NULL) { + if (url_data != NULL) + yd->url_datas = g_slist_prepend(yd->url_datas, url_data); + else { const char *yahoo_mail_url = (yd->jp ? YAHOOJP_MAIL_URL : YAHOO_MAIL_URL); purple_debug_error("yahoo", "Unable to request mail login token; forwarding to login screen."); diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/yahoo/yahoo_aliases.c --- a/libpurple/protocols/yahoo/yahoo_aliases.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/yahoo/yahoo_aliases.c Sun May 04 02:49:29 2008 +0000 @@ -32,6 +32,7 @@ #include "version.h" #include "yahoo.h" #include "yahoo_aliases.h" +#include "yahoo_friend.h" #include "yahoo_packet.h" /* I hate hardcoding this stuff, but Yahoo never sends us anything to use. Someone in the know may be able to tweak this URL */ @@ -70,7 +71,8 @@ } else { gchar *full_name, *nick_name, *alias; const char *yid, *id, *fn, *ln, *nn; - PurpleBuddy *b = NULL; + YahooFriend *f; + PurpleBuddy *b; xmlnode *item, *contacts; /* Put our web response into a xmlnode for easy management */ @@ -108,19 +110,12 @@ alias = full_name; /* If no Yahoo nickname, we can use the full_name created above */ /* Find the local buddy that matches */ + f = yahoo_friend_find(cb->gc, yid); b = purple_find_buddy(cb->gc->account, yid); /* If we don't find a matching buddy, ignore the alias !! */ - if (b != NULL) { - /* Create an object that we can attach to the buddies proto_data pointer */ - struct YahooUser *yu; - yu = g_new0(struct YahooUser, 1); - yu->id = g_strdup(id); - yu->firstname = g_strdup(fn); - yu->lastname = g_strdup(ln); - yu->nickname = g_strdup(nn); - /* TODO: Isn't there a possiblity that b->proto_data is already set? */ - b->proto_data=yu; + if (f != NULL && b != NULL) { + yahoo_friend_set_alias_id(f, id); /* Finally, if we received an alias, we better update the buddy list */ if (alias != NULL) { @@ -237,14 +232,13 @@ yahoo_update_alias(PurpleConnection *gc, const char *who, const char *alias) { struct yahoo_data *yd; - struct YahooUser *yu; char *content, *url, *request, *webpage, *webaddress, *strtmp; char *escaped_alias, *alias_jp, *converted_alias_jp; int inttmp; struct callback_data *cb; - PurpleBuddy *buddy; PurpleUtilFetchUrlData *url_data; gboolean use_whole_url = FALSE; + YahooFriend *f; /* use whole URL if using HTTP Proxy */ if ((gc->account->proxy_info) && (gc->account->proxy_info->type == PURPLE_PROXY_HTTP)) @@ -254,20 +248,19 @@ 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) { + f = yahoo_friend_find(gc, who); + if (f == NULL) { purple_debug_info("yahoo", "Missing proto_data (get_yahoo_aliases must have failed), bailing out\n"); return; } yd = gc->proto_data; - yu = buddy->proto_data; /* Using callback_data so I have access to gc in the callback function */ cb = g_new0(struct callback_data, 1); - cb->id = g_strdup(yu->id); + cb->id = g_strdup(yahoo_friend_get_alias_id(f)); cb->gc = gc; /* Build all the info to make the web request */ @@ -279,7 +272,7 @@ converted_alias_jp = yahoo_convert_to_numeric(alias_jp); content = g_strdup_printf("\n" "\n\r\n", - gc->account->username, who, yu->id, converted_alias_jp); + gc->account->username, who, yahoo_friend_get_alias_id(f), converted_alias_jp); free(converted_alias_jp); g_free(alias_jp); } @@ -287,7 +280,7 @@ escaped_alias = g_markup_escape_text(alias, strlen(alias)); content = g_strdup_printf("\n" "\n\r\n", - gc->account->username, who, yu->id, escaped_alias); + gc->account->username, who, yahoo_friend_get_alias_id(f), escaped_alias); g_free(escaped_alias); } diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/yahoo/yahoo_aliases.h --- a/libpurple/protocols/yahoo/yahoo_aliases.h Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/yahoo/yahoo_aliases.h Sun May 04 02:49:29 2008 +0000 @@ -33,18 +33,6 @@ #include "yahoo.h" #include "yahoo_packet.h" - -/** - * The additional protocol specific info attached to each buddy. We need - * to store the unique numeric id number to allow us to push alias changes. - */ -struct YahooUser -{ - const char *id; /* The yahoo accountid for this buddy (not YahooID but numeric value) */ - char *firstname; /* Storing this information for no real reason, just because */ - char *lastname; /* Storing this information for no real reason, just because */ - char *nickname; /* Storing this information for no real reason, just because */ -}; - void yahoo_update_alias(PurpleConnection *gc, const char *who, const char *alias); void yahoo_fetch_aliases(PurpleConnection *gc); + diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/yahoo/yahoo_friend.c --- a/libpurple/protocols/yahoo/yahoo_friend.c Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/yahoo/yahoo_friend.c Sun May 04 02:49:29 2008 +0000 @@ -76,8 +76,7 @@ void yahoo_friend_set_ip(YahooFriend *f, const char *ip) { - if (f->ip) - g_free(f->ip); + g_free(f->ip); f->ip = g_strdup(ip); } @@ -88,8 +87,7 @@ void yahoo_friend_set_game(YahooFriend *f, const char *game) { - if (f->game) - g_free(f->game); + g_free(f->game); if (game) f->game = g_strdup(game); @@ -104,8 +102,7 @@ void yahoo_friend_set_status_message(YahooFriend *f, char *msg) { - if (f->msg) - g_free(f->msg); + g_free(f->msg); f->msg = msg; } @@ -125,15 +122,24 @@ return !f->bicon_sent_request; } +void yahoo_friend_set_alias_id(YahooFriend *f, const char *alias_id) +{ + g_free(f->alias_id); + f->alias_id = g_strdup(alias_id); +} + +const char *yahoo_friend_get_alias_id(YahooFriend *f) +{ + return f->alias_id; +} + void yahoo_friend_free(gpointer p) { YahooFriend *f = p; - if (f->msg) - g_free(f->msg); - if (f->game) - g_free(f->game); - if (f->ip) - g_free(f->ip); + g_free(f->msg); + g_free(f->game); + g_free(f->ip); + g_free(f->alias_id); g_free(f); } diff -r 08befc594de4 -r e61d5778b065 libpurple/protocols/yahoo/yahoo_friend.h --- a/libpurple/protocols/yahoo/yahoo_friend.h Sat May 03 21:23:18 2008 +0000 +++ b/libpurple/protocols/yahoo/yahoo_friend.h Sun May 04 02:49:29 2008 +0000 @@ -39,16 +39,17 @@ */ typedef struct _YahooFriend { enum yahoo_status status; - char *msg; - char *game; + gchar *msg; + gchar *game; int idle; int away; gboolean sms; - char *ip; + gchar *ip; gboolean bicon_sent_request; YahooPresenceVisibility presence; int protocol; /* 1=LCS, 2=MSN*/ long int version_id; + gchar *alias_id; } YahooFriend; YahooFriend *yahoo_friend_find(PurpleConnection *gc, const char *name); @@ -63,6 +64,9 @@ void yahoo_friend_set_status_message(YahooFriend *f, char *msg); const char *yahoo_friend_get_status_message(YahooFriend *f); +void yahoo_friend_set_alias_id(YahooFriend *f, const char *alias_id); +const char *yahoo_friend_get_alias_id(YahooFriend *f); + void yahoo_friend_set_buddy_icon_need_request(YahooFriend *f, gboolean needs); gboolean yahoo_friend_get_buddy_icon_need_request(YahooFriend *f); diff -r 08befc594de4 -r e61d5778b065 pidgin/gtkaccount.c --- a/pidgin/gtkaccount.c Sat May 03 21:23:18 2008 +0000 +++ b/pidgin/gtkaccount.c Sun May 04 02:49:29 2008 +0000 @@ -511,10 +511,6 @@ gtk_entry_set_text(GTK_ENTRY(dialog->password_entry), purple_account_get_password(dialog->account)); - if (purple_account_get_alias(dialog->account)) - gtk_entry_set_text(GTK_ENTRY(dialog->alias_entry), - purple_account_get_alias(dialog->account)); - gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(dialog->remember_pass_check), purple_account_get_remember_password(dialog->account)); @@ -635,6 +631,10 @@ gpointer data = NULL; size_t len = 0; + if (purple_account_get_alias(dialog->account)) + gtk_entry_set_text(GTK_ENTRY(dialog->alias_entry), + purple_account_get_alias(dialog->account)); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->new_mail_check), purple_account_get_check_mail(dialog->account)); diff -r 08befc594de4 -r e61d5778b065 pidgin/gtkprefs.c --- a/pidgin/gtkprefs.c Sat May 03 21:23:18 2008 +0000 +++ b/pidgin/gtkprefs.c Sun May 04 02:49:29 2008 +0000 @@ -1075,7 +1075,7 @@ #endif pidgin_prefs_labeled_spin_button(vbox, - _("Minimum lines of text to show in message input"), + _("Minimum input area height in lines:"), PIDGIN_PREFS_ROOT "/conversations/minimum_entry_lines", 1, 8, NULL);