Sun, 13 Jan 2013 15:17:57 -0600
Merge 33548 from release-2.x.y
--- a/COPYRIGHT Sun Jan 13 15:09:02 2013 -0600 +++ b/COPYRIGHT Sun Jan 13 15:17:57 2013 -0600 @@ -17,6 +17,7 @@ Copyright (C) 1998-2012 by the following: +Mark Saleem Abdulrasool Jakub Adam Dave Ahlswede @@ -73,6 +74,7 @@ Éric Boumaour Chris Boyle Stanislav Brabec +Bartosz Brachaczek Quentin Brandon Derrick J Brashear Mauro Sérgio Ferreira Brasil @@ -175,6 +177,7 @@ Gavan Fantom (gavan) Leonardo Fernandes David Fiander +Michael Fiedler Ryan Flegel Rob Flynn <gaim@robflynn.com> Rob Foehl (rwf) @@ -459,6 +462,7 @@ Thanumalayan S. Jonathan Sailor Elliott Sales de Andrade +Catalin Salgau Tomasz Sałaciński <tsalacinski@gmail.com> Pradyumna Sampath Arvind Samptur @@ -511,6 +515,7 @@ Lex Spoon Chris Stafford Kevin Stange +Ferdinand Stehle Joshua Stein Jakub Steiner Richard Stellingwerff
--- a/ChangeLog Sun Jan 13 15:09:02 2013 -0600 +++ b/ChangeLog Sun Jan 13 15:17:57 2013 -0600 @@ -60,6 +60,21 @@ * Fix a crash at startup with large contact list. Avatar support for buddies will be disabled till 3.0.0. (#15226, #14305) + General: + * The configure script will now exit with status 1 when specifying + invalid protocol plugins using the --with-static-prpls and + --with-dynamic-prpls arguments. (Michael Fiedler) (#15316) + + libpurple: + * Don't link directly to libgcrypt when building with GnuTLS support. + (Bartosz Brachaczek) (#15329) + * Fix UPNP mappings on routers that return empty <URLBase/> elements + in their response. (Ferdinand Stehle) (#15373) + + Pidgin: + * Make Pidgin more friendly to non-X11 GTK+, such as MacPorts' +no_x11 + variant. + Gadu-Gadu: * Fix a crash at startup with large contact list. Avatar support for buddies will be disabled till 3.0.0. (#15226, #14305) @@ -67,6 +82,7 @@ IRC: * Support for SASL authentication. (Thijs Alkemade, Andy Spencer) (#13270) + * Print topic setter information at channel join. (#13317) MSN: * Fix a crash when removing a user before its icon is loaded. (Mark @@ -75,10 +91,15 @@ Yahoo!: * Fix a double-free in profile/picture loading code. (Mihai Serban) (#15053) + * Fix retrieving server-side buddy aliases. (Catalin Salgu) (#15381) Plugins: * The Voice/Video Settings plugin supports using the sndio GStreamer backends. (Brad Smith) (#14414) + * Fix a crash in the Contact Availability Detection plugin. (Mark) + (#15327) + * Make the Message Notification plugin more friendly to non-X11 GTK+, + such as MacPorts' +no_x11 variant. Windows-Specific Changes: * Compile with secure flags (#15290) @@ -86,18 +107,18 @@ (#15277) * Updates to a number of dependencies, some of which have security related fixes. (#14571, #15285, #15286) - * ATK 1.32.0-2 - * Cyrus SASL 2.1.25 - * expat 2.1.0-1 - * freetype 2.4.10-1 - * gettext 0.18.1.1-2 - * Glib 2.28.8-1 - * libpng 1.4.12-1 - * libxml2 2.9.0-1 - * NSS 3.13.6 and NSPR 4.9.2 - * Pango 1.29.4-1 - * SILC 1.1.10 - * zlib 1.2.5-2 + * ATK 1.32.0-2 + * Cyrus SASL 2.1.25 + * expat 2.1.0-1 + * freetype 2.4.10-1 + * gettext 0.18.1.1-2 + * Glib 2.28.8-1 + * libpng 1.4.12-1 + * libxml2 2.9.0-1 + * NSS 3.13.6 and NSPR 4.9.2 + * Pango 1.29.4-1 + * SILC 1.1.10 + * zlib 1.2.5-2 * Patch libmeanwhile (sametime library) to fix crash. (Jonathan Rice) (#12637)
--- a/configure.ac Sun Jan 13 15:09:02 2013 -0600 +++ b/configure.ac Sun Jan 13 15:17:57 2013 -0600 @@ -1326,7 +1326,7 @@ simple) static_simple=yes ;; yahoo) static_yahoo=yes ;; zephyr) static_zephyr=yes ;; - *) echo "Invalid static protocol $i!!" ; exit ;; + *) echo "Invalid static protocol $i!!" ; exit 1 ;; esac done AM_CONDITIONAL(STATIC_BONJOUR, test "x$static_bonjour" = "xyes") @@ -1380,7 +1380,7 @@ simple) dynamic_simple=yes ;; yahoo) dynamic_yahoo=yes ;; zephyr) dynamic_zephyr=yes ;; - *) echo "Invalid dynamic protocol $i!!" ; exit ;; + *) echo "Invalid dynamic protocol $i!!" ; exit 1 ;; esac done @@ -1908,7 +1908,7 @@ AC_CACHE_CHECK([for GnuTLS libraries], ac_cv_gnutls_libs, [ - LIBS="$LIBS $with_gnutls_libs -lgnutls -lgcrypt" + LIBS="$LIBS $with_gnutls_libs -lgnutls" AC_TRY_LINK_FUNC(gnutls_init, ac_cv_gnutls_libs="yes", ac_cv_gnutls_libs="no") LIBS="$LIBS_save" ]) @@ -1917,7 +1917,7 @@ AC_DEFINE(HAVE_GNUTLS, 1, [Define if you have GnuTLS]) AC_DEFINE(HAVE_SSL) msg_gnutls="GnuTLS" - GNUTLS_LIBS="$with_gnutls_libs -lgnutls -lgcrypt" + GNUTLS_LIBS="$with_gnutls_libs -lgnutls" enable_gnutls="yes" else
--- a/libpurple/protocols/irc/irc.h Sun Jan 13 15:09:02 2013 -0600 +++ b/libpurple/protocols/irc/irc.h Sun Jan 13 15:17:57 2013 -0600 @@ -174,6 +174,7 @@ void irc_msg_regonly(struct irc_conn *irc, const char *name, const char *from, char **args); void irc_msg_time(struct irc_conn *irc, const char *name, const char *from, char **args); void irc_msg_topic(struct irc_conn *irc, const char *name, const char *from, char **args); +void irc_msg_topicinfo(struct irc_conn *irc, const char *name, const char *from, char **args); void irc_msg_unavailable(struct irc_conn *irc, const char *name, const char *from, char **args); void irc_msg_unknown(struct irc_conn *irc, const char *name, const char *from, char **args); void irc_msg_wallops(struct irc_conn *irc, const char *name, const char *from, char **args);
--- a/libpurple/protocols/irc/msgs.c Sun Jan 13 15:09:02 2013 -0600 +++ b/libpurple/protocols/irc/msgs.c Sun Jan 13 15:17:57 2013 -0600 @@ -642,6 +642,38 @@ g_free(topic); } +void irc_msg_topicinfo(struct irc_conn *irc, const char *name, const char *from, char **args) +{ + PurpleConversation *convo; + struct tm *tm; + time_t t; + char *msg, *timestamp, *datestamp; + + if (!args || !args[1] || !args[2] || !args[3]) + return; + + convo = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, args[1], irc->account); + if (!convo) { + purple_debug(PURPLE_DEBUG_ERROR, "irc", "Got topic info for %s, which doesn't exist\n", args[1]); + return; + } + + t = (time_t)atol(args[3]); + if (t == 0) { + purple_debug(PURPLE_DEBUG_ERROR, "irc", "Got apparently nonsensical topic timestamp %s\n", args[3]); + return; + } + tm = localtime(&t); + + timestamp = g_strdup(purple_time_format(tm)); + datestamp = g_strdup(purple_date_format_short(tm)); + msg = g_strdup_printf("Topic for %s set by %s at %s on %s", args[1], args[2], timestamp, datestamp); + purple_conv_chat_write(PURPLE_CONV_CHAT(convo), "", msg, PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LINKIFY, time(NULL)); + g_free(timestamp); + g_free(datestamp); + g_free(msg); +} + void irc_msg_unknown(struct irc_conn *irc, const char *name, const char *from, char **args) { PurpleConnection *gc = purple_account_get_connection(irc->account);
--- a/libpurple/protocols/irc/parse.c Sun Jan 13 15:09:02 2013 -0600 +++ b/libpurple/protocols/irc/parse.c Sun Jan 13 15:17:57 2013 -0600 @@ -73,7 +73,7 @@ { "324", "ncv:", irc_msg_chanmode }, /* Channel modes */ { "331", "nc:", irc_msg_topic }, /* No channel topic */ { "332", "nc:", irc_msg_topic }, /* Channel topic */ - { "333", "*", irc_msg_ignore }, /* Topic setter stuff */ + { "333", "ncvv", irc_msg_topicinfo }, /* Topic setter stuff */ { "352", "ncvvvnv:", irc_msg_who }, /* Channel WHO */ { "353", "nvc:", irc_msg_names }, /* Names list */ { "366", "nc:", irc_msg_names }, /* End of names */
--- a/libpurple/protocols/yahoo/libymsg.h Sun Jan 13 15:09:02 2013 -0600 +++ b/libpurple/protocols/yahoo/libymsg.h Sun Jan 13 15:17:57 2013 -0600 @@ -96,6 +96,7 @@ #define YAHOOJP_CLIENT_VERSION "9.0.0.1727" #define YAHOO_CLIENT_USERAGENT "Mozilla/5.0" +#define YAHOO_CLIENT_USERAGENT_ALIAS "Mozilla/4.0 (compatible; MSIE 5.5)" /* Index into attention types list. */ #define YAHOO_BUZZ 0
--- a/libpurple/upnp.c Sun Jan 13 15:09:02 2013 -0600 +++ b/libpurple/upnp.c Sun Jan 13 15:17:57 2013 -0600 @@ -259,7 +259,9 @@ /* get the baseURL of the device */ if((baseURLNode = xmlnode_get_child(xmlRootNode, "URLBase")) != NULL) { baseURL = xmlnode_get_data(baseURLNode); - } else { + } + /* fixes upnp-descriptions with empty urlbase-element */ + if(baseURL == NULL){ baseURL = g_strdup(httpURL); }
--- a/pidgin/gtkutils.c Sun Jan 13 15:09:02 2013 -0600 +++ b/pidgin/gtkutils.c Sun Jan 13 15:17:57 2013 -0600 @@ -28,9 +28,7 @@ #include "internal.h" #include "pidgin.h" -#ifndef _WIN32 -# include <X11/Xlib.h> -#else +#ifdef _WIN32 # ifdef small # undef small # endif
--- a/pidgin/pidginstock.c Sun Jan 13 15:09:02 2013 -0600 +++ b/pidgin/pidginstock.c Sun Jan 13 15:17:57 2013 -0600 @@ -67,7 +67,7 @@ { PIDGIN_STOCK_IGNORE, NULL, GTK_STOCK_DIALOG_ERROR }, { PIDGIN_STOCK_INVITE, NULL, GTK_STOCK_JUMP_TO }, { PIDGIN_STOCK_MODIFY, NULL, GTK_STOCK_PREFERENCES }, - { PIDGIN_STOCK_ADD, NULL, GTK_STOCK_ADD }, + { PIDGIN_STOCK_ADD, NULL, GTK_STOCK_ADD }, { PIDGIN_STOCK_PAUSE, NULL, GTK_STOCK_MEDIA_PAUSE }, { PIDGIN_STOCK_POUNCE, NULL, GTK_STOCK_REDO }, { PIDGIN_STOCK_OPEN_MAIL, NULL, GTK_STOCK_JUMP_TO }, @@ -80,17 +80,17 @@ static const GtkStockItem stock_items[] = { - { PIDGIN_STOCK_ALIAS, N_("_Alias"), 0, 0, NULL }, - { PIDGIN_STOCK_CHAT, N_("_Join"), 0, 0, NULL }, - { PIDGIN_STOCK_CLOSE_TABS, N_("Close _tabs"), 0, 0, NULL }, - { PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW, N_("I_M"), 0, 0, NULL }, - { PIDGIN_STOCK_TOOLBAR_USER_INFO, N_("_Get Info"), 0, 0, NULL }, - { PIDGIN_STOCK_INVITE, N_("_Invite"), 0, 0, NULL }, - { PIDGIN_STOCK_MODIFY, N_("_Modify..."), 0, 0, NULL }, - { PIDGIN_STOCK_ADD, N_("_Add..."), 0, 0, NULL }, - { PIDGIN_STOCK_OPEN_MAIL, N_("_Open Mail"), 0, 0, NULL }, - { PIDGIN_STOCK_PAUSE, N_("_Pause"), 0, 0, NULL }, - { PIDGIN_STOCK_EDIT, N_("_Edit"), 0, 0, NULL } + { PIDGIN_STOCK_ALIAS, N_("_Alias"), 0, 0, PACKAGE }, + { PIDGIN_STOCK_CHAT, N_("_Join"), 0, 0, PACKAGE }, + { PIDGIN_STOCK_CLOSE_TABS, N_("Close _tabs"), 0, 0, PACKAGE }, + { PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW, N_("I_M"), 0, 0, PACKAGE }, + { PIDGIN_STOCK_TOOLBAR_USER_INFO, N_("_Get Info"), 0, 0, PACKAGE }, + { PIDGIN_STOCK_INVITE, N_("_Invite"), 0, 0, PACKAGE }, + { PIDGIN_STOCK_MODIFY, N_("_Modify..."), 0, 0, PACKAGE }, + { PIDGIN_STOCK_ADD, N_("_Add..."), 0, 0, PACKAGE }, + { PIDGIN_STOCK_OPEN_MAIL, N_("_Open Mail"), 0, 0, PACKAGE }, + { PIDGIN_STOCK_PAUSE, N_("_Pause"), 0, 0, PACKAGE }, + { PIDGIN_STOCK_EDIT, N_("_Edit"), 0, 0, PACKAGE } }; typedef struct {
--- a/pidgin/plugins/cap/cap.c Sun Jan 13 15:09:02 2013 -0600 +++ b/pidgin/plugins/cap/cap.c Sun Jan 13 15:17:57 2013 -0600 @@ -43,7 +43,7 @@ int threshold = purple_prefs_get_int("/plugins/gtk/cap/threshold"); int min_minute = (current_minute - threshold) % 1440; int max_minute = (current_minute + threshold) % 1440; - char *sql; + char *sql, sta_id = NULL; sqlite3_stmt *stmt = NULL; const char *tail = NULL; int rc; @@ -94,7 +94,9 @@ sqlite3_free(sql); - if(strcmp(purple_status_get_id(get_status_for(buddy)), "offline") == 0) { + sta_id = purple_status_get_id(get_status_for(buddy)); + + if(sta_id && !strcmp(sta_id, "offline")) { /* This is kind of stupid, change it. */ if(prediction == 1.0f) prediction = 0.0f;
--- a/pidgin/plugins/notify.c Sun Jan 13 15:09:02 2013 -0600 +++ b/pidgin/plugins/notify.c Sun Jan 13 15:17:57 2013 -0600 @@ -96,16 +96,10 @@ #include "gtkplugin.h" #include "gtkutils.h" -#ifndef _WIN32 -#include <X11/Xatom.h> -#include <X11/Xlib.h> -#include <X11/Xutil.h> -#endif - #define NOTIFY_PLUGIN_ID "gtk-x11-notify" static PurplePlugin *my_plugin = NULL; -#ifndef _WIN32 +#ifdef HAVE_X11 static GdkAtom _Cardinal = GDK_NONE; static GdkAtom _PurpleUnseenCount = GDK_NONE; #endif @@ -525,7 +519,7 @@ static void handle_count_xprop(PidginWindow *purplewin) { -#ifndef _WIN32 +#ifdef HAVE_X11 guint count; GtkWidget *window; GdkWindow *gdkwin; @@ -757,7 +751,7 @@ g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(method_toggle_cb), "method_count"); -#ifndef _WIN32 +#ifdef HAVE_X11 /* Count xprop method button */ toggle = gtk_check_button_new_with_mnemonic(_("Insert count of new message into _X property")); gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);