changeset 21047:9f0e2db39bc5

merge of '7ea551cdfc72cb2ec310d0d54d2a7e5badf7535e' and 'c630ec53bad2efe91357c6f37e705fbb1562d4ae'
author Ka-Hing Cheung <khc@hxbc.us>
date Mon, 29 Oct 2007 04:41:19 +0000
parents bc34e9806879 (current diff) ecaa34fd0473 (diff)
children 8b81eeaf9bcb
files
diffstat 101 files changed, 473 insertions(+), 235 deletions(-) [+]
line wrap: on
line diff
--- a/config.h.mingw	Mon Oct 29 04:41:10 2007 +0000
+++ b/config.h.mingw	Mon Oct 29 04:41:19 2007 +0000
@@ -377,7 +377,8 @@
 /* #define USE_SM 1 */
 
 /* Version number of package */
-/* #define VERSION "2.0.0dev" */
+#define VERSION "@VERSION@"
+#define DISPLAY_VERSION "@VERSION@"
 
 /* Define to 1 if your processor stores words with the most significant byte
    first (like Motorola and SPARC, unlike Intel and VAX). */
--- a/configure.ac	Mon Oct 29 04:41:10 2007 +0000
+++ b/configure.ac	Mon Oct 29 04:41:19 2007 +0000
@@ -283,6 +283,17 @@
 AC_SUBST(GLIB_CFLAGS)
 AC_SUBST(GLIB_LIBS)
 
+AC_ARG_WITH([extraversion],
+			AC_HELP_STRING([--with-extraversion=STRING],
+						   [extra version number to be displayed in Help->About and --help (for packagers)]),
+						   EXTRA_VERSION=$withval)
+
+if test x"$EXTRA_VERSION" != "x" ; then
+	AC_DEFINE_UNQUOTED(DISPLAY_VERSION, "$VERSION-$EXTRA_VERSION", [display version info])
+else
+	AC_DEFINE_UNQUOTED(DISPLAY_VERSION, "$VERSION", [display version info])
+fi
+
 AC_ARG_WITH(x, [],
 	with_x="$withval", with_x="yes")
 AC_ARG_ENABLE(gtkui, [AC_HELP_STRING([--disable-gtkui],
--- a/finch/finch.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/finch/finch.c	Mon Oct 29 04:41:19 2007 +0000
@@ -203,7 +203,7 @@
 	char *text;
 
 	if (terse) {
-		text = g_strdup_printf(_("%s. Try `%s -h' for more information.\n"), VERSION, name);
+		text = g_strdup_printf(_("%s. Try `%s -h' for more information.\n"), DISPLAY_VERSION, name);
 	} else {
 		text = g_strdup_printf(_("%s\n"
 		       "Usage: %s [OPTION]...\n\n"
@@ -211,7 +211,7 @@
 		       "  -d, --debug         print debugging messages to stdout\n"
 		       "  -h, --help          display this help and exit\n"
 		       "  -n, --nologin       don't automatically login\n"
-		       "  -v, --version       display the current version and exit\n"), VERSION, name);
+		       "  -v, --version       display the current version and exit\n"), DISPLAY_VERSION, name);
 	}
 
 	purple_print_utf8_to_console(stdout, text);
@@ -298,7 +298,7 @@
 		/* Translators may want to transliterate the name.
 		 It is not to be translated. */
 		gnt_quit();
-		printf("%s %s\n", _("Finch"), VERSION);
+		printf("%s %s\n", _("Finch"), DISPLAY_VERSION);
 		return 0;
 	}
 
--- a/finch/gntconv.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/finch/gntconv.c	Mon Oct 29 04:41:19 2007 +0000
@@ -1039,7 +1039,7 @@
 	PurpleCmdStatus status;
 
 	if (!g_ascii_strcasecmp(args[0], "version")) {
-		tmp = g_strdup_printf("me is using Finch v%s.", VERSION);
+		tmp = g_strdup_printf("me is using Finch v%s.", DISPLAY_VERSION);
 		markup = g_markup_escape_text(tmp, -1);
 
 		status = purple_cmd_do_command(conv, tmp, markup, error);
--- a/finch/plugins/gntclipboard.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/finch/plugins/gntclipboard.c	Mon Oct 29 04:41:19 2007 +0000
@@ -156,7 +156,7 @@
 	PURPLE_PRIORITY_DEFAULT,
 	"gntclipboard",
 	N_("GntClipboard"),
-	VERSION,
+	DISPLAY_VERSION,
 	N_("Clipboard plugin"),
 	N_("When the gnt clipboard contents change, "
 		"the contents are made available to X, if possible."),
--- a/finch/plugins/gntgf.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/finch/plugins/gntgf.c	Mon Oct 29 04:41:19 2007 +0000
@@ -375,7 +375,7 @@
 	PURPLE_PRIORITY_DEFAULT,
 	"gntgf",
 	N_("GntGf"),
-	VERSION,
+	DISPLAY_VERSION,
 	N_("Toaster plugin"),
 	N_("Toaster plugin"),
 	"Sadrul H Chowdhury <sadrul@users.sourceforge.net>",
--- a/finch/plugins/gnthistory.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/finch/plugins/gnthistory.c	Mon Oct 29 04:41:19 2007 +0000
@@ -177,7 +177,7 @@
 	PURPLE_PRIORITY_DEFAULT,
 	HISTORY_PLUGIN_ID,
 	N_("GntHistory"),
-	VERSION,
+	DISPLAY_VERSION,
 	N_("Shows recently logged conversations in new conversations."),
 	N_("When a new conversation is opened this plugin will insert "
 	   "the last conversation into the current conversation."),
--- a/finch/plugins/lastlog.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/finch/plugins/lastlog.c	Mon Oct 29 04:41:19 2007 +0000
@@ -120,7 +120,7 @@
 	PURPLE_PRIORITY_DEFAULT,
 	"gntlastlog",
 	N_("GntLastlog"),
-	VERSION,
+	DISPLAY_VERSION,
 	N_("Lastlog plugin."),
 	N_("Lastlog plugin."),
 	"Sadrul H Chowdhury <sadrul@users.sourceforge.net>",
--- a/libpurple/conversation.h	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/conversation.h	Mon Oct 29 04:41:19 2007 +0000
@@ -171,9 +171,12 @@
 	void (*write_im)(PurpleConversation *conv, const char *who,
 	                 const char *message, PurpleMessageFlags flags,
 	                 time_t mtime);
-	/** Write a message to a conversation.  This is used rather than
-	 *  the chat- or im-specific ops for generic messages, such as system
-	 *  messages like "x is now know as y".
+	/** Write a message to a conversation.  This is used rather than the
+	 *  chat- or im-specific ops for errors, system messages (such as "x is
+	 *  now know as y"), and as the fallback if #write_im and #write_chat
+	 *  are not implemented.  It should be implemented, or the UI will miss
+	 *  conversation error messages and your users will hate you.
+	 *
 	 *  @see purple_conversation_write()
 	 */
 	void (*write_conv)(PurpleConversation *conv,
--- a/libpurple/dbus-analyze-functions.py	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/dbus-analyze-functions.py	Mon Oct 29 04:41:19 2007 +0000
@@ -75,7 +75,11 @@
 ]
 
 pointer = "#pointer#"
-myexception = "My Exception"
+
+class MyException(Exception):
+    pass
+
+myexception = MyException()
 
 def ctopascal(name):
     newname = ""
@@ -520,7 +524,7 @@
 
             try:
                 self.processfunction(functiontext, paramtexts)
-            except myexception:
+            except MyException:
                 sys.stderr.write(myline + "\n")
             except:
                 sys.stderr.write(myline + "\n")
--- a/libpurple/plugins/autoaccept.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/autoaccept.c	Mon Oct 29 04:41:19 2007 +0000
@@ -252,7 +252,7 @@
 
 	PLUGIN_ID,				/* plugin id			*/
 	PLUGIN_NAME,				/* name					*/
-	VERSION,				/* version				*/
+	DISPLAY_VERSION,			/* version				*/
 	PLUGIN_SUMMARY,				/* summary				*/
 	PLUGIN_DESCRIPTION,			/* description			*/
 	PLUGIN_AUTHOR,				/* author				*/
--- a/libpurple/plugins/buddynote.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/buddynote.c	Mon Oct 29 04:41:19 2007 +0000
@@ -88,7 +88,7 @@
 	PURPLE_PRIORITY_DEFAULT,						/**< priority		*/
 	"core-plugin_pack-buddynote",					/**< id				*/
 	N_("Buddy Notes"),								/**< name			*/
-	VERSION,										/**< version		*/
+	DISPLAY_VERSION,									/**< version		*/
 	N_("Store notes on particular buddies."),		/**< summary		*/
 	N_("Adds the option to store notes for buddies "
 	   "on your buddy list."),						/**< description	*/
--- a/libpurple/plugins/ciphertest.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/ciphertest.c	Mon Oct 29 04:41:19 2007 +0000
@@ -262,7 +262,7 @@
 
 	"core-cipher-test",									/**< id             */
 	N_("Cipher Test"),									/**< name           */
-	VERSION,											/**< version        */
+	DISPLAY_VERSION,										/**< version        */
 														/**  summary        */
 	N_("Tests the ciphers that ship with libpurple."),
 														/**  description    */
--- a/libpurple/plugins/dbus-example.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/dbus-example.c	Mon Oct 29 04:41:19 2007 +0000
@@ -153,7 +153,7 @@
 
 	"dbus-example",                                   /**< id             */
 	N_("DBus Example"),                               /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("DBus Plugin Example"),
 	                                                  /**  description    */
--- a/libpurple/plugins/debug_example.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/debug_example.c	Mon Oct 29 04:41:19 2007 +0000
@@ -109,7 +109,7 @@
 
 	PLUGIN_ID,                  /* id */
 	"Debug API Example",        /* name */
-	VERSION,                    /* version */
+	DISPLAY_VERSION,            /* version */
 	"Debug API Example",        /* summary */
 	"Debug API Example",        /* description */
 	PLUGIN_AUTHOR,              /* author */
--- a/libpurple/plugins/filectl.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/filectl.c	Mon Oct 29 04:41:19 2007 +0000
@@ -246,7 +246,7 @@
 
 	FILECTL_PLUGIN_ID,                                /**< id             */
 	N_("File Control"),                               /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Allows control by entering commands in a file."),
 	                                                  /**  description    */
--- a/libpurple/plugins/helloworld.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/helloworld.c	Mon Oct 29 04:41:19 2007 +0000
@@ -114,8 +114,8 @@
 
 	"core-hello_world",
 	"Hello World!",
-	VERSION, /* This constant is defined in version.h, but you shouldn't use it for
-		    your own plugins.  We use it here because it's our plugin. */
+	DISPLAY_VERSION, /* This constant is defined in config.h, but you shouldn't use it for
+		    your own plugins.  We use it here because it's our plugin. And we're lazy. */
 
 	"Hello World Plugin",
 	"Hello World Plugin",
--- a/libpurple/plugins/idle.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/idle.c	Mon Oct 29 04:41:19 2007 +0000
@@ -316,7 +316,7 @@
 	/* This is a cultural reference.  Dy'er Mak'er is a song by Led Zeppelin.
 	   If that doesn't translate well into your language, drop the 's before translating. */
 	N_("I'dle Mak'er"),
-	VERSION,
+	DISPLAY_VERSION,
 	N_("Allows you to hand-configure how long you've been idle"),
 	N_("Allows you to hand-configure how long you've been idle"),
 	"Eric Warmenhoven <eric@warmenhoven.org>",
--- a/libpurple/plugins/ipc-test-client.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/ipc-test-client.c	Mon Oct 29 04:41:19 2007 +0000
@@ -85,7 +85,7 @@
 
 	IPC_TEST_CLIENT_PLUGIN_ID,                        /**< id             */
 	N_("IPC Test Client"),                            /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Test plugin IPC support, as a client."),
 	                                                  /**  description    */
--- a/libpurple/plugins/ipc-test-server.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/ipc-test-server.c	Mon Oct 29 04:41:19 2007 +0000
@@ -72,7 +72,7 @@
 
 	IPC_TEST_SERVER_PLUGIN_ID,                        /**< id             */
 	N_("IPC Test Server"),                            /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Test plugin IPC support, as a server."),
 	                                                  /**  description    */
--- a/libpurple/plugins/joinpart.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/joinpart.c	Mon Oct 29 04:41:19 2007 +0000
@@ -268,7 +268,7 @@
 
 	JOINPART_PLUGIN_ID,                               /**< id             */
 	N_("Join/Part Hiding"),                           /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Hides extraneous join/part messages."),
 	                                                  /**  description    */
--- a/libpurple/plugins/log_reader.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/log_reader.c	Mon Oct 29 04:41:19 2007 +0000
@@ -2888,7 +2888,7 @@
 	PURPLE_PRIORITY_DEFAULT,                            /**< priority       */
 	"core-log_reader",                                /**< id             */
 	N_("Log Reader"),                                 /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 
 	/** summary */
 	N_("Includes other IM clients' logs in the "
--- a/libpurple/plugins/mono/loader/mono.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/mono/loader/mono.c	Mon Oct 29 04:41:19 2007 +0000
@@ -215,7 +215,7 @@
 	PURPLE_PRIORITY_DEFAULT,
 	MONO_PLUGIN_ID,
 	N_("Mono Plugin Loader"),
-	VERSION,
+	DISPLAY_VERSION,
 	N_("Loads .NET plugins with Mono."),
 	N_("Loads .NET plugins with Mono."),
 	"Eoin Coffey <ecoffey@simla.colostate.edu>",
--- a/libpurple/plugins/newline.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/newline.c	Mon Oct 29 04:41:19 2007 +0000
@@ -66,7 +66,7 @@
 
 	"core-plugin_pack-newline",						/**< id				*/
 	N_("New Line"),									/**< name			*/
-	VERSION,										/**< version		*/
+	DISPLAY_VERSION,									/**< version		*/
 	N_("Prepends a newline to displayed message."),	/**< summary		*/
 	N_("Prepends a newline to messages so that the "
 	   "rest of the message appears below the "
--- a/libpurple/plugins/notify_example.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/notify_example.c	Mon Oct 29 04:41:19 2007 +0000
@@ -135,7 +135,7 @@
 
 	PLUGIN_ID,                  /* id */
 	"Notify API Example",       /* name */
-	VERSION,                    /* version */
+	DISPLAY_VERSION,            /* version */
 	"Notify API Example",       /* summary */
 	"Notify API Example",       /* description */
 	PLUGIN_AUTHOR,              /* author */
--- a/libpurple/plugins/offlinemsg.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/offlinemsg.c	Mon Oct 29 04:41:19 2007 +0000
@@ -225,7 +225,7 @@
 
 	PLUGIN_ID,				/* plugin id			*/
 	PLUGIN_NAME,				/* name					*/
-	VERSION,				/* version				*/
+	DISPLAY_VERSION,			/* version				*/
 	PLUGIN_SUMMARY,				/* summary				*/
 	PLUGIN_DESCRIPTION,			/* description			*/
 	PLUGIN_AUTHOR,				/* author				*/
--- a/libpurple/plugins/perl/perl.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/perl/perl.c	Mon Oct 29 04:41:19 2007 +0000
@@ -599,7 +599,7 @@
 
 	PERL_PLUGIN_ID,                                   /**< id             */
 	N_("Perl Plugin Loader"),                         /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	N_("Provides support for loading perl plugins."), /**< summary        */
 	N_("Provides support for loading perl plugins."), /**< description    */
 	"Christian Hammond <chipx86@gnupdate.org>",       /**< author         */
--- a/libpurple/plugins/pluginpref_example.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/pluginpref_example.c	Mon Oct 29 04:41:19 2007 +0000
@@ -131,7 +131,7 @@
 
 	"core-pluginpref_example",                     /**< id             */
 	"Pluginpref Example",                           /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	"An example of how to use pluginprefs",
 	                                                  /**  description    */
--- a/libpurple/plugins/psychic.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/psychic.c	Mon Oct 29 04:41:19 2007 +0000
@@ -147,7 +147,7 @@
   
   PLUGIN_ID,              /**< id */
   PLUGIN_NAME,            /**< name */
-  VERSION,                /**< version */
+  DISPLAY_VERSION,        /**< version */
   PLUGIN_SUMMARY,         /**< summary */
   PLUGIN_DESC,            /**< description */
   PLUGIN_AUTHOR,          /**< author */
--- a/libpurple/plugins/signals-test.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/signals-test.c	Mon Oct 29 04:41:19 2007 +0000
@@ -709,7 +709,7 @@
 
 	SIGNAL_TEST_PLUGIN_ID,                            /**< id             */
 	N_("Signals Test"),                               /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Test to see that all signals are working properly."),
 	                                                  /**  description    */
--- a/libpurple/plugins/simple.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/simple.c	Mon Oct 29 04:41:19 2007 +0000
@@ -35,7 +35,7 @@
 
 	SIMPLE_PLUGIN_ID,                                 /**< id             */
 	N_("Simple Plugin"),                              /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Tests to see that most things are working."),
 	                                                  /**  description    */
--- a/libpurple/plugins/ssl/ssl-gnutls.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/ssl/ssl-gnutls.c	Mon Oct 29 04:41:19 2007 +0000
@@ -993,7 +993,7 @@
 
 	SSL_GNUTLS_PLUGIN_ID,                             /**< id             */
 	N_("GNUTLS"),                                     /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Provides SSL support through GNUTLS."),
 	                                                  /**  description    */
--- a/libpurple/plugins/ssl/ssl-nss.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/ssl/ssl-nss.c	Mon Oct 29 04:41:19 2007 +0000
@@ -814,7 +814,7 @@
 
 	SSL_NSS_PLUGIN_ID,                             /**< id             */
 	N_("NSS"),                                        /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Provides SSL support through Mozilla NSS."),
 	                                                  /**  description    */
--- a/libpurple/plugins/ssl/ssl.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/ssl/ssl.c	Mon Oct 29 04:41:19 2007 +0000
@@ -92,7 +92,7 @@
 
 	SSL_PLUGIN_ID,                                    /**< id             */
 	N_("SSL"),                                        /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Provides a wrapper around SSL support libraries."),
 	                                                  /**  description    */
--- a/libpurple/plugins/statenotify.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/statenotify.c	Mon Oct 29 04:41:19 2007 +0000
@@ -146,7 +146,7 @@
 
 	STATENOTIFY_PLUGIN_ID,                            /**< id             */
 	N_("Buddy State Notification"),                   /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Notifies in a conversation window when a buddy goes or returns from "
 	   "away or idle."),
--- a/libpurple/plugins/tcl/tcl.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/plugins/tcl/tcl.c	Mon Oct 29 04:41:19 2007 +0000
@@ -421,7 +421,7 @@
 	PURPLE_PRIORITY_DEFAULT,
 	"core-tcl",
 	N_("Tcl Plugin Loader"),
-	VERSION,
+	DISPLAY_VERSION,
 	N_("Provides support for loading Tcl plugins"),
 	N_("Provides support for loading Tcl plugins"),
 	"Ethan Blanton <eblanton@cs.purdue.edu>",
--- a/libpurple/protocols/bonjour/bonjour.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/bonjour/bonjour.c	Mon Oct 29 04:41:19 2007 +0000
@@ -476,7 +476,7 @@
 
 	"prpl-bonjour",                                   /**< id             */
 	"Bonjour",                                        /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Bonjour Protocol Plugin"),
 	                                                  /**  description    */
--- a/libpurple/protocols/gg/gg.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/gg/gg.c	Mon Oct 29 04:41:19 2007 +0000
@@ -2148,7 +2148,7 @@
 
 	"prpl-gg",			/* id */
 	"Gadu-Gadu",			/* name */
-	VERSION,			/* version */
+	DISPLAY_VERSION,		/* version */
 
 	N_("Gadu-Gadu Protocol Plugin"),	/* summary */
 	N_("Polish popular IM"),		/* description */
--- a/libpurple/protocols/irc/irc.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/irc/irc.c	Mon Oct 29 04:41:19 2007 +0000
@@ -910,7 +910,7 @@
 
 	"prpl-irc",                                       /**< id             */
 	"IRC",                                            /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	N_("IRC Protocol Plugin"),                        /**  summary        */
 	N_("The IRC Protocol Plugin that Sucks Less"),    /**  description    */
 	NULL,                                             /**< author         */
--- a/libpurple/protocols/jabber/libxmpp.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/jabber/libxmpp.c	Mon Oct 29 04:41:19 2007 +0000
@@ -165,7 +165,7 @@
 
 	"prpl-jabber",                                    /**< id             */
 	"XMPP",                                           /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("XMPP Protocol Plugin"),
 	                                                  /**  description    */
--- a/libpurple/protocols/msn/msn.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/msn/msn.c	Mon Oct 29 04:41:19 2007 +0000
@@ -617,7 +617,12 @@
 	 * XXX: blocked icon overlay isn't always accurate for MSN.
 	 * XXX: This can die as soon as purple_privacy_check() knows that
 	 * XXX: this prpl always honors both the allow and deny lists. */
-	if (user)
+	/* While the above comment may be strictly correct (the privacy API needs
+	 * rewriteing), purple_privacy_check() is going to be more accurate at
+	 * indicating whether a particular buddy is going to be able to message
+	 * you, which is the important information that this is trying to convey.
+	 */
+	if (full && user)
 	{
 		purple_notify_user_info_add_pair(user_info, _("Blocked"),
 									   ((user->list_op & (1 << MSN_LIST_BL)) ? _("Yes") : _("No")));
@@ -2260,7 +2265,7 @@
 
 	"prpl-msn",                                       /**< id             */
 	"MSN",                                            /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Windows Live Messenger Protocol Plugin"),
 	                                                  /**  description    */
--- a/libpurple/protocols/myspace/user.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/myspace/user.c	Mon Oct 29 04:41:19 2007 +0000
@@ -203,14 +203,6 @@
 		/* Ignore because PurpleBuddy knows this already */
 		g_free(value_str);
 	} else if (g_str_equal(key_str, "ImageURL") || g_str_equal(key_str, "AvatarURL")) {
-		if (user->temporary_user) {
-			/* This user will be destroyed soon; don't try to look up its image or avatar, 
-			 * since that won't return immediately and we will end up accessing freed data.
-			 */
-			g_free(value_str);
-			return;
-		}
-		
 		const gchar *previous_url;
 
 		if (user->temporary_user) {
@@ -220,7 +212,15 @@
 			g_free(value_str);
 			return;
 		}
-		
+
+		if (user->temporary_user) {
+			/* This user will be destroyed soon; don't try to look up its image or avatar, 
+			 * since that won't return immediately and we will end up accessing freed data.
+			 */
+			g_free(value_str);
+			return;
+		}
+
 		g_free(user->image_url);
 
 		user->image_url = value_str;
@@ -233,7 +233,7 @@
 				NULL, 0, NULL);
 			return;
 		}
-	
+
 		/* TODO: use ETag for checksum */
 		previous_url = purple_buddy_icons_get_checksum_for_user(user->buddy);
 
--- a/libpurple/protocols/novell/novell.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/novell/novell.c	Mon Oct 29 04:41:19 2007 +0000
@@ -3518,7 +3518,7 @@
 	PURPLE_PRIORITY_DEFAULT,			/**< priority       */
 	"prpl-novell",				/**< id             */
 	"GroupWise",				/**< name           */
-	VERSION,				/**< version        */
+	DISPLAY_VERSION,			/**< version        */
 	/**  summary        */
 	N_("Novell GroupWise Messenger Protocol Plugin"),
 	/**  description    */
--- a/libpurple/protocols/oscar/libaim.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/oscar/libaim.c	Mon Oct 29 04:41:19 2007 +0000
@@ -113,7 +113,7 @@
 
 	"prpl-aim",                                       /**< id             */
 	"AIM",                                            /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("AIM Protocol Plugin"),
 	                                                  /**  description    */
--- a/libpurple/protocols/oscar/libicq.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/oscar/libicq.c	Mon Oct 29 04:41:19 2007 +0000
@@ -113,7 +113,7 @@
 
 	"prpl-icq",                                     /**< id             */
 	"ICQ",                                        /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("ICQ Protocol Plugin"),
 	                                                  /**  description    */
--- a/libpurple/protocols/qq/qq.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/qq/qq.c	Mon Oct 29 04:41:19 2007 +0000
@@ -720,7 +720,7 @@
 
 	"prpl-qq",			/**< id			*/
 	"QQ",				/**< name		*/
-	VERSION,			/**< version		*/
+	DISPLAY_VERSION,		/**< version		*/
 					/**  summary		*/
 	N_("QQ Protocol	Plugin"),
 					/**  description	*/
--- a/libpurple/protocols/sametime/sametime.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/sametime/sametime.c	Mon Oct 29 04:41:19 2007 +0000
@@ -5667,7 +5667,7 @@
 
 	PLUGIN_ID,                                        /**< id             */
 	PLUGIN_NAME,                                      /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	PLUGIN_SUMMARY,                                   /**< summary        */
 	PLUGIN_DESC,                                      /**<  description    */
 	PLUGIN_AUTHOR,                                    /**< author         */
--- a/libpurple/protocols/silc/buddy.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/silc/buddy.c	Mon Oct 29 04:41:19 2007 +0000
@@ -934,8 +934,11 @@
 		/* Create dir if it doesn't exist */
 		if ((g_stat(filename, &st)) == -1) {
 			if (errno == ENOENT) {
-				if (pw->pw_uid == geteuid())
-					g_mkdir(filename, 0755);
+				if (pw->pw_uid == geteuid()) {
+					int ret = g_mkdir(filename, 0755);
+					if (ret < 0)
+						return;
+					}
 			}
 		}
 
--- a/libpurple/protocols/silc/chat.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/silc/chat.c	Mon Oct 29 04:41:19 2007 +0000
@@ -160,15 +160,17 @@
 		unsigned char *pk;
 		SilcUInt32 pk_len;
 		pk = silc_pkcs_public_key_encode(channel->founder_key, &pk_len);
-		fingerprint = silc_hash_fingerprint(NULL, pk, pk_len);
-		babbleprint = silc_hash_babbleprint(NULL, pk, pk_len);
+		if (pk) {
+			fingerprint = silc_hash_fingerprint(NULL, pk, pk_len);
+			babbleprint = silc_hash_babbleprint(NULL, pk, pk_len);
 
-		g_string_append_printf(s, _("<br><b>Founder Key Fingerprint:</b><br>%s"), fingerprint);
-		g_string_append_printf(s, _("<br><b>Founder Key Babbleprint:</b><br>%s"), babbleprint);
+			g_string_append_printf(s, _("<br><b>Founder Key Fingerprint:</b><br>%s"), fingerprint);
+			g_string_append_printf(s, _("<br><b>Founder Key Babbleprint:</b><br>%s"), babbleprint);
 
-		silc_free(fingerprint);
-		silc_free(babbleprint);
-		silc_free(pk);
+			silc_free(fingerprint);
+			silc_free(babbleprint);
+			silc_free(pk);
+		}
 	}
 
 	buf = g_string_free(s, FALSE);
@@ -460,6 +462,8 @@
 	silc_dlist_start(channel_pubkeys);
 	while ((public_key = silc_dlist_get(channel_pubkeys))) {
 		pk = silc_pkcs_public_key_encode(public_key, &pk_len);
+		if (!pk)
+			continue;
 		fingerprint = silc_hash_fingerprint(NULL, pk + 4, pk_len - 4);
 		babbleprint = silc_hash_babbleprint(NULL, pk + 4, pk_len - 4);
 
@@ -1013,9 +1017,6 @@
 	SilcClient client = sg->client;
 	SilcClientConnection conn = sg->conn;
 	const char *channel, *passphrase, *parentch;
-#if 0
-	PurpleChat *chat;
-#endif
 
 	if (!conn)
 		return;
@@ -1071,22 +1072,6 @@
 		return;
 	}
 
-#if 0
-	/* If the channel is not on buddy list, automatically add it there. */
-	chat = purple_blist_find_chat(sg->account, channel);
-	if (!chat) {
-		data = g_hash_table_new_full(g_str_hash, g_str_equal,
-					     g_free, g_free);
-		g_hash_table_replace(data, g_strdup("channel"),
-				     g_strdup(channel));
-		if (passphrase)
-		  g_hash_table_replace(data, g_strdup("passphrase"),
-				       g_strdup(passphrase));
-		chat = purple_chat_new(sg->account, NULL, data);
-		purple_blist_add_chat(chat, NULL, NULL);
-	}
-#endif
-
 	/* XXX We should have other properties here as well:
 	   1. whether to try to authenticate to the channel
 	     1a. with default key,
@@ -1320,7 +1305,7 @@
 				ret =
 			 	silc_client_send_channel_message(client, conn,
 								 channel, key,
-								 flags, NULL,
+								 flags, sg->sha1hash,
 								 buf->data,
 								 silc_buffer_len(buf));
 			silc_mime_partial_free(list);
@@ -1334,7 +1319,8 @@
 
 	/* Send channel message */
 	ret = silc_client_send_channel_message(client, conn, channel, key,
-					       flags, NULL, (unsigned char *)msg2,
+					       flags, sg->sha1hash,
+					       (unsigned char *)msg2,
 					       strlen(msg2));
 	if (ret) {
 		serv_got_chat_in(gc, id, purple_connection_get_display_name(gc), 0, msg,
--- a/libpurple/protocols/silc/ops.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/silc/ops.c	Mon Oct 29 04:41:19 2007 +0000
@@ -1274,13 +1274,15 @@
 				unsigned char *pk;
 				SilcUInt32 pk_len;
 				pk = silc_pkcs_public_key_encode(client_entry->public_key, &pk_len);
-				fingerprint = silc_hash_fingerprint(NULL, pk, pk_len);
-				babbleprint = silc_hash_babbleprint(NULL, pk, pk_len);
-				purple_notify_user_info_add_pair(user_info, _("Public Key Fingerprint"), fingerprint);
-				purple_notify_user_info_add_pair(user_info, _("Public Key Babbleprint"), babbleprint);
-				silc_free(fingerprint);
-				silc_free(babbleprint);
-				silc_free(pk);
+				if (pk) {
+					fingerprint = silc_hash_fingerprint(NULL, pk, pk_len);
+					babbleprint = silc_hash_babbleprint(NULL, pk, pk_len);
+					purple_notify_user_info_add_pair(user_info, _("Public Key Fingerprint"), fingerprint);
+					purple_notify_user_info_add_pair(user_info, _("Public Key Babbleprint"), babbleprint);
+					silc_free(fingerprint);
+					silc_free(babbleprint);
+					silc_free(pk);
+				}
 			}
 
 #if 0 /* XXX for now, let's not show attrs here */
@@ -1346,13 +1348,15 @@
 				unsigned char *pk;
 				SilcUInt32 pk_len;
 				pk = silc_pkcs_public_key_encode(client_entry->public_key, &pk_len);
-				fingerprint = silc_hash_fingerprint(NULL, pk, pk_len);
-				babbleprint = silc_hash_babbleprint(NULL, pk, pk_len);
-				purple_notify_user_info_add_pair(user_info, _("Public Key Fingerprint"), fingerprint);
-				purple_notify_user_info_add_pair(user_info, _("Public Key Babbleprint"), babbleprint);
-				silc_free(fingerprint);
-				silc_free(babbleprint);
-				silc_free(pk);
+				if (pk) {
+					fingerprint = silc_hash_fingerprint(NULL, pk, pk_len);
+					babbleprint = silc_hash_babbleprint(NULL, pk, pk_len);
+					purple_notify_user_info_add_pair(user_info, _("Public Key Fingerprint"), fingerprint);
+					purple_notify_user_info_add_pair(user_info, _("Public Key Babbleprint"), babbleprint);
+					silc_free(fingerprint);
+					silc_free(babbleprint);
+					silc_free(pk);
+				}
 			}
 
 			purple_notify_userinfo(gc, nickname, user_info, NULL, NULL);
--- a/libpurple/protocols/silc/pk.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/silc/pk.c	Mon Oct 29 04:41:19 2007 +0000
@@ -158,6 +158,11 @@
 				    NULL, &hostname, &ip, &port);
 
 	pk = silc_pkcs_public_key_encode(public_key, &pk_len);
+	if (!pk) {
+		if (completion)
+			completion(FALSE, context);
+		return;
+	}
 
 	if (conn_type == SILC_CONN_SERVER ||
 	    conn_type == SILC_CONN_ROUTER) {
--- a/libpurple/protocols/silc/silc.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/silc/silc.c	Mon Oct 29 04:41:19 2007 +0000
@@ -128,6 +128,7 @@
 			 NULL, 0);
 }
 
+#if __SILC_TOOLKIT_VERSION < SILC_VERSION(1,1,1)
 static gboolean
 silcpurple_scheduler(gpointer *context)
 {
@@ -135,6 +136,105 @@
 	silc_client_run_one(client);
 	return TRUE;
 }
+#else
+typedef struct {
+  SilcPurple sg;
+  SilcUInt32 fd;
+  guint tag;
+} *SilcPurpleTask;
+
+/* A timeout occurred.  Call SILC scheduler. */
+
+static gboolean
+silcpurple_scheduler_timeout(gpointer context)
+{
+	SilcPurpleTask task = (SilcPurpleTask)context;
+	silc_client_run_one(task->sg->client);
+	silc_dlist_del(task->sg->tasks, task);
+	silc_free(task);
+	return FALSE;
+}
+
+/* An fd task event occurred.  Call SILC scheduler. */
+
+static void
+silcpurple_scheduler_fd(gpointer data, gint fd, PurpleInputCondition cond)
+{
+	SilcClient client = (SilcClient)data;
+	silc_client_run_one(client);
+}
+
+/* SILC Scheduler notify callback.  This is called whenever task is added to
+   or deleted from SILC scheduler.  It's also called when fd task events
+   change.  Here we add same tasks to glib's main loop. */
+
+static void
+silcpurple_scheduler(SilcSchedule schedule,
+		     SilcBool added, SilcTask task,
+		     SilcBool fd_task, SilcUInt32 fd,
+		     SilcTaskEvent event,
+		     long seconds, long useconds,
+		     void *context)
+{
+	SilcClient client = (SilcClient)context;
+	PurpleConnection *gc = client->application;
+	SilcPurple sg = gc->proto_data;
+	SilcPurpleTask ptask = NULL;
+
+	if (added) {
+	  if (fd_task) {
+	    /* Add fd or change fd events */
+	    PurpleInputCondition e = 0;
+
+	    silc_dlist_start(sg->tasks);
+	    while ((ptask = silc_dlist_get(sg->tasks)))
+	      if (ptask->fd == fd) {
+		purple_input_remove(ptask->tag);
+		break;
+	      }
+
+	    if (event & SILC_TASK_READ)
+	      e |= PURPLE_INPUT_READ;
+	    if (event & SILC_TASK_WRITE)
+	      e |= PURPLE_INPUT_WRITE;
+
+	    if (e) {
+	      if (!ptask) {
+		ptask = silc_calloc(1, sizeof(*ptask));
+		ptask->fd = fd;
+		silc_dlist_add(sg->tasks, ptask);
+	      }
+	      ptask->tag = purple_input_add(fd, e, silcpurple_scheduler_fd,
+					    client);
+	    } else if (ptask) {
+	      silc_dlist_del(sg->tasks, ptask);
+	      silc_free(ptask);
+	    }
+	  } else {
+	    /* Add timeout */
+	    ptask = silc_calloc(1, sizeof(*ptask));
+	    ptask->sg = sg;
+	    ptask->tag = purple_timeout_add((seconds * 1000) +
+					    (useconds / 1000),
+					    silcpurple_scheduler_timeout,
+					    ptask);
+	    silc_dlist_add(sg->tasks, ptask);
+	  }
+	} else {
+	  if (fd_task) {
+	    /* Remove fd */
+	    silc_dlist_start(sg->tasks);
+	    while ((ptask = silc_dlist_get(sg->tasks)))
+	      if (ptask->fd == fd) {
+		purple_input_remove(ptask->tag);
+		silc_dlist_del(sg->tasks, ptask);
+		silc_free(ptask);
+		break;
+	      }
+	  }
+	}
+}
+#endif /* __SILC_TOOLKIT_VERSION */
 
 static void
 silcpurple_connect_cb(SilcClient client, SilcClientConnection conn,
@@ -316,6 +416,8 @@
 		return;
 	}
 
+	silc_hash_alloc("sha1", &sg->sha1hash);
+
 	/* Wrap socket to TCP stream */
 	silc_socket_tcp_stream_create(source, TRUE, FALSE,
 				      sg->client->schedule,
@@ -324,21 +426,11 @@
 
 static void silcpurple_running(SilcClient client, void *context)
 {
-	PurpleAccount *account = context;
-	PurpleConnection *gc = account->gc;
-	SilcPurple sg;
+	SilcPurple sg = context;
+	PurpleConnection *gc = sg->gc;
+	PurpleAccount *account = purple_connection_get_account(gc);
 	char pkd[256], prd[256];
 
-	sg = silc_calloc(1, sizeof(*sg));
-	if (!sg)
-		return;
-	memset(sg, 0, sizeof(*sg));
-	sg->client = client;
-	sg->gc = gc;
-	sg->account = account;
-	sg->scheduler = SILC_PTR_TO_32(gc->proto_data);
-	gc->proto_data = sg;
-
 	/* Progress */
 	purple_connection_update_progress(gc, _("Connecting to SILC Server"), 1, 5);
 
@@ -375,10 +467,10 @@
 {
 	SilcClient client;
 	PurpleConnection *gc;
+	SilcPurple sg;
 	SilcClientParams params;
 	const char *cipher, *hmac;
 	char *username, *hostname, *realname, **up;
-	guint scheduler;
 	int i;
 
 	gc = account->gc;
@@ -431,11 +523,21 @@
 			break;
 		}
 
+	sg = silc_calloc(1, sizeof(*sg));
+	if (!sg)
+		return;
+	sg->client = client;
+	sg->gc = gc;
+	sg->account = account;
+	gc->proto_data = sg;
+
 	/* Init SILC client */
 	if (!silc_client_init(client, username, hostname, realname,
-			      silcpurple_running, account)) {
+			      silcpurple_running, sg)) {
 		gc->wants_to_die = TRUE;
 		purple_connection_error(gc, _("Cannot initialize SILC protocol"));
+		gc->proto_data = NULL;
+		silc_free(sg);
 		return;
 	}
 
@@ -443,20 +545,32 @@
 	if (!silcpurple_check_silc_dir(gc)) {
 		gc->wants_to_die = TRUE;
 		purple_connection_error(gc, _("Error loading SILC key pair"));
+		gc->proto_data = NULL;
+		silc_free(sg);
 		return;
 	}
 
+#if __SILC_TOOLKIT_VERSION < SILC_VERSION(1,1,1)
 	/* Schedule SILC using Glib's event loop */
-	scheduler = purple_timeout_add(300, (GSourceFunc)silcpurple_scheduler, client);
-	gc->proto_data = SILC_32_TO_PTR(scheduler);
+	sg->scheduler = purple_timeout_add(300, (GSourceFunc)silcpurple_scheduler, client);
+#else
+	/* Run SILC scheduler */
+	sg->tasks = silc_dlist_init();
+	silc_schedule_set_notify(client->schedule, silcpurple_scheduler,
+				 client);
+	silc_client_run_one(client);
+#endif /* __SILC_TOOLKIT_VERSION */
 }
 
 static int
 silcpurple_close_final(gpointer *context)
 {
 	SilcPurple sg = (SilcPurple)context;
+
 	silc_client_stop(sg->client, NULL, NULL);
 	silc_client_free(sg->client);
+	if (sg->sha1hash)
+		silc_hash_free(sg->sha1hash);
 	if (sg->mimeass)
 		silc_mime_assembler_free(sg->mimeass);
 	silc_free(sg);
@@ -467,16 +581,33 @@
 silcpurple_close(PurpleConnection *gc)
 {
 	SilcPurple sg = gc->proto_data;
+#if __SILC_TOOLKIT_VERSION >= SILC_VERSION(1,1,1)
+	SilcPurpleTask task;
+#endif /* __SILC_TOOLKIT_VERSION */
 
 	g_return_if_fail(sg != NULL);
 
 	/* Send QUIT */
 	silc_client_command_call(sg->client, sg->conn, NULL,
-				 "QUIT", "Download Pidgin: " PURPLE_WEBSITE, NULL);
+				 "QUIT", "Download Pidgin: " PURPLE_WEBSITE,
+				 NULL);
 
 	if (sg->conn)
 		silc_client_close_connection(sg->client, sg->conn);
 
+#if __SILC_TOOLKIT_VERSION >= SILC_VERSION(1,1,1)
+	if (sg->conn)
+	  silc_client_run_one(sg->client);
+	silc_schedule_set_notify(sg->client->schedule, NULL, NULL);
+
+	silc_dlist_start(sg->tasks);
+	while ((task = silc_dlist_get(sg->tasks))) {
+	  purple_input_remove(task->tag);
+	  silc_free(task);
+	}
+	silc_dlist_uninit(sg->tasks);
+#endif /* __SILC_TOOLKIT_VERSION */
+
 	purple_timeout_remove(sg->scheduler);
 	purple_timeout_add(1, (GSourceFunc)silcpurple_close_final, sg);
 }
@@ -1155,7 +1286,7 @@
 			silc_dlist_start(list);
 			while ((buf = silc_dlist_get(list)) != SILC_LIST_END)
 				silc_client_send_private_message(client, conn,
-								 client_entry, im->flags, NULL,
+								 client_entry, im->flags, sg->sha1hash,
 								 buf->data,
 								 silc_buffer_len(buf));
 			silc_mime_partial_free(list);
@@ -1167,7 +1298,7 @@
 
 	/* Send the message */
 	silc_client_send_private_message(client, conn, client_entry, im->flags,
-					 NULL, (unsigned char *)im->message, im->message_len);
+					 sg->sha1hash, (unsigned char *)im->message, im->message_len);
 	purple_conv_im_write(PURPLE_CONV_IM(convo), conn->local_entry->nickname,
 			     im->message, 0, time(NULL));
 	goto out;
@@ -1259,7 +1390,7 @@
 			while ((buf = silc_dlist_get(list)) != SILC_LIST_END)
 				ret =
 			 	silc_client_send_private_message(client, conn,
-								 client_entry, mflags, NULL,
+								 client_entry, mflags, sg->sha1hash,
 								 buf->data,
 								 silc_buffer_len(buf));
 			silc_mime_partial_free(list);
@@ -1271,7 +1402,7 @@
 
 	/* Send private message directly */
 	ret = silc_client_send_private_message(client, conn, client_entry,
-					       mflags, NULL,
+					       mflags, sg->sha1hash,
 					       (unsigned char *)msg,
 					       strlen(msg));
 
--- a/libpurple/protocols/silc/silcpurple.h	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/silc/silcpurple.h	Mon Oct 29 04:41:19 2007 +0000
@@ -35,6 +35,9 @@
 #include "server.h"
 #include "util.h"
 
+#undef SILC_VERSION
+#define SILC_VERSION(a, b, c) (((a) << 24) + ((b) << 16) + ((c) << 8))
+
 /* Default public and private key file names */
 #define SILCPURPLE_PUBLIC_KEY_NAME "public_key.pub"
 #define SILCPURPLE_PRIVATE_KEY_NAME "private_key.prv"
@@ -68,7 +71,9 @@
 	SilcClientConnection conn;
 	SilcPublicKey public_key;
 	SilcPrivateKey private_key;
+	SilcHash sha1hash;
 
+	SilcDList tasks;
 	guint scheduler;
 	PurpleConnection *gc;
 	PurpleAccount *account;
--- a/libpurple/protocols/silc/util.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/silc/util.c	Mon Oct 29 04:41:19 2007 +0000
@@ -347,8 +347,12 @@
 	key_len = silc_pkcs_public_key_get_len(public_key);
 
 	pk = silc_pkcs_public_key_encode(public_key, &pk_len);
+	if (!pk)
+	  return;
 	fingerprint = silc_hash_fingerprint(NULL, pk, pk_len);
 	babbleprint = silc_hash_babbleprint(NULL, pk, pk_len);
+	if (!fingerprint || !babbleprint)
+	  return;
 
 	s = g_string_new("");
 	if (ident->realname)
--- a/libpurple/protocols/silc/wb.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/silc/wb.c	Mon Oct 29 04:41:19 2007 +0000
@@ -254,10 +254,10 @@
 
 static void
 silcpurple_wb_request(SilcClient client, const unsigned char *message,
-		    SilcUInt32 message_len, SilcClientEntry sender,
-		    SilcChannelEntry channel)
+		      SilcUInt32 message_len, SilcClientEntry sender,
+		      SilcChannelEntry channel)
 {
-	char tmp[128];
+	char tmp[256];
 	SilcPurpleWbRequest req;
 	PurpleConnection *gc;
 	SilcPurple sg;
@@ -274,20 +274,24 @@
 		else
 			wb = silcpurple_wb_init_ch(sg, channel);
 
-		silcpurple_wb_parse(wb->proto_data, wb, (unsigned char *)message,
-				  message_len);
+		silcpurple_wb_parse(wb->proto_data, wb,
+				    (unsigned char *)message,
+				    message_len);
 		return;
 	}
 
+	/* Close any previous unaccepted requests */
+	purple_request_close_with_handle(sender);
+
 	if (!channel) {
 		g_snprintf(tmp, sizeof(tmp),
-			_("%s sent message to whiteboard. Would you like "
-			  "to open the whiteboard?"), sender->nickname);
+			   _("%s sent message to whiteboard. Would you like "
+			     "to open the whiteboard?"), sender->nickname);
 	} else {
 		g_snprintf(tmp, sizeof(tmp),
-			_("%s sent message to whiteboard on %s channel. "
-			  "Would you like to open the whiteboard?"),
-			sender->nickname, channel->channel_name);
+			   _("%s sent message to whiteboard on %s channel. "
+			     "Would you like to open the whiteboard?"),
+			   sender->nickname, channel->channel_name);
 	}
 
 	req = silc_calloc(1, sizeof(*req));
@@ -299,10 +303,10 @@
 	req->channel = channel;
 	req->sg = sg;
 
-	purple_request_action(gc, _("Whiteboard"), tmp, NULL, 1,
-				sg->account, sender->nickname, NULL, req, 2,
-			    _("Yes"), G_CALLBACK(silcpurple_wb_request_cb),
-			    _("No"), G_CALLBACK(silcpurple_wb_request_cb));
+	purple_request_action(sender, _("Whiteboard"), tmp, NULL, 1,
+			      sg->account, sender->nickname, NULL, req, 2,
+			      _("Yes"), G_CALLBACK(silcpurple_wb_request_cb),
+			      _("No"), G_CALLBACK(silcpurple_wb_request_cb));
 }
 
 /* Process incoming whiteboard message */
--- a/libpurple/protocols/silc10/buddy.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/silc10/buddy.c	Mon Oct 29 04:41:19 2007 +0000
@@ -939,8 +939,11 @@
 		/* Create dir if it doesn't exist */
 		if ((g_stat(filename, &st)) == -1) {
 			if (errno == ENOENT) {
-				if (pw->pw_uid == geteuid())
-					g_mkdir(filename, 0755);
+				if (pw->pw_uid == geteuid()) {
+					int ret = g_mkdir(filename, 0755);
+					if (ret < 0)
+						return;
+				}
 			}
 		}
 
--- a/libpurple/protocols/silc10/wb.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/silc10/wb.c	Mon Oct 29 04:41:19 2007 +0000
@@ -279,6 +279,9 @@
 		return;
 	}
 
+	/* Close any previous unaccepted requests */
+	purple_request_close_with_handle(sender);
+
 	if (!channel) {
 		g_snprintf(tmp, sizeof(tmp),
 			_("%s sent message to whiteboard. Would you like "
@@ -299,7 +302,7 @@
 	req->channel = channel;
 	req->sg = sg;
 
-	purple_request_action(gc, _("Whiteboard"), tmp, NULL, 1,
+	purple_request_action(sender, _("Whiteboard"), tmp, NULL, 1,
 				sg->account, sender->nickname, NULL, req, 2,
 			    _("Yes"), G_CALLBACK(silcpurple_wb_request_cb),
 			    _("No"), G_CALLBACK(silcpurple_wb_request_cb));
--- a/libpurple/protocols/simple/simple.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/simple/simple.c	Mon Oct 29 04:41:19 2007 +0000
@@ -321,7 +321,7 @@
 	return retval;
 }
 
-static void fill_auth(struct simple_account_data *sip, gchar *hdr, struct sip_auth *auth) {
+static void fill_auth(struct simple_account_data *sip, const gchar *hdr, struct sip_auth *auth) {
 	int i = 0;
 	const char *authuser;
 	char *tmp;
@@ -592,7 +592,7 @@
 static struct transaction *transactions_find(struct simple_account_data *sip, struct sipmsg *msg) {
 	struct transaction *trans;
 	GSList *transactions = sip->transactions;
-	gchar *cseq = sipmsg_find_header(msg, "CSeq");
+	const gchar *cseq = sipmsg_find_header(msg, "CSeq");
 
 	if (cseq) {
 		while(transactions) {
@@ -800,7 +800,7 @@
 }
 
 static gboolean simple_add_lcs_contacts(struct simple_account_data *sip, struct sipmsg *msg, struct transaction *tc) {
-	gchar *tmp;
+	const gchar *tmp;
 	xmlnode *item, *group, *isc;
 	const char *name_group;
 	PurpleBuddy *b;
@@ -960,7 +960,7 @@
 
 static void process_incoming_message(struct simple_account_data *sip, struct sipmsg *msg) {
 	gchar *from;
-	gchar *contenttype;
+	const gchar *contenttype;
 	gboolean found = FALSE;
 
 	from = parse_from(sipmsg_find_header(msg, "From"));
@@ -1015,7 +1015,7 @@
 
 
 gboolean process_register_response(struct simple_account_data *sip, struct sipmsg *msg, struct transaction *tc) {
-	gchar *tmp;
+	const gchar *tmp;
 	purple_debug(PURPLE_DEBUG_MISC, "simple", "in process register response response: %d\n", msg->response);
 	switch (msg->response) {
 		case 200:
@@ -1072,7 +1072,7 @@
 
 static void process_incoming_notify(struct simple_account_data *sip, struct sipmsg *msg) {
 	gchar *from;
-	gchar *fromhdr;
+	const gchar *fromhdr;
 	gchar *basicstatus_data;
 	xmlnode *pidf;
 	xmlnode *basicstatus = NULL, *tuple, *status;
@@ -1255,8 +1255,8 @@
 	gchar *theirtag = find_tag(from_hdr);
 	gchar *ourtag = find_tag(sipmsg_find_header(msg, "To"));
 	gboolean tagadded = FALSE;
-	gchar *callid = sipmsg_find_header(msg, "Call-ID");
-	gchar *expire = sipmsg_find_header(msg, "Expire");
+	const gchar *callid = sipmsg_find_header(msg, "Call-ID");
+	const gchar *expire = sipmsg_find_header(msg, "Expire");
 	gchar *tmp;
 	struct simple_watcher *watcher = watcher_find(sip, from);
 	if(!ourtag) {
@@ -1264,14 +1264,14 @@
 		ourtag = gentag();
 	}
 	if(!watcher) { /* new subscription */
-		gchar *acceptheader = sipmsg_find_header(msg, "Accept");
+		const gchar *acceptheader = sipmsg_find_header(msg, "Accept");
 		gboolean needsxpidf = FALSE;
 		if(!purple_privacy_check(sip->account, from)) {
 			send_sip_response(sip->gc, msg, 202, "Ok", NULL);
 			goto privend;
 		}
 		if(acceptheader) {
-			gchar *tmp = acceptheader;
+			const gchar *tmp = acceptheader;
 			gboolean foundpidf = FALSE;
 			gboolean foundxpidf = FALSE;
 			while(tmp && tmp < acceptheader + strlen(acceptheader)) {
@@ -1289,7 +1289,6 @@
 					tmp = 0;
 			}
 			if(!foundpidf && foundxpidf) needsxpidf = TRUE;
-			g_free(acceptheader);
 		}
 		watcher = watcher_create(sip, from, callid, ourtag, theirtag, needsxpidf);
 	}
@@ -1314,8 +1313,6 @@
 	g_free(from);
 	g_free(theirtag);
 	g_free(ourtag);
-	g_free(callid);
-	g_free(expire);
 }
 
 static void process_input_message(struct simple_account_data *sip, struct sipmsg *msg) {
@@ -1337,7 +1334,8 @@
 		struct transaction *trans = transactions_find(sip, msg);
 		if(trans) {
 			if(msg->response == 407) {
-				gchar *resend, *auth, *ptmp;
+				gchar *resend, *auth;
+				const gchar *ptmp;
 
 				if(sip->proxy.retries > 3) return;
 				sip->proxy.retries++;
@@ -1381,7 +1379,8 @@
 							/* This is encountered when a generic (MESSAGE, NOTIFY, etc)
 							 * was denied until further authorization is provided.
 							 */
-							gchar *resend, *auth, *ptmp;
+							gchar *resend, *auth;
+							const gchar *ptmp;
 
 							if(sip->registrar.retries > SIMPLE_REGISTER_RETRY_MAX) return;
 							sip->registrar.retries++;
@@ -1889,7 +1888,7 @@
 
 	"prpl-simple",                                    /**< id             */
 	"SIMPLE",                                         /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	N_("SIP/SIMPLE Protocol Plugin"),                 /**  summary        */
 	N_("The SIP/SIMPLE Protocol Plugin"),             /**  description    */
 	"Thomas Butter <butter@uni-mannheim.de>",         /**< author         */
--- a/libpurple/protocols/simple/simple.h	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/simple/simple.h	Mon Oct 29 04:41:19 2007 +0000
@@ -127,7 +127,7 @@
 	int retries;
 	int transport; /* 0 = tcp, 1 = udp */
 	int fd;
-	gchar *cseq;
+	const gchar *cseq;
 	struct sipmsg *msg;
 	TransCallback callback;
 };
--- a/libpurple/protocols/simple/sipmsg.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/simple/sipmsg.c	Mon Oct 29 04:41:19 2007 +0000
@@ -58,6 +58,7 @@
 	gchar *dummy;
 	gchar *dummy2;
 	gchar *tmp;
+	const gchar *tmp2;
 	int i=1;
 	if(!lines[0]) return NULL;
 	parts = g_strsplit(lines[0], " ", 3);
@@ -100,14 +101,16 @@
 		g_strfreev(parts);
 	}
 	g_strfreev(lines);
-	msg->bodylen = strtol(sipmsg_find_header(msg, "Content-Length"),NULL,10);
+	tmp2 = sipmsg_find_header(msg, "Content-Length");
+	if (tmp2 != NULL)
+		msg->bodylen = strtol(tmp2, NULL, 10);
 	if(msg->response) {
-		tmp = sipmsg_find_header(msg, "CSeq");
-		if(!tmp) {
+		tmp2 = sipmsg_find_header(msg, "CSeq");
+		if(!tmp2) {
 			/* SHOULD NOT HAPPEN */
 			msg->method = 0;
 		} else {
-			parts = g_strsplit(tmp, " ", 2);
+			parts = g_strsplit(tmp2, " ", 2);
 			msg->method = g_strdup(parts[1]);
 			g_strfreev(parts);
 		}
@@ -192,7 +195,7 @@
 	return;
 }
 
-gchar *sipmsg_find_header(struct sipmsg *msg, const gchar *name) {
+const gchar *sipmsg_find_header(struct sipmsg *msg, const gchar *name) {
 	GSList *tmp;
 	struct siphdrelement *elem;
 	tmp = msg->headers;
--- a/libpurple/protocols/simple/sipmsg.h	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/simple/sipmsg.h	Mon Oct 29 04:41:19 2007 +0000
@@ -43,7 +43,7 @@
 struct sipmsg *sipmsg_parse_header(const gchar *header);
 void sipmsg_add_header(struct sipmsg *msg, const gchar *name, const gchar *value);
 void sipmsg_free(struct sipmsg *msg);
-gchar *sipmsg_find_header(struct sipmsg *msg, const gchar *name);
+const gchar *sipmsg_find_header(struct sipmsg *msg, const gchar *name);
 void sipmsg_remove_header(struct sipmsg *msg, const gchar *name);
 void sipmsg_print(const struct sipmsg *msg);
 char *sipmsg_to_string(const struct sipmsg *msg);
--- a/libpurple/protocols/toc/toc.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/toc/toc.c	Mon Oct 29 04:41:19 2007 +0000
@@ -2301,7 +2301,7 @@
 
 	"prpl-toc",                                       /**< id             */
 	"TOC",                                            /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("TOC Protocol Plugin"),
 	                                                  /**  description    */
--- a/libpurple/protocols/yahoo/yahoo.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/yahoo/yahoo.c	Mon Oct 29 04:41:19 2007 +0000
@@ -4355,7 +4355,7 @@
 	PURPLE_PRIORITY_DEFAULT,                            /**< priority       */
 	"prpl-yahoo",                                     /**< id             */
 	"Yahoo",	                                      /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Yahoo Protocol Plugin"),
 	                                                  /**  description    */
--- a/libpurple/protocols/zephyr/zephyr.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/protocols/zephyr/zephyr.c	Mon Oct 29 04:41:19 2007 +0000
@@ -2941,7 +2941,7 @@
 
 	"prpl-zephyr",					   /**< id	       */
 	"Zephyr",						 /**< name	     */
-	VERSION,						  /**< version	      */
+	DISPLAY_VERSION,					  /**< version	      */
 	/**  summary	    */
 	N_("Zephyr Protocol Plugin"),
 	/**  description    */
--- a/libpurple/prpl.h	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/prpl.h	Mon Oct 29 04:41:19 2007 +0000
@@ -339,6 +339,15 @@
 
 	void (*remove_group)(PurpleConnection *gc, PurpleGroup *group);
 
+	/** Gets the real name of a participant in a chat.  For example, on
+	 *  XMPP this turns a chat room nick <tt>foo</tt> into
+	 *  <tt>room@server/foo</tt>
+	 *  @param gc  the connection on which the room is.
+	 *  @param id  the ID of the chat room.
+	 *  @param who the nickname of the chat participant.
+	 *  @return    the real name of the participant.  This string must be
+	 *             freed by the caller.
+	 */
 	char *(*get_cb_real_name)(PurpleConnection *gc, int id, const char *who);
 
 	void (*set_chat_topic)(PurpleConnection *gc, int id, const char *topic);
@@ -354,6 +363,11 @@
 	gboolean (*can_receive_file)(PurpleConnection *, const char *who);
 	void (*send_file)(PurpleConnection *, const char *who, const char *filename);
 	PurpleXfer *(*new_xfer)(PurpleConnection *, const char *who);
+
+	/** Checks whether offline messages to @a buddy are supported.
+	 *  @return @c TRUE if @a buddy can be sent messages while they are
+	 *          offline, or @c FALSE if not.
+	 */
 	gboolean (*offline_message)(const PurpleBuddy *buddy);
 
 	PurpleWhiteboardPrplOps *whiteboard_prpl_ops;
--- a/libpurple/util.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/util.c	Mon Oct 29 04:41:19 2007 +0000
@@ -1642,7 +1642,7 @@
 					pt->src_tag = "font";
 					pt->dest_tag = "span";
 					tags = g_list_prepend(tags, pt);
-					if(style->len)
+					if(style->len && xhtml)
 						g_string_append_printf(xhtml, "<span style='%s'>", g_strstrip(style->str));
 					else
 						pt->ignore = TRUE;
@@ -3067,9 +3067,6 @@
 		ret[j++] = text[i];
 	}
 
-	purple_debug_misc("purple_str_add_cr", "got: %s, leaving with %s\n",
-					text, ret);
-
 	return ret;
 }
 
--- a/libpurple/win32/global.mak	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/win32/global.mak	Mon Oct 29 04:41:19 2007 +0000
@@ -71,8 +71,7 @@
 )
 PURPLE_VERSION := $(PIDGIN_VERSION)
 
-DEFINES += 	-DVERSION=\"$(PIDGIN_VERSION)\" \
-		-DHAVE_CONFIG_H
+DEFINES += -DHAVE_CONFIG_H
 
 # Use -g flag when building debug version of Pidgin (including plugins).
 # Use -fnative-struct instead of -mms-bitfields when using mingw 1.1
--- a/libpurple/win32/targets.mak	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/win32/targets.mak	Mon Oct 29 04:41:19 2007 +0000
@@ -5,15 +5,15 @@
 # files for better handling of cross directory dependencies
 #
 
-$(PIDGIN_CONFIG_H): $(PIDGIN_TREE_TOP)/config.h.mingw
-	cp $(PIDGIN_TREE_TOP)/config.h.mingw $(PIDGIN_CONFIG_H)
+$(PIDGIN_CONFIG_H): $(PIDGIN_CONFIG_H).mingw $(PIDGIN_TREE_TOP)/configure.ac
+	sed -e 's/@VERSION@/$(PIDGIN_VERSION)/' $@.mingw > $@
 
 $(PURPLE_VERSION_H): $(PURPLE_VERSION_H).in $(PIDGIN_TREE_TOP)/configure.ac
-	cp $(PURPLE_VERSION_H).in $(PURPLE_VERSION_H)
+	cp $@.in $@
 	awk 'BEGIN {FS="[\\(\\)\\[\\]]"} \
-	  /^m4_define..purple_major_version/ {system("sed -i -e s/@PURPLE_MAJOR_VERSION@/"$$5"/ $(PURPLE_VERSION_H)");} \
-	  /^m4_define..purple_minor_version/ {system("sed -i -e s/@PURPLE_MINOR_VERSION@/"$$5"/ $(PURPLE_VERSION_H)");} \
-	  /^m4_define..purple_micro_version/ {system("sed -i -e s/@PURPLE_MICRO_VERSION@/"$$5"/ $(PURPLE_VERSION_H)"); exit}' $(PIDGIN_TREE_TOP)/configure.ac
+	  /^m4_define..purple_major_version/ {system("sed -i -e s/@PURPLE_MAJOR_VERSION@/"$$5"/ $@");} \
+	  /^m4_define..purple_minor_version/ {system("sed -i -e s/@PURPLE_MINOR_VERSION@/"$$5"/ $@");} \
+	  /^m4_define..purple_micro_version/ {system("sed -i -e s/@PURPLE_MICRO_VERSION@/"$$5"/ $@"); exit}' $(PIDGIN_TREE_TOP)/configure.ac
 
 $(PURPLE_DLL) $(PURPLE_DLL).a: $(PURPLE_VERSION_H)
 	$(MAKE) -C $(PURPLE_TOP) -f $(MINGW_MAKEFILE) libpurple.dll
@@ -30,9 +30,6 @@
 $(PIDGIN_EXE):
 	$(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE) pidgin.exe
 
-$(PIDGIN_PORTABLE_EXE):
-	$(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE) pidgin-portable.exe
-
 # Installation Directories
 $(PIDGIN_INSTALL_DIR):
 	mkdir -p $(PIDGIN_INSTALL_DIR)
--- a/libpurple/win32/win32dep.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/libpurple/win32/win32dep.c	Mon Oct 29 04:41:19 2007 +0000
@@ -525,7 +525,7 @@
 	char *newenv;
 
 	purple_debug_info("wpurple", "wpurple_init start\n");
-	purple_debug_info("wpurple", "libpurple version: " VERSION "\n");
+	purple_debug_info("wpurple", "libpurple version: " DISPLAY_VERSION "\n");
 
 
 	purple_debug_info("wpurple", "Glib:%u.%u.%u\n",
--- a/pidgin/gtkblist.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/gtkblist.c	Mon Oct 29 04:41:19 2007 +0000
@@ -111,7 +111,7 @@
 static GtkWidget *accountmenu = NULL;
 
 static guint visibility_manager_count = 0;
-static gboolean gtk_blist_obscured = FALSE;
+static GdkVisibilityState gtk_blist_visibility = GDK_VISIBILITY_UNOBSCURED;
 static gboolean editing_blist = FALSE;
 
 static GList *pidgin_blist_sort_methods = NULL;
@@ -174,11 +174,14 @@
  ***************************************************/
 static gboolean gtk_blist_visibility_cb(GtkWidget *w, GdkEventVisibility *event, gpointer data)
 {
-	if (event->state == GDK_VISIBILITY_FULLY_OBSCURED)
-		gtk_blist_obscured = TRUE;
-	else if (gtk_blist_obscured) {
-			gtk_blist_obscured = FALSE;
-			pidgin_blist_refresh_timer(purple_get_blist());
+	GdkVisibilityState old_state = gtk_blist_visibility;
+	gtk_blist_visibility = event->state;
+
+	if (gtk_blist_visibility == GDK_VISIBILITY_FULLY_OBSCURED &&
+		old_state != GDK_VISIBILITY_FULLY_OBSCURED) {
+
+		/* no longer fully obscured */
+		pidgin_blist_refresh_timer(purple_get_blist());
 	}
 
 	/* continue to handle event normally */
@@ -3765,7 +3768,8 @@
 {
 	PurpleBlistNode *gnode, *cnode;
 
-	if (gtk_blist_obscured || !GTK_WIDGET_VISIBLE(gtkblist->window))
+	if (gtk_blist_visibility == GDK_VISIBILITY_FULLY_OBSCURED
+			|| !GTK_WIDGET_VISIBLE(gtkblist->window)) 
 		return TRUE;
 
 	for(gnode = list->root; gnode; gnode = gnode->next) {
@@ -6328,7 +6332,8 @@
 {
 	if (gtkblist && gtkblist->window) {
 		if (GTK_WIDGET_VISIBLE(gtkblist->window)) {
-			purple_blist_set_visible(PIDGIN_WINDOW_ICONIFIED(gtkblist->window) || gtk_blist_obscured);
+			purple_blist_set_visible(PIDGIN_WINDOW_ICONIFIED(gtkblist->window) ||
+					gtk_blist_visibility != GDK_VISIBILITY_UNOBSCURED);
 		} else {
 			purple_blist_set_visible(TRUE);
 		}
--- a/pidgin/gtkconv.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/gtkconv.c	Mon Oct 29 04:41:19 2007 +0000
@@ -359,7 +359,7 @@
 	PurpleCmdStatus status;
 
 	if (!g_ascii_strcasecmp(args[0], "version")) {
-		tmp = g_strdup_printf("me is using %s v%s.", "Pidgin", VERSION);
+		tmp = g_strdup_printf("me is using %s v%s.", "Pidgin", DISPLAY_VERSION);
 		markup = g_markup_escape_text(tmp, -1);
 
 		status = purple_cmd_do_command(conv, tmp, markup, error);
--- a/pidgin/gtkdialogs.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/gtkdialogs.c	Mon Oct 29 04:41:19 2007 +0000
@@ -315,7 +315,7 @@
 	context = gtk_widget_get_pango_context(widget);
 	layout = pango_layout_new(context);
 
-	markup = g_strdup_printf("<span foreground=\"#000000\">%s</span>", VERSION);
+	markup = g_strdup_printf("<span foreground=\"#000000\">%s</span>", DISPLAY_VERSION);
 	pango_layout_set_font_description(layout, style->font_desc);
 	pango_layout_set_markup(layout, markup, strlen(markup));
 	g_free(markup);
@@ -382,7 +382,7 @@
 	gdk_pixbuf_unref(pixbuf);
 	/* Insert the logo */
 	obj = gtk_widget_get_accessible(logo);
-	tmp = g_strconcat(PIDGIN_NAME, " " VERSION, NULL);
+	tmp = g_strconcat(PIDGIN_NAME, " " DISPLAY_VERSION, NULL);
 	atk_object_set_description(obj, tmp);
 	g_free(tmp);
 	gtk_box_pack_start(GTK_BOX(vbox), logo, FALSE, FALSE, 0);
@@ -394,7 +394,7 @@
 	str = g_string_sized_new(4096);
 
 	g_string_append_printf(str,
-		"<CENTER><FONT SIZE=\"4\"><B>%s %s</B></FONT></CENTER><BR><BR>", PIDGIN_NAME, VERSION);
+		"<CENTER><FONT SIZE=\"4\"><B>%s %s</B></FONT></CENTER><BR><BR>", PIDGIN_NAME, DISPLAY_VERSION);
 
 	g_string_append_printf(str,
 		_("%s is a graphical modular messaging client based on "
--- a/pidgin/gtkmain.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/gtkmain.c	Mon Oct 29 04:41:19 2007 +0000
@@ -383,7 +383,7 @@
 	char *text;
 
 	if (terse) {
-		text = g_strdup_printf(_("%s %s. Try `%s -h' for more information.\n"), PIDGIN_NAME, VERSION, name);
+		text = g_strdup_printf(_("%s %s. Try `%s -h' for more information.\n"), PIDGIN_NAME, DISPLAY_VERSION, name);
 	} else {
 		text = g_strdup_printf(_("%s %s\n"
 		       "Usage: %s [OPTION]...\n\n"
@@ -397,7 +397,7 @@
 #ifndef WIN32
 		       "  --display=DISPLAY   X display to use\n"
 #endif
-		       "  -v, --version       display the current version and exit\n"), PIDGIN_NAME, VERSION, name);
+		       "  -v, --version       display the current version and exit\n"), PIDGIN_NAME, DISPLAY_VERSION, name);
 	}
 
 	purple_print_utf8_to_console(stdout, text);
@@ -527,7 +527,7 @@
 			"LSchiere (via AIM).  Contact information for Sean and Luke \n"
 			"on other protocols is at\n"
 			"%swiki/DeveloperPages\n"),
-			PIDGIN_NAME, VERSION, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE
+			PIDGIN_NAME, DISPLAY_VERSION, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE
 		);
 
 		/* we have to convert the message (UTF-8 to console
@@ -654,7 +654,7 @@
 	}
 	/* show version message */
 	if (opt_version) {
-		printf("%s %s\n", PIDGIN_NAME, VERSION);
+		printf("%s %s\n", PIDGIN_NAME, DISPLAY_VERSION);
 #ifdef HAVE_SIGNAL_H
 		g_free(segfault_message);
 #endif
@@ -691,7 +691,7 @@
 	if (!gui_check) {
 		char *display = gdk_get_display();
 
-		printf("%s %s\n", PIDGIN_NAME, VERSION);
+		printf("%s %s\n", PIDGIN_NAME, DISPLAY_VERSION);
 
 		g_warning("cannot open display: %s", display ? display : "unset");
 		g_free(display);
--- a/pidgin/gtkprefs.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/gtkprefs.c	Mon Oct 29 04:41:19 2007 +0000
@@ -1113,12 +1113,25 @@
 		purple_prefs_set_string("/purple/proxy/password", gtk_entry_get_text(entry));
 }
 
+static void
+proxy_button_clicked_cb(GtkWidget *button, gpointer null)
+{
+	GError *err = NULL;
+
+	if (g_spawn_command_line_async ("gnome-network-preferences", &err))
+		return;
+
+	purple_notify_error(NULL, NULL, _("Cannot start proxy configuration program."), err->message);
+	g_error_free(err);
+}
+
 static GtkWidget *
 network_page()
 {
 	GtkWidget *ret;
 	GtkWidget *vbox, *hbox, *entry;
 	GtkWidget *table, *label, *auto_ip_checkbox, *ports_checkbox, *spin_button;
+	GtkWidget *warning, *proxy_button;
 	GtkSizeGroup *sg;
 	PurpleProxyInfo *proxy_info = NULL;
 
@@ -1201,9 +1214,33 @@
 	g_signal_connect(G_OBJECT(ports_checkbox), "clicked",
 					 G_CALLBACK(pidgin_toggle_sensitive), spin_button);
 
-	if (!purple_running_gnome()) {
-		vbox = pidgin_make_frame(ret, _("Proxy Server"));
-		prefs_proxy_frame = gtk_vbox_new(FALSE, 0);
+	vbox = pidgin_make_frame(ret, _("Proxy Server"));
+	prefs_proxy_frame = gtk_vbox_new(FALSE, 0);
+
+	if (purple_running_gnome()) {
+		warning = hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
+		gtk_container_add(GTK_CONTAINER(vbox), hbox);
+
+		label = gtk_label_new(NULL);
+		gtk_label_set_markup(GTK_LABEL(label),
+		                     _("<b>Proxy configuration program was not found.</b>"));
+		gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
+
+		hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
+		gtk_container_add(GTK_CONTAINER(vbox), hbox);
+		label = gtk_label_new(_("Proxy preferences are configured in\n"
+		                        "GNOME Control Center: Desktop Preferences"));
+		gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
+		gtk_widget_show(label);
+
+		hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
+		gtk_container_add(GTK_CONTAINER(vbox), hbox);
+		proxy_button = gtk_button_new_with_mnemonic(_("Configure _Proxy"));
+		g_signal_connect(G_OBJECT(proxy_button), "clicked",
+		                 G_CALLBACK(proxy_button_clicked_cb), NULL);
+		gtk_box_pack_start(GTK_BOX(hbox), proxy_button, FALSE, FALSE, 0);
+		gtk_widget_show(proxy_button);
+	} else {
 		pidgin_prefs_dropdown(vbox, _("Proxy _type:"), PURPLE_PREF_STRING,
 					"/purple/proxy/type",
 					_("No proxy"), "none",
@@ -1303,8 +1340,21 @@
 	/* Only hide table if not running gnome otherwise we hide the IP address table! */
 	if (!purple_running_gnome() && (proxy_info == NULL ||
 	    purple_proxy_info_get_type(proxy_info) == PURPLE_PROXY_NONE ||
-	    purple_proxy_info_get_type(proxy_info) == PURPLE_PROXY_USE_ENVVAR))
+	    purple_proxy_info_get_type(proxy_info) == PURPLE_PROXY_USE_ENVVAR)) {
 		gtk_widget_hide(table);
+	} else {
+		gchar *path;
+		path = g_find_program_in_path("gnome-network-preferences");
+		if (path != NULL) {
+			gtk_widget_set_sensitive(proxy_button, TRUE);
+			gtk_widget_hide(warning);
+			g_free(path);
+		} else {
+			gtk_widget_set_sensitive(proxy_button, FALSE);
+			gtk_widget_show(warning);
+		}
+	}
+
 	return ret;
 }
 
--- a/pidgin/gtkutils.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/gtkutils.c	Mon Oct 29 04:41:19 2007 +0000
@@ -2858,7 +2858,7 @@
 	gtk_window_set_urgency_hint(window, urgent);
 #elif defined _WIN32
 	winpidgin_window_flash(window, urgent);
-#else
+#elif defined GDK_WINDOWING_X11
 	GdkWindow *gdkwin;
 	XWMHints *hints;
 
@@ -2880,6 +2880,8 @@
 	XSetWMHints(GDK_WINDOW_XDISPLAY(gdkwin),
 	            GDK_WINDOW_XWINDOW(gdkwin), hints);
 	XFree(hints);
+#else
+	/* do something else? */
 #endif
 }
 
--- a/pidgin/plugins/cap/cap.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/cap/cap.c	Mon Oct 29 04:41:19 2007 +0000
@@ -934,7 +934,7 @@
 	PURPLE_PRIORITY_DEFAULT,							/**< priority		*/
 	CAP_PLUGIN_ID,									/**< id			*/
 	N_("Contact Availability Prediction"),				/**< name		*/
-	VERSION,										/**< version		*/
+	DISPLAY_VERSION,									/**< version		*/
 	N_("Contact Availability Prediction plugin."),	/**  summary		*/
 	N_("The contact availability plugin (cap) is used to display statistical information about buddies in a users contact list."),
 	/**  description	*/
--- a/pidgin/plugins/contact_priority.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/contact_priority.c	Mon Oct 29 04:41:19 2007 +0000
@@ -185,7 +185,7 @@
 
 	CONTACT_PRIORITY_PLUGIN_ID,                       /**< id             */
 	N_("Contact Priority"),                           /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
                                                     /**< summary        */
 	N_("Allows for controlling the values associated with different buddy states."),
                                                     /**< description    */
--- a/pidgin/plugins/convcolors.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/convcolors.c	Mon Oct 29 04:41:19 2007 +0000
@@ -340,7 +340,7 @@
 
 	PLUGIN_ID,                    /* plugin id          */
 	PLUGIN_NAME,                  /* name               */
-	VERSION,                      /* version            */
+	DISPLAY_VERSION,              /* version            */
 	PLUGIN_SUMMARY,               /* summary            */
 	PLUGIN_DESCRIPTION,           /* description        */
 	PLUGIN_AUTHOR,                /* author             */
--- a/pidgin/plugins/crazychat/cc_pidgin_plugin.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/crazychat/cc_pidgin_plugin.c	Mon Oct 29 04:41:19 2007 +0000
@@ -144,7 +144,7 @@
 
 	CRAZYCHAT_PLUGIN_ID,				  /**< id             */
 	N_("Crazychat"),				  /**< name           */
-	VERSION,					  /**< version        */
+	DISPLAY_VERSION,				  /**< version        */
 							  /**  summary        */
 	N_("Plugin to establish a Crazychat session."),
 							  /**  description    */
--- a/pidgin/plugins/extplacement.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/extplacement.c	Mon Oct 29 04:41:19 2007 +0000
@@ -144,7 +144,7 @@
 	PURPLE_PRIORITY_DEFAULT,						/**< priority		*/
 	"gtk-extplacement",								/**< id				*/
 	N_("ExtPlacement"),								/**< name			*/
-	VERSION,										/**< version		*/
+	DISPLAY_VERSION,									/**< version		*/
 	N_("Extra conversation placement options."),	/**< summary		*/
 													/**  description	*/
 	N_("Restrict the number of conversations per windows,"
--- a/pidgin/plugins/gestures/gestures.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/gestures/gestures.c	Mon Oct 29 04:41:19 2007 +0000
@@ -293,7 +293,7 @@
 
 	GESTURES_PLUGIN_ID,                               /**< id             */
 	N_("Mouse Gestures"),                             /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Provides support for mouse gestures"),
 	                                                  /**  description    */
--- a/pidgin/plugins/gevolution/gevolution.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/gevolution/gevolution.c	Mon Oct 29 04:41:19 2007 +0000
@@ -525,7 +525,7 @@
 
 	GEVOLUTION_PLUGIN_ID,                             /**< id             */
 	N_("Evolution Integration"),                      /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Provides integration with Evolution."),
 	                                                  /**  description    */
--- a/pidgin/plugins/gtk-signals-test.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/gtk-signals-test.c	Mon Oct 29 04:41:19 2007 +0000
@@ -158,7 +158,7 @@
 
 	GTK_SIGNAL_TEST_PLUGIN_ID,                        /**< id             */
 	N_("GTK Signals Test"),                             /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Test to see that all ui signals are working properly."),
 	                                                  /**  description    */
--- a/pidgin/plugins/gtkbuddynote.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/gtkbuddynote.c	Mon Oct 29 04:41:19 2007 +0000
@@ -72,7 +72,7 @@
 	PURPLE_PRIORITY_DEFAULT,                        /**< priority */
 	"gtkbuddynote",                                 /**< id */
 	N_("Buddy Notes"),                              /**< name */
-	VERSION,                                        /**< version */
+	DISPLAY_VERSION,                                /**< version */
 	N_("Store notes on particular buddies."),       /**< summary */
 	N_("Adds the option to store notes for buddies "
 	   "on your buddy list."),                      /**< description */
--- a/pidgin/plugins/history.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/history.c	Mon Oct 29 04:41:19 2007 +0000
@@ -193,7 +193,7 @@
 	PURPLE_PRIORITY_DEFAULT,
 	HISTORY_PLUGIN_ID,
 	N_("History"),
-	VERSION,
+	DISPLAY_VERSION,
 	N_("Shows recently logged conversations in new conversations."),
 	N_("When a new conversation is opened this plugin will insert "
 	   "the last conversation into the current conversation."),
--- a/pidgin/plugins/iconaway.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/iconaway.c	Mon Oct 29 04:41:19 2007 +0000
@@ -80,7 +80,7 @@
 
 	ICONAWAY_PLUGIN_ID,                               /**< id             */
 	N_("Iconify on Away"),                            /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Iconifies the buddy list and your conversations when you go away."),
 	                                                  /**  description    */
--- a/pidgin/plugins/mailchk.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/mailchk.c	Mon Oct 29 04:41:19 2007 +0000
@@ -158,7 +158,7 @@
 	PURPLE_PRIORITY_DEFAULT,
 	MAILCHK_PLUGIN_ID,
 	N_("Mail Checker"),
-	VERSION,
+	DISPLAY_VERSION,
 	N_("Checks for new local mail."),
 	N_("Adds a small box to the buddy list that"
 	   " shows if you have new mail."),
--- a/pidgin/plugins/markerline.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/markerline.c	Mon Oct 29 04:41:19 2007 +0000
@@ -281,7 +281,7 @@
 
 	PLUGIN_ID,					/* plugin id			*/
 	PLUGIN_NAME,			/* name					*/
-	VERSION,					/* version				*/
+	DISPLAY_VERSION,				/* version				*/
 	PLUGIN_SUMMARY,			/* summary				*/
 	PLUGIN_DESCRIPTION,		/* description			*/
 	PLUGIN_AUTHOR,				/* author				*/
--- a/pidgin/plugins/musicmessaging/musicmessaging.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/musicmessaging/musicmessaging.c	Mon Oct 29 04:41:19 2007 +0000
@@ -681,7 +681,7 @@
 
     MUSICMESSAGING_PLUGIN_ID,                            /**< id             */
     "Music Messaging",	                                 /**< name           */
-    VERSION,                                             /**< version        */
+    DISPLAY_VERSION,                                     /**< version        */
     N_("Music Messaging Plugin for collaborative composition."),
                                                          /**  summary        */
     N_("The Music Messaging Plugin allows a number of users to simultaneously work on a piece of music by editting a common score in real-time."),
--- a/pidgin/plugins/notify.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/notify.c	Mon Oct 29 04:41:19 2007 +0000
@@ -905,7 +905,7 @@
 
 	NOTIFY_PLUGIN_ID,                                 /**< id             */
 	N_("Message Notification"),                       /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Provides a variety of ways of notifying you of unread messages."),
 	                                                  /**  description    */
--- a/pidgin/plugins/pidgininc.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/pidgininc.c	Mon Oct 29 04:41:19 2007 +0000
@@ -89,7 +89,7 @@
 
 	PURPLEINC_PLUGIN_ID,                                /**< id             */
 	N_("Pidgin Demonstration Plugin"),                  /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("An example plugin that does stuff - see the description."),
 	                                                  /**  description    */
--- a/pidgin/plugins/pidginrc.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/pidginrc.c	Mon Oct 29 04:41:19 2007 +0000
@@ -536,7 +536,7 @@
 	PURPLE_PRIORITY_DEFAULT,
 	"purplerc",
 	N_("Pidgin GTK+ Theme Control"),
-	VERSION,
+	DISPLAY_VERSION,
 	N_("Provides access to commonly used gtkrc settings."),
 	N_("Provides access to commonly used gtkrc settings."),
 	"Etan Reisner <deryni@eden.rutgers.edu>",
--- a/pidgin/plugins/raw.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/raw.c	Mon Oct 29 04:41:19 2007 +0000
@@ -173,7 +173,7 @@
 	PURPLE_PRIORITY_DEFAULT,
 	RAW_PLUGIN_ID,
 	N_("Raw"),
-	VERSION,
+	DISPLAY_VERSION,
 	N_("Lets you send raw input to text-based protocols."),
 	N_("Lets you send raw input to text-based protocols (XMPP, MSN, IRC, "
 	   "TOC). Hit 'Enter' in the entry box to send. Watch the debug window."),
--- a/pidgin/plugins/relnot.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/relnot.c	Mon Oct 29 04:41:19 2007 +0000
@@ -141,7 +141,7 @@
 
 	"gtk-relnot",                                     /**< id             */
 	N_("Release Notification"),                       /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Checks periodically for new releases."),
 	                                                  /**  description    */
--- a/pidgin/plugins/spellchk.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/spellchk.c	Mon Oct 29 04:41:19 2007 +0000
@@ -2368,7 +2368,7 @@
 	PURPLE_PRIORITY_DEFAULT,
 	SPELLCHECK_PLUGIN_ID,
 	N_("Text replacement"),
-	VERSION,
+	DISPLAY_VERSION,
 	N_("Replaces text in outgoing messages according to user-defined rules."),
 	N_("Replaces text in outgoing messages according to user-defined rules."),
 	"Eric Warmenhoven <eric@warmenhoven.org>",
--- a/pidgin/plugins/ticker/ticker.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/ticker/ticker.c	Mon Oct 29 04:41:19 2007 +0000
@@ -354,7 +354,7 @@
 
 	TICKER_PLUGIN_ID,                                 /**< id             */
 	N_("Buddy Ticker"),                               /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("A horizontal scrolling version of the buddy list."),
 	                                                  /**  description    */
--- a/pidgin/plugins/timestamp.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/timestamp.c	Mon Oct 29 04:41:19 2007 +0000
@@ -200,7 +200,7 @@
 
 	TIMESTAMP_PLUGIN_ID,                              /**< id             */
 	N_("Timestamp"),                                  /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Display iChat-style timestamps"),
 	                                                  /**  description    */
--- a/pidgin/plugins/timestamp_format.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/timestamp_format.c	Mon Oct 29 04:41:19 2007 +0000
@@ -149,7 +149,7 @@
 
 	"core-timestamp_format",                          /**< id             */
 	N_("Message Timestamp Formats"),                  /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Customizes the message timestamp formats."),
 	                                                  /**  description    */
--- a/pidgin/plugins/win32/transparency/win2ktrans.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/win32/transparency/win2ktrans.c	Mon Oct 29 04:41:19 2007 +0000
@@ -691,7 +691,7 @@
 	PURPLE_PRIORITY_DEFAULT,		/**< priority       */
 	WINTRANS_PLUGIN_ID,		/**< id             */
 	N_("Transparency"),		/**< name           */
-	VERSION,			/**< version        */
+	DISPLAY_VERSION,		/**< version        */
 					/**  summary        */
 	N_("Variable Transparency for the buddy list and conversations."),
 					/**  description    */
--- a/pidgin/plugins/win32/winprefs/winprefs.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/win32/winprefs/winprefs.c	Mon Oct 29 04:41:19 2007 +0000
@@ -369,7 +369,7 @@
 	PURPLE_PRIORITY_DEFAULT,
 	WINPREFS_PLUGIN_ID,
 	N_("Windows Pidgin Options"),
-	VERSION,
+	DISPLAY_VERSION,
 	N_("Options specific to Pidgin for Windows."),
 	N_("Provides options specific to Pidgin for Windows , such as buddy list docking."),
 	"Herman Bloggs <hermanator12002@yahoo.com>",
--- a/pidgin/plugins/xmppconsole.c	Mon Oct 29 04:41:10 2007 +0000
+++ b/pidgin/plugins/xmppconsole.c	Mon Oct 29 04:41:19 2007 +0000
@@ -858,7 +858,7 @@
 
 	"gtk-xmpp",                                       /**< id             */
 	N_("XMPP Console"),                                  /**< name           */
-	VERSION,                                          /**< version        */
+	DISPLAY_VERSION,                                  /**< version        */
 	                                                  /**  summary        */
 	N_("Send and receive raw XMPP stanzas."),
 	                                                  /**  description    */