# HG changeset patch # User Will Thompson # Date 1200837266 0 # Node ID d1fe81e3a850fe657baac502fb1a27c66ed00c65 # Parent 451b7edf79ef599773b27d93235eed953df9ed88# Parent caeb452845ef656a30327054aa525a90cab2447b merge of '131ee6ac42d38162c4fce7a7200a0afa01aed6ce' and '7180f1790b23a722d6c377359e36bcc7cc7cca05' diff -r 451b7edf79ef -r d1fe81e3a850 finch/gntcertmgr.c --- a/finch/gntcertmgr.c Sun Jan 20 13:31:19 2008 +0000 +++ b/finch/gntcertmgr.c Sun Jan 20 13:54:26 2008 +0000 @@ -235,7 +235,7 @@ purple_request_close_with_handle((void *)key); purple_request_yes_no((void *)key, _("Confirm certificate delete"), primary, NULL, - 2, + 1, NULL, NULL, NULL, g_strdup(key), tls_peers_mgmt_delete_confirm_cb, diff -r 451b7edf79ef -r d1fe81e3a850 finch/gntrequest.c --- a/finch/gntrequest.c Sun Jan 20 13:31:19 2008 +0000 +++ b/finch/gntrequest.c Sun Jan 20 13:54:26 2008 +0000 @@ -253,7 +253,7 @@ void *user_data, size_t actioncount, va_list actions) { - GntWidget *window, *box, *button; + GntWidget *window, *box, *button, *focus = NULL; int i; window = setup_request_window(title, primary, secondary, PURPLE_REQUEST_ACTION); @@ -272,9 +272,14 @@ g_object_set_data(G_OBJECT(button), "activate-userdata", user_data); g_object_set_data(G_OBJECT(button), "activate-id", GINT_TO_POINTER(i)); g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(request_action_cb), window); + + if (i == default_value) + focus = button; } gnt_widget_show(window); + if (focus) + gnt_box_give_focus_to_child(GNT_BOX(window), focus); return window; } diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/certificate.c --- a/libpurple/certificate.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/certificate.c Sun Jan 20 13:54:26 2008 +0000 @@ -568,7 +568,7 @@ _("Single-use Certificate Verification"), primary, secondary, - 1, /* Accept by default */ + 0, /* Accept by default */ NULL, /* No account */ NULL, /* No other user */ NULL, /* No associated conversation */ @@ -1199,7 +1199,7 @@ _("SSL Certificate Verification"), primary, reason, - 2, /* Accept by default */ + 0, /* Accept by default */ NULL, /* No account */ NULL, /* No other user */ NULL, /* No associated conversation */ diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/example/Makefile.am --- a/libpurple/example/Makefile.am Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/example/Makefile.am Sun Jan 20 13:54:26 2008 +0000 @@ -17,7 +17,8 @@ -DLIBDIR=\"$(libdir)/purple-$(PURPLE_MAJOR_VERSION)/\" \ -DLOCALEDIR=\"$(datadir)/locale\" \ -DSYSCONFDIR=\"$(sysconfdir)\" \ - -I$(top_srcdir)/libpurple/ \ + -I$(top_builddir)/libpurple \ + -I$(top_srcdir)/libpurple \ -I$(top_srcdir) \ $(DEBUG_CFLAGS) \ $(GLIB_CFLAGS) \ diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/example/nullclient.c --- a/libpurple/example/nullclient.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/example/nullclient.c Sun Jan 20 13:54:26 2008 +0000 @@ -21,28 +21,11 @@ * */ -/* XXX: we probably shouldn't include internal.h in examples */ -#include "internal.h" - -#include "account.h" -#include "conversation.h" -#include "core.h" -#include "debug.h" -#include "eventloop.h" -#include "ft.h" -#include "log.h" -#include "notify.h" -#include "prefs.h" -#include "prpl.h" -#include "pounce.h" -#include "savedstatuses.h" -#include "sound.h" -#include "status.h" -#include "util.h" -#include "whiteboard.h" +#include "purple.h" #include +#include #include #include diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/plugins/offlinemsg.c --- a/libpurple/plugins/offlinemsg.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/plugins/offlinemsg.c Sun Jan 20 13:54:26 2008 +0000 @@ -159,7 +159,7 @@ purple_request_action(handle, _("Offline Message"), ask, _("You can edit/delete the pounce from the `Buddy Pounces' dialog"), - 1, + 0, offline->account, offline->who, offline->conv, offline, 2, _("Yes"), record_pounce, diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/protocols/irc/dcc_send.c --- a/libpurple/protocols/irc/dcc_send.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/protocols/irc/dcc_send.c Sun Jan 20 13:54:26 2008 +0000 @@ -56,7 +56,7 @@ l = htonl(xfer->bytes_sent); result = write(xfer->fd, &l, sizeof(l)); if (result != sizeof(l)) { - purple_debug_error("irc", "unable to send acknowledgement: %s\n", strerror(errno)); + purple_debug_error("irc", "unable to send acknowledgement: %s\n", g_strerror(errno)); /* TODO: We should probably close the connection here or something. */ } } diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/protocols/jabber/auth.c --- a/libpurple/protocols/jabber/auth.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/protocols/jabber/auth.c Sun Jan 20 13:54:26 2008 +0000 @@ -325,7 +325,7 @@ purple_request_yes_no(js->gc, _("Plaintext Authentication"), _("Plaintext Authentication"), msg, - 2, js->gc->account, NULL, NULL, js->gc->account, + 1, js->gc->account, NULL, NULL, js->gc->account, allow_cyrus_plaintext_auth, disallow_plaintext_auth); g_free(msg); @@ -527,7 +527,7 @@ purple_request_yes_no(js->gc, _("Plaintext Authentication"), _("Plaintext Authentication"), msg, - 2, + 1, purple_connection_get_account(js->gc), NULL, NULL, purple_connection_get_account(js->gc), allow_plaintext_auth, disallow_plaintext_auth); @@ -719,7 +719,7 @@ purple_request_yes_no(js->gc, _("Plaintext Authentication"), _("Plaintext Authentication"), _("This server requires plaintext authentication over an unencrypted connection. Allow this and continue authentication?"), - 2, + 1, purple_connection_get_account(js->gc), NULL, NULL, purple_connection_get_account(js->gc), allow_plaintext_auth, disallow_plaintext_auth); diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/protocols/msn/msn.c --- a/libpurple/protocols/msn/msn.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/protocols/msn/msn.c Sun Jan 20 13:54:26 2008 +0000 @@ -351,7 +351,7 @@ _("Do you want to allow or disallow people on " "your buddy list to send you MSN Mobile pages " "to your cell phone or other mobile device?"), - -1, + PURPLE_DEFAULT_ACTION_NONE, purple_connection_get_account(gc), NULL, NULL, gc, 3, _("Allow"), G_CALLBACK(enable_msn_pages_cb), diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/protocols/msnp9/msn.c --- a/libpurple/protocols/msnp9/msn.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/protocols/msnp9/msn.c Sun Jan 20 13:54:26 2008 +0000 @@ -347,7 +347,7 @@ _("Do you want to allow or disallow people on " "your buddy list to send you MSN Mobile pages " "to your cell phone or other mobile device?"), - -1, + PURPLE_DEFAULT_ACTION_NONE, purple_connection_get_account(gc), NULL, NULL, gc, 3, _("Allow"), G_CALLBACK(enable_msn_pages_cb), diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/protocols/msnp9/notification.c --- a/libpurple/protocols/msnp9/notification.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/protocols/msnp9/notification.c Sun Jan 20 13:54:26 2008 +0000 @@ -1012,7 +1012,7 @@ { purple_debug_error("msn", "Error opening temp passport file: %s\n", - strerror(errno)); + g_strerror(errno)); } else { @@ -1061,7 +1061,7 @@ { purple_debug_error("msn", "Error closing temp passport file: %s\n", - strerror(errno)); + g_strerror(errno)); g_unlink(session->passport_info.file); g_free(session->passport_info.file); diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/protocols/msnp9/servconn.c --- a/libpurple/protocols/msnp9/servconn.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/protocols/msnp9/servconn.c Sun Jan 20 13:54:26 2008 +0000 @@ -392,7 +392,7 @@ return; else if (len <= 0) { - purple_debug_error("msn", "servconn read error, len: %d error: %s\n", len, strerror(errno)); + purple_debug_error("msn", "servconn read error, len: %d error: %s\n", len, g_strerror(errno)); msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ); return; diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/protocols/myspace/myspace.c --- a/libpurple/protocols/myspace/myspace.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/protocols/myspace/myspace.c Sun Jan 20 13:54:26 2008 +0000 @@ -117,7 +117,7 @@ } return TRUE; } - + /** * Get possible user status types. Based on mockprpl. * @@ -552,10 +552,8 @@ * return 1 even if the message could not be sent, since I don't know if * it has failed yet--because the IM is only sent after the userid is * retrieved from the server (which happens after this function returns). + * If an error does occur, it should be logged to the IM window. */ - /* TODO: maybe if message is delayed, don't echo to conv window, - * but do echo it to conv window manually once it is actually - * sent? Would be complicated. */ rc = 1; } else { rc = -1; @@ -563,19 +561,6 @@ g_free(message_msim); - /* - * In MySpace, you login with your email address, but don't talk to other - * users using their email address. So there is currently an asymmetry in the - * IM windows when using this plugin: - * - * you@example.com: hello - * some_other_user: what's going on? - * you@example.com: just coding a prpl - * - * TODO: Make the sent IM's appear as from the user's username, instead of - * their email address. Purple uses the login (in MSIM, the email)--change this. - */ - return rc; } @@ -745,7 +730,10 @@ /* TODO: dump unknown msgs to file, so user can send them to me * if they wish, to help add support for new messages (inspired - * by Alexandr Shutko, who maintains OSCAR protocol documentation). */ + * by Alexandr Shutko, who maintains OSCAR protocol documentation). + * + * Filed enhancement ticket for libpurple as #4688. + */ purple_debug_info("msim", "Unrecognized data on account for %s\n", (session && session->account && session->account->username) ? @@ -787,9 +775,6 @@ msg_text, username); if (g_str_equal(msg_text, "%typing%")) { - /* TODO: find out if msim repeatedly sends typing messages, so we can - * give it a timeout. Right now, there does seem to be an inordinately - * amount of time between typing stopped-typing notifications. */ serv_got_typing(session->gc, username, 0, PURPLE_TYPING); rc = TRUE; } else if (g_str_equal(msg_text, "%stoptyping%")) { @@ -959,6 +944,7 @@ if (!user) { /* User isn't on blist, create a temporary user to store info. */ + /* TODO: is this legit, or is it somehow responsible for #3444? */ PurpleBuddy *buddy; user = g_new0(MsimUser, 1); @@ -1052,6 +1038,7 @@ guint status_code; const gchar *message; gchar *stripped; + gchar *unrecognized_msg; session = (MsimSession *)account->gc->proto_data; @@ -1083,6 +1070,12 @@ purple_debug_info("msim", "msim_set_status: unknown " "status interpreting as online"); status_code = MSIM_STATUS_CODE_ONLINE; + + unrecognized_msg = g_strdup_printf("msim_set_status, unrecognized status type: %d\n", + purple_status_type_get_primitive(type)); + msim_unrecognized(session, NULL, unrecognized_msg); + g_free(unrecognized_msg); + break; } @@ -1203,7 +1196,7 @@ msim_process(session, msg); /* TODO: Free copy cloned from msim_preprocess_incoming(). */ - //XXX msim_msg_free(msg); + /* msim_msg_free(msg); */ msim_msg_free(body); } @@ -1211,7 +1204,9 @@ * * @param wanted_uid * - * @return Username of wanted_uid, if on blist, or NULL. Static string. + * @return Username of wanted_uid, if on blist, or NULL. Static string. + * TODO: The username string here is a new string from g_strdup(), not + * a static string that doesn't need to be fixed. Probably leaks. TODO: fix. * */ static const gchar * @@ -1313,13 +1308,13 @@ g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); delta = time(NULL) - session->last_comm; - //purple_debug_info("msim", "msim_check_alive: delta=%d\n", delta); + /* purple_debug_info("msim", "msim_check_alive: delta=%d\n", delta); */ if (delta >= MSIM_KEEPALIVE_INTERVAL) { errmsg = g_strdup_printf(_("Connection to server lost (no data received within %d seconds)"), (int)delta); purple_debug_info("msim", "msim_check_alive: %s > interval of %d, presumed dead\n", errmsg, MSIM_KEEPALIVE_INTERVAL); - purple_connection_error_reason (session->gc, + purple_connection_error_reason(session->gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, errmsg); purple_notify_error(session->gc, NULL, errmsg, NULL); @@ -1741,7 +1736,7 @@ static gboolean msim_web_challenge(MsimSession *session, MsimMessage *msg) { - /* TODO: web challenge, store token */ + /* TODO: web challenge, store token. #2659. */ return FALSE; } @@ -1832,13 +1827,14 @@ if (msim_msg_get(msg, "fatal")) { PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR; purple_debug_info("msim", "fatal error, closing\n"); + switch (err) { - case 260: /* Incorrect password */ + case MSIM_ERROR_INCORRECT_PASSWORD: /* Incorrect password */ reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED; if (!purple_account_get_remember_password(session->account)) purple_account_set_password(session->account, NULL); break; - case 6: /* Logged in elsewhere */ + case MSIM_ERROR_LOGGED_IN_ELSEWHERE: /* Logged in elsewhere */ reason = PURPLE_CONNECTION_ERROR_NAME_IN_USE; if (!purple_account_get_remember_password(session->account)) purple_account_set_password(session->account, NULL); @@ -1871,6 +1867,7 @@ gchar *status_headline, *status_headline_escaped; gint status_code, purple_status_code; gchar *username; + gchar *unrecognized_msg; g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); g_return_val_if_fail(msg != NULL, FALSE); @@ -1903,7 +1900,8 @@ blist = purple_get_blist(); - /* Add buddy if not found */ + /* Add buddy if not found. + * TODO: Could this be responsible for #3444? */ user = msim_find_user(session, username); if (!user) { PurpleBuddy *buddy; @@ -1915,7 +1913,7 @@ user = msim_get_user_from_buddy(buddy); - /* All buddies on list should have 'uid' integer associated with them. */ + /* All buddies on list should have a UserID integer associated with them. */ purple_blist_node_set_int(&buddy->node, "UserID", msim_msg_get_integer(msg, "f")); msim_store_user_info(session, msg, NULL); @@ -1959,9 +1957,15 @@ break; default: - purple_debug_info("msim", "msim_status for %s, unknown status code %d, treating as available\n", + purple_debug_info("msim", "msim_incoming_status for %s, unknown status code %d, treating as available\n", username, status_code); purple_status_code = PURPLE_STATUS_AVAILABLE; + + unrecognized_msg = g_strdup_printf("msim_incoming_status, unrecognized status code: %d\n", + status_code); + msim_unrecognized(session, NULL, unrecognized_msg); + g_free(unrecognized_msg); + } purple_prpl_got_user_status(session->account, username, purple_primitive_get_id_from_type(purple_status_code), NULL); @@ -2156,10 +2160,15 @@ gchar *msg; msg = g_strdup_printf(_("No such user: %s"), username); - purple_notify_error(NULL, NULL, _("User lookup"), msg); + if (!purple_conv_present_error(username, session->account, msg)) { + purple_notify_error(NULL, NULL, _("User lookup"), msg); + } + g_free(msg); g_free(username); - //msim_msg_free(msg); + /* TODO: free + * msim_msg_free(msg); + */ return; } @@ -2180,7 +2189,9 @@ g_free(uid_field_name); g_free(uid_before); g_free(username); - //msim_msg_free(msg); + /* TODO: free + * msim_msg_free(msg); + */ } /** Postprocess and send a message. @@ -2222,8 +2233,7 @@ uid = 0; } - if (!buddy || !uid) - { + if (!buddy || !uid) { /* Don't have uid offhand - need to ask for it, and wait until hear back before sending. */ purple_debug_info("msim", ">>> msim_postprocess_outgoing: couldn't find username %s in blist\n", username ? username : "(NULL)"); @@ -2244,7 +2254,9 @@ rc = msim_msg_send(session, msg); - //msim_msg_free(msg); + /* TODO: free + * msim_msg_free(msg); + */ return rc; } @@ -2304,7 +2316,7 @@ "blocklist", MSIM_TYPE_BOOLEAN, TRUE, "sesskey", MSIM_TYPE_INTEGER, session->sesskey, /* TODO: MsimMessage lists. Currently isn't replaced in lists. */ - //"idlist", MSIM_TYPE_STRING, g_strdup("a-||b-|"), + /* "idlist", MSIM_TYPE_STRING, g_strdup("a-||b-|"), */ "idlist", MSIM_TYPE_LIST, blocklist_updates, NULL); @@ -2317,9 +2329,12 @@ } /** - * Borrowed this code from oscar_normalize. Added checking for "if userid, get name before normalizing" + * Returns a string of a username in canonical form. Basically removes all the + * spaces, lowercases the string, and looks up user IDs to usernames. + * Normalizing tom, TOM, Tom, and 6221 wil all return 'tom'. * - * Basically... Returns a string that has been formated with all the spaces and caps removed. + * Borrowed this code from oscar_normalize. Added checking for + * "if userid, get name before normalizing" */ const char *msim_normalize(const PurpleAccount *account, const char *str) { static char normalized[BUF_LEN]; @@ -2345,7 +2360,7 @@ id = atol(str); username = msim_uid2username_from_blist(session, id); if (!username) { - /* Not in buddy list... scheisse... TODO: Manual Lookup! */ + /* Not in buddy list... scheisse... TODO: Manual Lookup! Bug #4631 */ /* Note: manual lookup using msim_lookup_user() is a problem inside * msim_normalize(), because msim_lookup_user() calls a callback function * when the user information has been looked up, but msim_normalize() expects @@ -2376,6 +2391,13 @@ g_free(tmp2); g_free(tmp1); + /* TODO: re-add caps and spacing back to what the user wanted. + * User can format their own names, for example 'msimprpl' is shown + * as 'MsIm PrPl' in the official client. + * + * TODO: file a ticket to add this enhancement. + */ + return normalized; } @@ -2427,16 +2449,17 @@ g_return_if_fail(cond == PURPLE_INPUT_READ); g_return_if_fail(MSIM_SESSION_VALID(session)); - /* Mark down that we got data, so don't timeout. */ + /* Mark down that we got data, so we don't timeout. */ session->last_comm = time(NULL); /* Only can handle so much data at once... - * If this happens, try recompiling with a higher MSIM_READ_BUF_SIZE. * Should be large enough to hold the largest protocol message. */ if (session->rxoff >= MSIM_READ_BUF_SIZE) { purple_debug_error("msim", - "msim_input_cb: %d-byte read buffer full! rxoff=%d\n", + "msim_input_cb: %d-byte read buffer full! rxoff=%d. " + "If this happens, try recompiling with a higher " + "MSIM_READ_BUF_SIZE.", MSIM_READ_BUF_SIZE, session->rxoff); purple_connection_error_reason (gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, @@ -2534,8 +2557,9 @@ memmove(session->rxbuf, end + strlen(MSIM_FINAL_STRING), MSIM_READ_BUF_SIZE - (end + strlen(MSIM_FINAL_STRING) - session->rxbuf)); - /* Clear end of buffer */ - //memset(end, 0, MSIM_READ_BUF_SIZE - (end - session->rxbuf)); + /* Clear end of buffer + * memset(end, 0, MSIM_READ_BUF_SIZE - (end - session->rxbuf)); + */ } } diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/protocols/myspace/myspace.h --- a/libpurple/protocols/myspace/myspace.h Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/protocols/myspace/myspace.h Sun Jan 20 13:54:26 2008 +0000 @@ -180,6 +180,10 @@ #define MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS 1 #define MSIM_CONTACT_LIST_IMPORT_TOP_FRIENDS 2 +/* Error codes */ +#define MSIM_ERROR_INCORRECT_PASSWORD 260 +#define MSIM_ERROR_LOGGED_IN_ELSEWHERE 6 + /* Functions */ gboolean msim_load(PurplePlugin *plugin); GList *msim_status_types(PurpleAccount *acct); diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/protocols/novell/novell.c --- a/libpurple/protocols/novell/novell.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/protocols/novell/novell.c Sun Jan 20 13:54:26 2008 +0000 @@ -1920,6 +1920,7 @@ parms = g_slist_append(parms, nm_event_get_conference(event)); /* Prompt the user */ + /* TODO: Would it be better to use serv_got_chat_invite() here? */ gc = purple_account_get_connection(user->client_data); purple_request_action(gc, title, primary, secondary, PURPLE_DEFAULT_ACTION_NONE, diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/protocols/oscar/oscar.c --- a/libpurple/protocols/oscar/oscar.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/protocols/oscar/oscar.c Sun Jan 20 13:54:26 2008 +0000 @@ -1789,7 +1789,7 @@ purple_prpl_got_user_status_deactive(account, info->sn, OSCAR_STATUS_ID_MOBILE); } - if (status_id == OSCAR_STATUS_ID_AVAILABLE) + if (strcmp(status_id, OSCAR_STATUS_ID_AVAILABLE) == 0) { char *message = NULL; char *itmsurl = NULL; @@ -5227,7 +5227,7 @@ data->nick = (buddy ? g_strdup(purple_buddy_get_alias_only(buddy)) : NULL); purple_request_yes_no(gc, NULL, _("Authorization Given"), dialog_msg, - 1, /* Default action is "no" */ + PURPLE_DEFAULT_ACTION_NONE, purple_connection_get_account(gc), sn, NULL, data, G_CALLBACK(purple_icq_buddyadd), @@ -5983,7 +5983,7 @@ _("Because this reveals your IP address, it " "may be considered a security risk. Do you " "wish to continue?"), - 0, + 0, /* Default action is "connect" */ purple_connection_get_account(gc), data->who, NULL, data, 2, _("C_onnect"), G_CALLBACK(oscar_ask_directim_yes_cb), diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/protocols/oscar/peer.c --- a/libpurple/protocols/oscar/peer.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/protocols/oscar/peer.c Sun Jan 20 13:54:26 2008 +0000 @@ -1041,7 +1041,7 @@ "Images. Because your IP address will be " "revealed, this may be considered a privacy " "risk."), - PURPLE_DEFAULT_ACTION_NONE, + 0, /* Default action is "connect" */ account, sn, NULL, conn, 2, _("C_onnect"), G_CALLBACK(peer_connection_got_proposition_yes_cb), diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/protocols/qq/group_im.c --- a/libpurple/protocols/qq/group_im.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/protocols/qq/group_im.c Sun Jan 20 13:54:26 2008 +0000 @@ -135,7 +135,7 @@ purple_request_action(gc, _("QQ Qun Operation"), msg, reason, - 2, + PURPLE_DEFAULT_ACTION_NONE, purple_connection_get_account(gc), nombre, NULL, g, 3, _("Approve"), diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/protocols/qq/group_opt.c --- a/libpurple/protocols/qq/group_opt.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/protocols/qq/group_opt.c Sun Jan 20 13:54:26 2008 +0000 @@ -96,7 +96,8 @@ g_return_if_fail(g != NULL && g->gc != NULL && g->member > 0); qq_send_packet_get_info(g->gc, g->member, TRUE); /* we want to see window */ - purple_request_action(g->gc, NULL, _("Do you want to approve the request?"), "", 2, + purple_request_action(g->gc, NULL, _("Do you want to approve the request?"), "", + PURPLE_DEFAULT_ACTION_NONE, purple_connection_get_account(g->gc), NULL, NULL, g, 2, _("Reject"), G_CALLBACK(qq_group_reject_application_with_struct), diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/protocols/qq/sys_msg.c --- a/libpurple/protocols/qq/sys_msg.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/protocols/qq/sys_msg.c Sun Jan 20 13:54:26 2008 +0000 @@ -84,7 +84,8 @@ nombre = uid_to_purple_name(uid); purple_request_action - (gc, NULL, _("Do you want to approve the request?"), "", 2, + (gc, NULL, _("Do you want to approve the request?"), "", + PURPLE_DEFAULT_ACTION_NONE, purple_connection_get_account(gc), nombre, NULL, g, 2, _("Reject"), G_CALLBACK(qq_reject_add_request_with_gc_and_uid), @@ -107,7 +108,8 @@ qq_send_packet_get_info(gc, uid, TRUE); /* we want to see window */ nombre = uid_to_purple_name(uid); purple_request_action - (gc, NULL, _("Do you want to add this buddy?"), "", 2, + (gc, NULL, _("Do you want to add this buddy?"), "", + PURPLE_DEFAULT_ACTION_NONE, purple_connection_get_account(gc), nombre, NULL, g, 2, _("Cancel"), NULL, @@ -166,7 +168,8 @@ message = g_strdup_printf(_("You have been added by %s"), from); _qq_sys_msg_log_write(gc, message, from); purple_request_action(gc, NULL, message, - _("Would you like to add him?"), 2, + _("Would you like to add him?"), + PURPLE_DEFAULT_ACTION_NONE, purple_connection_get_account(gc), name, NULL, g, 3, _("Cancel"), NULL, @@ -240,7 +243,7 @@ _qq_sys_msg_log_write(gc, message, from); purple_request_action - (gc, NULL, message, reason, 2, + (gc, NULL, message, reason, PURPLE_DEFAULT_ACTION_NONE, purple_connection_get_account(gc), name, NULL, g, 3, _("Reject"), @@ -260,7 +263,7 @@ g2->uid = strtol(from, NULL, 10); message = g_strdup_printf(_("%s is not in your buddy list"), from); purple_request_action(gc, NULL, message, - _("Would you like to add him?"), 2, + _("Would you like to add him?"), PURPLE_DEFAULT_ACTION_NONE, purple_connection_get_account(gc), name, NULL, g2, 3, _("Cancel"), NULL, diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/protocols/yahoo/util.c --- a/libpurple/protocols/yahoo/util.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/protocols/yahoo/util.c Sun Jan 20 13:54:26 2008 +0000 @@ -164,6 +164,25 @@ return g_strdup(""); } +char *yahoo_convert_to_numeric(const char *str) +{ + GString *gstr = NULL; + char *retstr; + const unsigned char *p; + + gstr = g_string_sized_new(strlen(str) * 6 + 1); + + for (p = (unsigned char *)str; *p; p++) { + g_string_append_printf(gstr, "&#%u;", *p); + } + + retstr = gstr->str; + + g_string_free(gstr, FALSE); + + 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 451b7edf79ef -r d1fe81e3a850 libpurple/protocols/yahoo/yahoo.h --- a/libpurple/protocols/yahoo/yahoo.h Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/protocols/yahoo/yahoo.h Sun Jan 20 13:54:26 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 451b7edf79ef -r d1fe81e3a850 libpurple/protocols/yahoo/yahoo_aliases.c --- a/libpurple/protocols/yahoo/yahoo_aliases.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/protocols/yahoo/yahoo_aliases.c Sun Jan 20 13:54:26 2008 +0000 @@ -226,7 +226,8 @@ { struct yahoo_data *yd; struct YahooUser *yu; - char *content, *url, *request, *webpage, *webaddress, *strtmp, *alias_jp; + char *content, *url, *request, *webpage, *webaddress, *strtmp; + char *escaped_alias, *alias_jp, *converted_alias_jp; int inttmp; struct callback_data *cb; PurpleBuddy *buddy; @@ -236,7 +237,7 @@ 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,21 +254,24 @@ 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 { + escaped_alias = g_markup_escape_text(alias, strlen(alias)); content = g_strdup_printf("\n" "\n\r\n", - gc->account->username, who, yu->id, g_markup_escape_text(alias, strlen(alias))); + gc->account->username, who, yu->id, escaped_alias); + g_free(escaped_alias); } request = g_strdup_printf("POST /%s HTTP/1.1\r\n" diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/protocols/zephyr/zephyr.c --- a/libpurple/protocols/zephyr/zephyr.c Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/protocols/zephyr/zephyr.c Sun Jan 20 13:54:26 2008 +0000 @@ -165,7 +165,7 @@ size_t len = strlen(zsubstr); result = write(zephyr->totzc[ZEPHYR_FD_WRITE],zsubstr,len); if (result != len) { - purple_debug_error("zephyr", "Unable to write a message: %s\n", strerror(errno)); + purple_debug_error("zephyr", "Unable to write a message: %s\n", g_strerror(errno)); } else { ret_val = ZERR_NONE; } @@ -1380,7 +1380,7 @@ size_t len = strlen(zlocstr); size_t result = write(zephyr->totzc[ZEPHYR_FD_WRITE],zlocstr,len); if (result != len) { - purple_debug_error("zephyr", "Unable to write a message: %s\n", strerror(errno)); + purple_debug_error("zephyr", "Unable to write a message: %s\n", g_strerror(errno)); } g_free(zlocstr); } @@ -2293,7 +2293,7 @@ len = strlen(zlocstr); result = write(zephyr->totzc[ZEPHYR_FD_WRITE],zlocstr,len); if (result != len) { - purple_debug_error("zephyr", "Unable to write a message: %s\n", strerror(errno)); + purple_debug_error("zephyr", "Unable to write a message: %s\n", g_strerror(errno)); } g_free(zlocstr); } @@ -2322,7 +2322,7 @@ len = strlen(zexpstr); result = write(zephyr->totzc[ZEPHYR_FD_WRITE],zexpstr,len); if (result != len) { - purple_debug_error("zephyr", "Unable to write message: %s\n", strerror(errno)); + purple_debug_error("zephyr", "Unable to write message: %s\n", g_strerror(errno)); } g_free(zexpstr); } @@ -2336,7 +2336,7 @@ len = strlen(zexpstr); result = write(zephyr->totzc[ZEPHYR_FD_WRITE],zexpstr,len); if (result != len) { - purple_debug_error("zephyr", "Unable to write message: %s\n", strerror(errno)); + purple_debug_error("zephyr", "Unable to write message: %s\n", g_strerror(errno)); } g_free(zexpstr); } diff -r 451b7edf79ef -r d1fe81e3a850 libpurple/request.h --- a/libpurple/request.h Sun Jan 20 13:31:19 2008 +0000 +++ b/libpurple/request.h Sun Jan 20 13:54:26 2008 +0000 @@ -1318,6 +1318,8 @@ * @param secondary Secondary information, or @c NULL if there is none. * @param default_action The default action, zero-indexed; if the third action * supplied should be the default, supply 2. + * The should be the action that users are most likely + * to select. * @param account The #PurpleAccount associated with this request, or @c * NULL if none is. * @param who The username of the buddy associated with this request, @@ -1356,6 +1358,8 @@ * @param secondary Secondary information, or @c NULL if there is none. * @param default_action The default action, zero-indexed; if the third action * supplied should be the default, supply 2. + * The should be the action that users are most likely + * to select. * @param account The #PurpleAccount associated with this request, or @c * NULL if none is. * @param who The username of the buddy associated with this request, diff -r 451b7edf79ef -r d1fe81e3a850 pidgin/gtkcertmgr.c --- a/pidgin/gtkcertmgr.c Sun Jan 20 13:31:19 2008 +0000 +++ b/pidgin/gtkcertmgr.c Sun Jan 20 13:54:26 2008 +0000 @@ -373,7 +373,7 @@ purple_request_yes_no(tpm_dat, _("Confirm certificate delete"), primary, NULL, /* Can this be NULL? */ - 2, /* NO is default action */ + 1, /* NO is default action */ NULL, NULL, NULL, id, /* id ownership passed to callback */ tls_peers_mgmt_delete_confirm_cb, diff -r 451b7edf79ef -r d1fe81e3a850 pidgin/gtkconv.c --- a/pidgin/gtkconv.c Sun Jan 20 13:31:19 2008 +0000 +++ b/pidgin/gtkconv.c Sun Jan 20 13:54:26 2008 +0000 @@ -3428,9 +3428,14 @@ gtk_text_buffer_delete_mark(buffer, stmark); gtk_text_buffer_delete_mark(buffer, enmark); gtk_text_buffer_delete(buffer, &start, &end); - } else if (message && *message == '\n' && !*(message + 1)) + } else if (message && *message == '\n' && message[1] == ' ' && message[2] == '\0') message = NULL; +#ifdef RESERVE_LINE + if (!message) + message = "\n "; /* The blank space is required to avoid a GTK+/Pango bug */ +#endif + if (message) { GtkTextIter iter; gtk_text_buffer_get_end_iter(buffer, &iter); @@ -3458,7 +3463,11 @@ return; if (purple_conv_im_get_typing_state(im) == PURPLE_NOT_TYPING) { - update_typing_message(gtkconv, "\n"); +#ifdef RESERVE_LINE + update_typing_message(gtkconv, NULL); +#else + update_typing_message(gtkconv, "\n "); +#endif return; } @@ -4980,7 +4989,7 @@ gtk_text_buffer_create_tag(GTK_IMHTML(gtkconv->imhtml)->text_buffer, "TYPING-NOTIFICATION", "foreground", "#888888", "justification", GTK_JUSTIFY_LEFT, /* XXX: RTL'ify */ - "weight", PANGO_WEIGHT_BOLD, + "weight", PANGO_WEIGHT_LIGHT, "scale", PANGO_SCALE_SMALL, NULL); diff -r 451b7edf79ef -r d1fe81e3a850 pidgin/gtkimhtml.c --- a/pidgin/gtkimhtml.c Sun Jan 20 13:31:19 2008 +0000 +++ b/pidgin/gtkimhtml.c Sun Jan 20 13:54:26 2008 +0000 @@ -1455,9 +1455,6 @@ gtk_text_buffer_create_tag(imhtml->text_buffer, "SUP", "rise", 5000, NULL); gtk_text_buffer_create_tag(imhtml->text_buffer, "PRE", "family", "Monospace", NULL); gtk_text_buffer_create_tag(imhtml->text_buffer, "search", "background", "#22ff00", "weight", "bold", NULL); -#if GTK_CHECK_VERSION(2,8,0) - gtk_text_buffer_create_tag(imhtml->text_buffer, "comment", "invisible", FALSE, NULL); -#endif /* When hovering over a link, we show the hand cursor--elsewhere we show the plain ol' pointer cursor */ imhtml->hand_cursor = gdk_cursor_new (GDK_HAND2); @@ -2984,15 +2981,10 @@ gtk_text_buffer_insert(imhtml->text_buffer, iter, ws, wpos); -#if GTK_CHECK_VERSION(2,8,0) - wpos = g_snprintf (ws, len, "%s", tag); - gtk_text_buffer_insert_with_tags_by_name(imhtml->text_buffer, iter, ws, wpos, "comment", NULL); -#else if (imhtml->show_comments && !(options & GTK_IMHTML_NO_COMMENTS)) { wpos = g_snprintf (ws, len, "%s", tag); gtk_text_buffer_insert(imhtml->text_buffer, iter, ws, wpos); } -#endif ws[0] = '\0'; wpos = 0; /* NEW_BIT (NEW_COMMENT_BIT); */ @@ -3138,12 +3130,6 @@ void gtk_imhtml_show_comments (GtkIMHtml *imhtml, gboolean show) { -#if GTK_CHECK_VERSION(2,8,0) - GtkTextTag *tag; - tag = gtk_text_tag_table_lookup(gtk_text_buffer_get_tag_table(imhtml->text_buffer), "comment"); - if (tag) - g_object_set(G_OBJECT(tag), "invisible", !show, NULL); -#endif imhtml->show_comments = show; } diff -r 451b7edf79ef -r d1fe81e3a850 pidgin/gtkrequest.c --- a/pidgin/gtkrequest.c Sun Jan 20 13:31:19 2008 +0000 +++ b/pidgin/gtkrequest.c Sun Jan 20 13:54:26 2008 +0000 @@ -663,7 +663,11 @@ gtk_widget_grab_focus(img); gtk_widget_grab_default(img); } else - gtk_dialog_set_default_response(GTK_DIALOG(dialog), default_action); + /* + * Need to invert the default_action number because the + * buttons are added to the dialog in reverse order. + */ + gtk_dialog_set_default_response(GTK_DIALOG(dialog), action_count - 1 - default_action); /* Show everything. */ pidgin_auto_parent_window(dialog); diff -r 451b7edf79ef -r d1fe81e3a850 pidgin/gtkutils.c --- a/pidgin/gtkutils.c Sun Jan 20 13:31:19 2008 +0000 +++ b/pidgin/gtkutils.c Sun Jan 20 13:54:26 2008 +0000 @@ -1595,7 +1595,7 @@ else if (!(im || ft)) purple_request_yes_no(NULL, NULL, _("You have dragged an image"), _("Would you like to set it as the buddy icon for this user?"), - 0, + PURPLE_DEFAULT_ACTION_NONE, account, who, NULL, data, (GCallback)dnd_set_icon_ok_cb, (GCallback)dnd_set_icon_cancel_cb); else diff -r 451b7edf79ef -r d1fe81e3a850 po/de.po --- a/po/de.po Sun Jan 20 13:31:19 2008 +0000 +++ b/po/de.po Sun Jan 20 13:54:26 2008 +0000 @@ -11,8 +11,8 @@ msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-01-08 11:16+0100\n" -"PO-Revision-Date: 2008-01-08 11:15+0100\n" +"POT-Creation-Date: 2008-01-17 22:50+0100\n" +"PO-Revision-Date: 2008-01-17 22:50+0100\n" "Last-Translator: Jochen Kemnade \n" "Language-Team: Deutsch \n" "MIME-Version: 1.0\n" @@ -2688,6 +2688,9 @@ msgid "Could not listen on socket" msgstr "Kann nicht an der Socket hören" +msgid "Error communicating with local mDNSResponder." +msgstr "Fehler bei der Kommunikation mit lokalem mDNSResponder." + msgid "Invalid proxy settings" msgstr "Falsche Proxy-Einstellungen" @@ -4237,6 +4240,8 @@ msgid "Unable to buzz, because the user %s does not support it." msgstr "Kann nicht anklopfen, da der Benutzer %s dies nicht unterstützt." +#. Yahoo only supports one attention command: the 'buzz'. +#. This is index number YAHOO_BUZZ. msgid "Buzz" msgstr "Anklopfen" @@ -9151,6 +9156,10 @@ msgid "Unable to establish file descriptor." msgstr "Konnte Dateibeschreibung nicht erstellen." +#, c-format +msgid "%s is trying to send you a group of %d files.\n" +msgstr "%s versucht, Ihnen eine Gruppe von %d Dateien zu senden.\n" + msgid "Write Error" msgstr "Schreibfehler" @@ -12295,6 +12304,9 @@ msgid "_Open Mail" msgstr "Mail ö_ffnen" +msgid "Pidgin Tooltip" +msgstr "Pidgin-Tooltip" + msgid "Pidgin smileys" msgstr "Pidgin-Smileys"