changeset 21136:93e674197822

merge of '8efbae676804d160b330226a663aa241a8d6a78e' and 'ede8595c50d5172b15365ffcff7a2b7748269bc7'
author Ka-Hing Cheung <khc@hxbc.us>
date Sun, 04 Nov 2007 18:32:21 +0000
parents f3a995c30205 (current diff) 848e8bb7c975 (diff)
children 8aee77a1b94d
files pidgin/pixmaps/animations/16/Makefile.am pidgin/pixmaps/animations/16/Makefile.mingw pidgin/pixmaps/animations/Makefile.am pidgin/pixmaps/animations/Makefile.mingw pidgin/pixmaps/buddy_icons/Makefile.am pidgin/pixmaps/buddy_icons/Makefile.mingw pidgin/pixmaps/dialogs/16/scalable/Makefile.am pidgin/pixmaps/dialogs/64/scalable/Makefile.am pidgin/pixmaps/dialogs/Makefile.am pidgin/pixmaps/dialogs/Makefile.mingw pidgin/pixmaps/emblems/16/scalable/Makefile.am pidgin/pixmaps/emblems/Makefile.am pidgin/pixmaps/emblems/Makefile.mingw pidgin/pixmaps/emotes/Makefile.am pidgin/pixmaps/emotes/Makefile.mingw pidgin/pixmaps/emotes/default/24/scalable/Makefile.am pidgin/pixmaps/emotes/default/Makefile.am pidgin/pixmaps/icons/16/scalable/Makefile.am pidgin/pixmaps/icons/22/scalable/Makefile.am pidgin/pixmaps/icons/24/scalable/Makefile.am pidgin/pixmaps/icons/32/scalable/Makefile.am pidgin/pixmaps/icons/48/scalable/Makefile.am pidgin/pixmaps/icons/Makefile.am pidgin/pixmaps/icons/Makefile.mingw pidgin/pixmaps/protocols/16/scalable/Makefile.am pidgin/pixmaps/protocols/22/scalable/Makefile.am pidgin/pixmaps/protocols/48/scalable/Makefile.am pidgin/pixmaps/protocols/Makefile.am pidgin/pixmaps/protocols/Makefile.mingw pidgin/pixmaps/status/11/scalable/Makefile.am pidgin/pixmaps/status/16/scalable/Makefile.am pidgin/pixmaps/status/22/scalable/Makefile.am pidgin/pixmaps/status/32/scalable/Makefile.am pidgin/pixmaps/status/Makefile.am pidgin/pixmaps/status/Makefile.mingw pidgin/pixmaps/toolbar/16/scalable/Makefile.am pidgin/pixmaps/toolbar/22/scalable/Makefile.am pidgin/pixmaps/toolbar/Makefile.am pidgin/pixmaps/toolbar/Makefile.mingw pidgin/pixmaps/tray/Makefile.am pidgin/pixmaps/tray/Makefile.mingw
diffstat 107 files changed, 763 insertions(+), 859 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile.mingw	Sat Nov 03 09:20:20 2007 +0000
+++ b/Makefile.mingw	Sun Nov 04 18:32:21 2007 +0000
@@ -42,19 +42,30 @@
 # Any *.dll or *.exe files included in win32-install-dir that we don't compile
 # should be included in this list so they don't get stripped
 EXTERNAL_DLLS = \
+	comerr32.dll \
 	freebl3.dll \
+	gssapi32.dll \
+	k5sprt32.dll \
+	krb5_32.dll \
 	libgtkspell.dll \
 	libmeanwhile-1.dll \
+	libsasl.dll \
 	libxml2.dll \
 	nspr4.dll \
 	nss3.dll \
 	nssckbi.dll \
 	plc4.dll \
 	plds4.dll \
+	saslANONYMOUS.dll \
+	saslCRAMMD5.dll \
+	saslDIGESTMD5.dll \
+	saslGSSAPI.dll \
+	saslLOGIN.dll \
+	saslPLAIN.dll \
 	silc.dll \
 	silcclient.dll \
+	smime3.dll \
 	softokn3.dll \
-	smime3.dll \
 	ssl3.dll
 
 #build an expression for `find` to use to ignore the above files
--- a/configure.ac	Sat Nov 03 09:20:20 2007 +0000
+++ b/configure.ac	Sun Nov 04 18:32:21 2007 +0000
@@ -2178,66 +2178,34 @@
 		   pidgin/pidgin.pc
 		   pidgin/pidgin-uninstalled.pc
 		   pidgin/pixmaps/Makefile
-		   pidgin/pixmaps/animations/Makefile
-		   pidgin/pixmaps/animations/16/Makefile
-		   pidgin/pixmaps/buddy_icons/Makefile
 		   pidgin/pixmaps/buddy_icons/qq/Makefile
-		   pidgin/pixmaps/dialogs/Makefile
 		   pidgin/pixmaps/dialogs/16/Makefile
-		   pidgin/pixmaps/dialogs/16/scalable/Makefile
 		   pidgin/pixmaps/dialogs/64/Makefile
-		   pidgin/pixmaps/dialogs/64/scalable/Makefile
-		   pidgin/pixmaps/emblems/Makefile
 		   pidgin/pixmaps/emblems/16/Makefile
-		   pidgin/pixmaps/emblems/16/scalable/Makefile
-		   pidgin/pixmaps/emotes/Makefile
-		   pidgin/pixmaps/emotes/default/Makefile
 		   pidgin/pixmaps/emotes/default/24/Makefile
-		   pidgin/pixmaps/emotes/default/24/scalable/Makefile
 		   pidgin/pixmaps/emotes/none/Makefile
-		   pidgin/pixmaps/icons/Makefile
 		   pidgin/pixmaps/icons/16/Makefile
-		   pidgin/pixmaps/icons/16/scalable/Makefile
 		   pidgin/pixmaps/icons/22/Makefile
-		   pidgin/pixmaps/icons/22/scalable/Makefile
 		   pidgin/pixmaps/icons/24/Makefile
-		   pidgin/pixmaps/icons/24/scalable/Makefile
 		   pidgin/pixmaps/icons/32/Makefile
-		   pidgin/pixmaps/icons/32/scalable/Makefile
 		   pidgin/pixmaps/icons/48/Makefile
-		   pidgin/pixmaps/icons/48/scalable/Makefile
-		   pidgin/pixmaps/protocols/Makefile
 		   pidgin/pixmaps/protocols/16/Makefile
-		   pidgin/pixmaps/protocols/16/scalable/Makefile
 		   pidgin/pixmaps/protocols/22/Makefile
-		   pidgin/pixmaps/protocols/22/scalable/Makefile
 		   pidgin/pixmaps/protocols/48/Makefile
-		   pidgin/pixmaps/protocols/48/scalable/Makefile
-		   pidgin/pixmaps/status/Makefile
 		   pidgin/pixmaps/status/11/Makefile
-		   pidgin/pixmaps/status/11/scalable/Makefile
 		   pidgin/pixmaps/status/11/rtl/Makefile
 		   pidgin/pixmaps/status/16/Makefile
 		   pidgin/pixmaps/status/16/rtl/Makefile
-		   pidgin/pixmaps/status/16/scalable/Makefile
 		   pidgin/pixmaps/status/22/Makefile
 		   pidgin/pixmaps/status/22/rtl/Makefile
-		   pidgin/pixmaps/status/22/scalable/Makefile
 		   pidgin/pixmaps/status/32/Makefile
 		   pidgin/pixmaps/status/32/rtl/Makefile
-		   pidgin/pixmaps/status/32/scalable/Makefile
 		   pidgin/pixmaps/status/48/Makefile
 		   pidgin/pixmaps/status/48/rtl/Makefile
-		   pidgin/pixmaps/toolbar/Makefile
 		   pidgin/pixmaps/toolbar/16/Makefile
-		   pidgin/pixmaps/toolbar/16/scalable/Makefile
 		   pidgin/pixmaps/toolbar/22/Makefile
-		   pidgin/pixmaps/toolbar/22/scalable/Makefile
-		   pidgin/pixmaps/tray/Makefile
 		   pidgin/pixmaps/tray/16/Makefile
-		   pidgin/pixmaps/tray/16/scalable/Makefile
 		   pidgin/pixmaps/tray/22/Makefile
-		   pidgin/pixmaps/tray/22/scalable/Makefile
 		   pidgin/pixmaps/tray/32/Makefile
 		   pidgin/pixmaps/tray/48/Makefile
 		   pidgin/plugins/Makefile
--- a/libpurple/buddyicon.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/buddyicon.c	Sun Nov 04 18:32:21 2007 +0000
@@ -116,7 +116,7 @@
 		{
 			purple_debug_error("buddyicon",
 			                   "Unable to create directory %s: %s\n",
-			                   dirname, strerror(errno));
+			                   dirname, g_strerror(errno));
 		}
 	}
 
@@ -125,7 +125,7 @@
 		if (!fwrite(purple_imgstore_get_data(img), purple_imgstore_get_size(img), 1, file))
 		{
 			purple_debug_error("buddyicon", "Error writing %s: %s\n",
-			                   path, strerror(errno));
+			                   path, g_strerror(errno));
 		}
 		else
 			purple_debug_info("buddyicon", "Wrote cache file: %s\n", path);
@@ -135,7 +135,7 @@
 	else
 	{
 		purple_debug_error("buddyicon", "Unable to create file %s: %s\n",
-		                   path, strerror(errno));
+		                   path, g_strerror(errno));
 		g_free(path);
 		return;
 	}
@@ -163,7 +163,7 @@
 		if (g_unlink(path))
 		{
 			purple_debug_error("buddyicon", "Failed to delete %s: %s\n",
-			                   path, strerror(errno));
+			                   path, g_strerror(errno));
 		}
 		else
 		{
@@ -951,7 +951,7 @@
 			if (!fwrite(icon_data, icon_len, 1, file))
 			{
 				purple_debug_error("buddyicon", "Error writing %s: %s\n",
-				                   path, strerror(errno));
+				                   path, g_strerror(errno));
 			}
 			else
 				purple_debug_info("buddyicon", "Wrote migrated cache file: %s\n", path);
@@ -961,7 +961,7 @@
 		else
 		{
 			purple_debug_error("buddyicon", "Unable to create file %s: %s\n",
-			                   path, strerror(errno));
+			                   path, g_strerror(errno));
 			g_free(new_filename);
 			g_free(path);
 
@@ -1056,7 +1056,7 @@
 			{
 				purple_debug_error("buddyicon",
 				                   "Unable to create directory %s: %s\n",
-				                   dirname, strerror(errno));
+				                   dirname, g_strerror(errno));
 			}
 		}
 	}
--- a/libpurple/connection.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/connection.c	Sun Nov 04 18:32:21 2007 +0000
@@ -432,7 +432,7 @@
 {
 	g_return_val_if_fail(gc != NULL, NULL);
 
-	return gc->password;
+	return gc->password ? gc->password : gc->account->password;
 }
 
 const char *
--- a/libpurple/core.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/core.c	Sun Nov 04 18:32:21 2007 +0000
@@ -378,7 +378,7 @@
 	if (g_rename(path, new_name))
 	{
 		purple_debug_error("core", "Error renaming %s to %s: %s. Please report this at http://developer.pidgin.im\n",
-		                   path, new_name, strerror(errno));
+		                   path, new_name, g_strerror(errno));
 		g_free(new_name);
 		return FALSE;
 	}
@@ -391,7 +391,7 @@
 	if (symlink(new_name, old_name))
 	{
 		purple_debug_warning("core", "Error symlinking %s to %s: %s. Please report this at http://developer.pidgin.im\n",
-		                     old_name, new_name, strerror(errno));
+		                     old_name, new_name, g_strerror(errno));
 	}
 	g_free(old_name);
 	g_free(new_name);
@@ -447,7 +447,7 @@
 		if (g_mkdir(user_dir, S_IRUSR | S_IWUSR | S_IXUSR) == -1)
 		{
 			purple_debug_error("core", "Error creating directory %s: %s. Please report this at http://developer.pidgin.im\n",
-			                   user_dir, strerror(errno));
+			                   user_dir, g_strerror(errno));
 			g_free(status_file);
 			g_free(old_user_dir);
 			return FALSE;
@@ -459,7 +459,7 @@
 	if (!(fp = g_fopen(status_file, "w")))
 	{
 		purple_debug_error("core", "Error opening file %s for writing: %s. Please report this at http://developer.pidgin.im\n",
-		                   status_file, strerror(errno));
+		                   status_file, g_strerror(errno));
 		g_free(status_file);
 		g_free(old_user_dir);
 		return FALSE;
@@ -517,7 +517,7 @@
 				{
 					char *name_utf8 = g_filename_to_utf8(name, -1, NULL, NULL, NULL);
 					purple_debug_error("core", "Error reading symlink %s: %s. Please report this at http://developer.pidgin.im\n",
-					                   name_utf8, strerror(errno));
+					                   name_utf8, g_strerror(errno));
 					g_free(name_utf8);
 					g_free(name);
 					g_dir_close(dir);
@@ -555,7 +555,7 @@
 				if (symlink(link, logs_dir))
 				{
 					purple_debug_error("core", "Error symlinking %s to %s: %s. Please report this at http://developer.pidgin.im\n",
-					                   logs_dir, link, strerror(errno));
+					                   logs_dir, link, g_strerror(errno));
 					g_free(link);
 					g_free(name);
 					g_free(logs_dir);
@@ -612,7 +612,7 @@
 					if (g_mkdir(new_icons_dir, S_IRUSR | S_IWUSR | S_IXUSR) == -1)
 					{
 						purple_debug_error("core", "Error creating directory %s: %s. Please report this at http://developer.pidgin.im\n",
-						                   new_icons_dir, strerror(errno));
+						                   new_icons_dir, g_strerror(errno));
 						g_free(new_icons_dir);
 						g_dir_close(icons_dir);
 						g_free(name);
@@ -675,7 +675,7 @@
 			if (!(fp = g_fopen(name, "rb")))
 			{
 				purple_debug_error("core", "Error opening file %s for reading: %s. Please report this at http://developer.pidgin.im\n",
-				                   name, strerror(errno));
+				                   name, g_strerror(errno));
 				g_free(name);
 				g_dir_close(dir);
 				g_free(status_file);
@@ -687,7 +687,7 @@
 			if (!(new_file = g_fopen(new_name, "wb")))
 			{
 				purple_debug_error("core", "Error opening file %s for writing: %s. Please report this at http://developer.pidgin.im\n",
-				                   new_name, strerror(errno));
+				                   new_name, g_strerror(errno));
 				fclose(fp);
 				g_free(new_name);
 				g_free(name);
@@ -706,7 +706,7 @@
 				if (size != sizeof(buf) && !feof(fp))
 				{
 					purple_debug_error("core", "Error reading %s: %s. Please report this at http://developer.pidgin.im\n",
-					                   name, strerror(errno));
+					                   name, g_strerror(errno));
 					fclose(new_file);
 					fclose(fp);
 					g_free(new_name);
@@ -720,7 +720,7 @@
 				if (!fwrite(buf, size, 1, new_file) && ferror(new_file) != 0)
 				{
 					purple_debug_error("core", "Error writing %s: %s. Please report this at http://developer.pidgin.im\n",
-					                   new_name, strerror(errno));
+					                   new_name, g_strerror(errno));
 					fclose(new_file);
 					fclose(fp);
 					g_free(new_name);
@@ -735,12 +735,12 @@
 			if (fclose(new_file))
 			{
 				purple_debug_error("core", "Error writing: %s: %s. Please report this at http://developer.pidgin.im\n",
-				                   new_name, strerror(errno));
+				                   new_name, g_strerror(errno));
 			}
 			if (fclose(fp))
 			{
 				purple_debug_warning("core", "Error closing %s: %s\n",
-				                     name, strerror(errno));
+				                     name, g_strerror(errno));
 			}
 			g_free(new_name);
 		}
@@ -754,7 +754,7 @@
 	if (g_unlink(status_file))
 	{
 		purple_debug_error("core", "Error unlinking file %s: %s. Please report this at http://developer.pidgin.im\n",
-		                   status_file, strerror(errno));
+		                   status_file, g_strerror(errno));
 		g_free(status_file);
 		return FALSE;
 	}
--- a/libpurple/desktopitem.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/desktopitem.c	Sun Nov 04 18:32:21 2007 +0000
@@ -1155,7 +1155,7 @@
 
 	dfile = g_fopen(filename, "r");
 	if (!dfile) {
-		printf ("Can't open %s: %s", filename, strerror(errno));
+		printf ("Can't open %s: %s", filename, g_strerror(errno));
 		return NULL;
 	}
 	
--- a/libpurple/dnsquery.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/dnsquery.c	Sun Nov 04 18:32:21 2007 +0000
@@ -346,7 +346,7 @@
 	/* Create pipes for communicating with the child process */
 	if (pipe(child_out) || pipe(child_in)) {
 		purple_debug_error("dns",
-				   "Could not create pipes: %s\n", strerror(errno));
+				   "Could not create pipes: %s\n", g_strerror(errno));
 		return NULL;
 	}
 
@@ -374,7 +374,7 @@
 	if (resolver->dns_pid == -1) {
 		purple_debug_error("dns",
 				   "Could not create child process for DNS: %s\n",
-				   strerror(errno));
+				   g_strerror(errno));
 		purple_dnsquery_resolver_destroy(resolver);
 		return NULL;
 	}
@@ -416,7 +416,7 @@
 		return FALSE;
 	} else if (pid < 0) {
 		purple_debug_warning("dns", "Wait for DNS child %d failed: %s\n",
-				resolver->dns_pid, strerror(errno));
+				resolver->dns_pid, g_strerror(errno));
 		purple_dnsquery_resolver_destroy(resolver);
 		return FALSE;
 	}
@@ -430,7 +430,7 @@
 	rc = write(resolver->fd_in, &dns_params, sizeof(dns_params));
 	if (rc < 0) {
 		purple_debug_error("dns", "Unable to write to DNS child %d: %d\n",
-				resolver->dns_pid, strerror(errno));
+				resolver->dns_pid, g_strerror(errno));
 		purple_dnsquery_resolver_destroy(resolver);
 		return FALSE;
 	}
@@ -571,7 +571,7 @@
 		purple_dnsquery_resolved(query_data, hosts);
 
 	} else if (rc == -1) {
-		g_snprintf(message, sizeof(message), _("Error reading from resolver process:\n%s"), strerror(errno));
+		g_snprintf(message, sizeof(message), _("Error reading from resolver process:\n%s"), g_strerror(errno));
 		purple_dnsquery_failed(query_data, message);
 
 	} else if (rc == 0) {
--- a/libpurple/ft.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/ft.c	Sun Nov 04 18:32:21 2007 +0000
@@ -207,15 +207,15 @@
 	switch(xfer_type) {
 		case PURPLE_XFER_SEND:
 			msg = g_strdup_printf(_("Error reading %s: \n%s.\n"),
-								  utf8, strerror(err));
+								  utf8, g_strerror(err));
 			break;
 		case PURPLE_XFER_RECEIVE:
 			msg = g_strdup_printf(_("Error writing %s: \n%s.\n"),
-								  utf8, strerror(err));
+								  utf8, g_strerror(err));
 			break;
 		default:
 			msg = g_strdup_printf(_("Error accessing %s: \n%s.\n"),
-								  utf8, strerror(err));
+								  utf8, g_strerror(err));
 			break;
 	}
 	g_free(utf8);
--- a/libpurple/log.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/log.c	Sun Nov 04 18:32:21 2007 +0000
@@ -756,7 +756,7 @@
 					if (!fwrite(image_data, image_byte_count, 1, image_file))
 					{
 						purple_debug_error("log", "Error writing %s: %s\n",
-						                   path, strerror(errno));
+						                   path, g_strerror(errno));
 						fclose(image_file);
 
 						/* Attempt to not leave half-written files around. */
@@ -771,7 +771,7 @@
 				else
 				{
 					purple_debug_error("log", "Unable to create file %s: %s\n",
-					                   path, strerror(errno));
+					                   path, g_strerror(errno));
 				}
 			}
 
@@ -1108,7 +1108,7 @@
 		return TRUE;
 	else if (ret == -1)
 	{
-		purple_debug_error("log", "Failed to delete: %s - %s\n", data->path, strerror(errno));
+		purple_debug_error("log", "Failed to delete: %s - %s\n", data->path, g_strerror(errno));
 	}
 	else
 	{
@@ -1143,7 +1143,7 @@
 		g_free(dirname);
 		return TRUE;
 	}
-	purple_debug_info("log", "access(%s) failed: %s\n", dirname, strerror(errno));
+	purple_debug_info("log", "access(%s) failed: %s\n", dirname, g_strerror(errno));
 	g_free(dirname);
 #else
 	/* Unless and until someone writes equivalent win32 code,
@@ -1638,7 +1638,7 @@
 			if (!(index = g_fopen(pathstr, "rb")))
 			{
 				purple_debug_error("log", "Failed to open index file \"%s\" for reading: %s\n",
-				                 pathstr, strerror(errno));
+				                 pathstr, g_strerror(errno));
 
 				/* Fall through so that we'll parse the log file. */
 			}
@@ -1675,7 +1675,7 @@
 
 	if (!(file = g_fopen(purple_stringref_value(pathref), "rb"))) {
 		purple_debug_error("log", "Failed to open log file \"%s\" for reading: %s\n",
-		                   purple_stringref_value(pathref), strerror(errno));
+		                   purple_stringref_value(pathref), g_strerror(errno));
 		purple_stringref_unref(pathref);
 		g_free(pathstr);
 		return NULL;
@@ -1684,7 +1684,7 @@
 	index_tmp = g_strdup_printf("%s.XXXXXX", pathstr);
 	if ((index_fd = g_mkstemp(index_tmp)) == -1) {
 		purple_debug_error("log", "Failed to open index temp file: %s\n",
-		                 strerror(errno));
+		                 g_strerror(errno));
 		g_free(pathstr);
 		g_free(index_tmp);
 		index = NULL;
@@ -1692,7 +1692,7 @@
 		if ((index = fdopen(index_fd, "wb")) == NULL)
 		{
 			purple_debug_error("log", "Failed to fdopen() index temp file: %s\n",
-			                 strerror(errno));
+			                 g_strerror(errno));
 			close(index_fd);
 			if (index_tmp != NULL)
 			{
@@ -1828,7 +1828,7 @@
 		if (g_rename(index_tmp, pathstr))
 		{
 			purple_debug_warning("log", "Failed to rename index temp file \"%s\" to \"%s\": %s\n",
-			                   index_tmp, pathstr, strerror(errno));
+			                   index_tmp, pathstr, g_strerror(errno));
 			g_unlink(index_tmp);
 			g_free(index_tmp);
 		}
--- a/libpurple/nat-pmp.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/nat-pmp.c	Sun Nov 04 18:32:21 2007 +0000
@@ -312,7 +312,7 @@
 	
 	if (sendto(sendfd, &req, sizeof(req), 0, (struct sockaddr *)(gateway), sizeof(struct sockaddr)) < 0)
 	{
-		purple_debug_info("nat-pmp", "There was an error sending the NAT-PMP public IP request! (%s)\n", strerror(errno));
+		purple_debug_info("nat-pmp", "There was an error sending the NAT-PMP public IP request! (%s)\n", g_strerror(errno));
 		g_free(gateway);
 		pmp_info.status = PURPLE_PMP_STATUS_UNABLE_TO_DISCOVER;
 		return NULL;
@@ -320,7 +320,7 @@
 
 	if (setsockopt(sendfd, SOL_SOCKET, SO_RCVTIMEO, &req_timeout, sizeof(req_timeout)) < 0)
 	{
-		purple_debug_info("nat-pmp", "There was an error setting the socket's options! (%s)\n", strerror(errno));
+		purple_debug_info("nat-pmp", "There was an error setting the socket's options! (%s)\n", g_strerror(errno));
 		g_free(gateway);
 		pmp_info.status = PURPLE_PMP_STATUS_UNABLE_TO_DISCOVER;
 		return NULL;
@@ -332,7 +332,7 @@
 	{
 		if (errno != EAGAIN)
 		{
-			purple_debug_info("nat-pmp", "There was an error receiving the response from the NAT-PMP device! (%s)\n", strerror(errno));
+			purple_debug_info("nat-pmp", "There was an error receiving the response from the NAT-PMP device! (%s)\n", g_strerror(errno));
 			g_free(gateway);
 			pmp_info.status = PURPLE_PMP_STATUS_UNABLE_TO_DISCOVER;
 			return NULL;
@@ -432,13 +432,13 @@
 	/* TODO: Non-blocking! */
 	success = (sendto(sendfd, &req, sizeof(req), 0, (struct sockaddr *)(gateway), sizeof(struct sockaddr)) >= 0);
 	if (!success)
-		purple_debug_info("nat-pmp", "There was an error sending the NAT-PMP mapping request! (%s)\n", strerror(errno));
+		purple_debug_info("nat-pmp", "There was an error sending the NAT-PMP mapping request! (%s)\n", g_strerror(errno));
 
 	if (success)
 	{
 		success = (setsockopt(sendfd, SOL_SOCKET, SO_RCVTIMEO, &req_timeout, sizeof(req_timeout)) >= 0);
 		if (!success)
-			purple_debug_info("nat-pmp", "There was an error setting the socket's options! (%s)\n", strerror(errno));
+			purple_debug_info("nat-pmp", "There was an error setting the socket's options! (%s)\n", g_strerror(errno));
 	}
 
 	if (success)
@@ -448,7 +448,7 @@
 		success = ((recvfrom(sendfd, resp, sizeof(PurplePmpMapResponse), 0, NULL, NULL) >= 0) ||
 				   (errno == EAGAIN));
 		if (!success)
-			purple_debug_info("nat-pmp", "There was an error receiving the response from the NAT-PMP device! (%s)\n", strerror(errno));
+			purple_debug_info("nat-pmp", "There was an error receiving the response from the NAT-PMP device! (%s)\n", g_strerror(errno));
 	}
 
 	if (success)
--- a/libpurple/network.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/network.c	Sun Nov 04 18:32:21 2007 +0000
@@ -285,7 +285,7 @@
 #ifndef _WIN32
 		purple_debug_warning("network", "getaddrinfo: %s\n", gai_strerror(errnum));
 		if (errnum == EAI_SYSTEM)
-			purple_debug_warning("network", "getaddrinfo: system error: %s\n", strerror(errno));
+			purple_debug_warning("network", "getaddrinfo: system error: %s\n", g_strerror(errno));
 #else
 		purple_debug_warning("network", "getaddrinfo: Error Code = %d\n", errnum);
 #endif
@@ -302,7 +302,7 @@
 		if (listenfd < 0)
 			continue;
 		if (setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) != 0)
-			purple_debug_warning("network", "setsockopt: %s\n", strerror(errno));
+			purple_debug_warning("network", "setsockopt: %s\n", g_strerror(errno));
 		if (bind(listenfd, next->ai_addr, next->ai_addrlen) == 0)
 			break; /* success */
 		/* XXX - It is unclear to me (datallah) whether we need to be
@@ -318,26 +318,26 @@
 	struct sockaddr_in sockin;
 
 	if ((listenfd = socket(AF_INET, socket_type, 0)) < 0) {
-		purple_debug_warning("network", "socket: %s\n", strerror(errno));
+		purple_debug_warning("network", "socket: %s\n", g_strerror(errno));
 		return NULL;
 	}
 
 	if (setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) != 0)
-		purple_debug_warning("network", "setsockopt: %s\n", strerror(errno));
+		purple_debug_warning("network", "setsockopt: %s\n", g_strerror(errno));
 
 	memset(&sockin, 0, sizeof(struct sockaddr_in));
 	sockin.sin_family = PF_INET;
 	sockin.sin_port = htons(port);
 
 	if (bind(listenfd, (struct sockaddr *)&sockin, sizeof(struct sockaddr_in)) != 0) {
-		purple_debug_warning("network", "bind: %s\n", strerror(errno));
+		purple_debug_warning("network", "bind: %s\n", g_strerror(errno));
 		close(listenfd);
 		return NULL;
 	}
 #endif
 
 	if (socket_type == SOCK_STREAM && listen(listenfd, 4) != 0) {
-		purple_debug_warning("network", "listen: %s\n", strerror(errno));
+		purple_debug_warning("network", "listen: %s\n", g_strerror(errno));
 		close(listenfd);
 		return NULL;
 	}
@@ -426,7 +426,7 @@
 
 	len = sizeof(addr);
 	if (getsockname(fd, (struct sockaddr *) &addr, &len) == -1) {
-		purple_debug_warning("network", "getsockname: %s\n", strerror(errno));
+		purple_debug_warning("network", "getsockname: %s\n", g_strerror(errno));
 		return 0;
 	}
 
--- a/libpurple/plugins/tcl/tcl.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/plugins/tcl/tcl.c	Sun Nov 04 18:32:21 2007 +0000
@@ -198,7 +198,7 @@
 	}
 
 	if (ferror(fp)) {
-		purple_debug(PURPLE_DEBUG_ERROR, "tcl", "error reading %s (%s)\n", plugin->path, strerror(errno));
+		purple_debug(PURPLE_DEBUG_ERROR, "tcl", "error reading %s (%s)\n", plugin->path, g_strerror(errno));
 		g_free(buf);
 		fclose(fp);
 		return FALSE;
--- a/libpurple/protocols/bonjour/Makefile.mingw	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/bonjour/Makefile.mingw	Sun Nov 04 18:32:21 2007 +0000
@@ -29,7 +29,7 @@
 			-I$(GTK_TOP)/include \
 			-I$(GTK_TOP)/include/glib-2.0 \
 			-I$(GTK_TOP)/lib/glib-2.0/include \
-			-I$(BONJOUR_TOP)/include \
+			-I$(BONJOUR_TOP)/Include \
 			-I$(LIBXML2_TOP)/include \
 			-I$(PURPLE_TOP) \
 			-I$(PURPLE_TOP)/win32 \
--- a/libpurple/protocols/bonjour/bonjour.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/bonjour/bonjour.c	Sun Nov 04 18:32:21 2007 +0000
@@ -648,7 +648,7 @@
 	/* TODO: Avoid 'localhost,' if possible */
 	if (gethostname(hostname, 255) != 0) {
 		purple_debug_warning("bonjour", "Error when getting host name: %s.  Using \"localhost.\"\n",
-				strerror(errno));
+				g_strerror(errno));
 		strcpy(hostname, "localhost");
 	}
 	default_hostname = g_strdup(hostname);
--- a/libpurple/protocols/bonjour/jabber.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/bonjour/jabber.c	Sun Nov 04 18:32:21 2007 +0000
@@ -244,7 +244,7 @@
 		return;
 	else if (ret <= 0) {
 		PurpleConversation *conv;
-		const char *error = strerror(errno);
+		const char *error = g_strerror(errno);
 
 		purple_debug_error("bonjour", "Error sending message to buddy %s error: %s\n",
 				   purple_buddy_get_name(pb), error ? error : "(null)");
@@ -287,7 +287,7 @@
 		ret = 0;
 	else if (ret <= 0) {
 		PurpleConversation *conv;
-		const char *error = strerror(errno);
+		const char *error = g_strerror(errno);
 
 		purple_debug_error("bonjour", "Error sending message to buddy %s error: %s\n",
 				   purple_buddy_get_name(pb), error ? error : "(null)");
@@ -337,7 +337,7 @@
 		if (errno != EAGAIN) {
 			BonjourBuddy *bb = pb->proto_data;
 
-			purple_debug_warning("bonjour", "receive error: %s\n", strerror(errno));
+			purple_debug_warning("bonjour", "receive error: %s\n", g_strerror(errno));
 
 			bonjour_jabber_close_conversation(bb->conversation);
 			bb->conversation = NULL;
@@ -427,7 +427,7 @@
 	if (ret == -1 && errno == EAGAIN)
 		return;
 	else if (ret <= 0) {
-		const char *err = strerror(errno);
+		const char *err = g_strerror(errno);
 		PurpleConversation *conv;
 
 		purple_debug_error("bonjour", "Error starting stream with buddy %s at %s:%d error: %s\n",
@@ -482,7 +482,7 @@
 	if (ret == -1 && errno == EAGAIN)
 		ret = 0;
 	else if (ret <= 0) {
-		const char *err = strerror(errno);
+		const char *err = g_strerror(errno);
 
 		purple_debug_error("bonjour", "Error starting stream with buddy %s at %s:%d error: %s\n",
 				   purple_buddy_get_name(pb), bb->ip ? bb->ip : "(null)", bb->port_p2pj, err ? err : "(null)");
@@ -583,7 +583,7 @@
 	/* Open a listening socket for incoming conversations */
 	if ((data->socket = socket(PF_INET, SOCK_STREAM, 0)) < 0)
 	{
-		purple_debug_error("bonjour", "Cannot open socket: %s\n", strerror(errno));
+		purple_debug_error("bonjour", "Cannot open socket: %s\n", g_strerror(errno));
 		purple_connection_error(data->account->gc, _("Cannot open socket"));
 		return -1;
 	}
@@ -591,7 +591,7 @@
 	/* Make the socket reusable */
 	if (setsockopt(data->socket, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) != 0)
 	{
-		purple_debug_error("bonjour", "Error setting socket options: %s\n", strerror(errno));
+		purple_debug_error("bonjour", "Error setting socket options: %s\n", g_strerror(errno));
 		purple_connection_error(data->account->gc, _("Error setting socket options"));
 		return -1;
 	}
@@ -615,7 +615,7 @@
 	/* On no!  We tried 10 ports and could not bind to ANY of them */
 	if (!bind_successful)
 	{
-		purple_debug_error("bonjour", "Cannot bind socket: %s\n", strerror(errno));
+		purple_debug_error("bonjour", "Cannot bind socket: %s\n", g_strerror(errno));
 		purple_connection_error(data->account->gc, _("Could not bind socket to port"));
 		return -1;
 	}
@@ -623,7 +623,7 @@
 	/* Attempt to listen on the bound socket */
 	if (listen(data->socket, 10) != 0)
 	{
-		purple_debug_error("bonjour", "Cannot listen on socket: %s\n", strerror(errno));
+		purple_debug_error("bonjour", "Cannot listen on socket: %s\n", g_strerror(errno));
 		purple_connection_error(data->account->gc, _("Could not listen on socket"));
 		return -1;
 	}
@@ -670,7 +670,7 @@
 	}
 
 	if (!bonjour_jabber_stream_init(pb, source)) {
-		const char *err = strerror(errno);
+		const char *err = g_strerror(errno);
 		PurpleConversation *conv;
 
 		purple_debug_error("bonjour", "Error starting stream with buddy %s at %s:%d error: %s\n",
--- a/libpurple/protocols/irc/dcc_send.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/irc/dcc_send.c	Sun Nov 04 18:32:21 2007 +0000
@@ -251,7 +251,7 @@
 		 * to the nonblocking nature of the listening socket, so we'll
 		 * just try again next time */
 		/* Let's print an error message anyway */
-		purple_debug_warning("irc", "accept: %s\n", strerror(errno));
+		purple_debug_warning("irc", "accept: %s\n", g_strerror(errno));
 		return;
 	}
 
--- a/libpurple/protocols/jabber/Makefile.mingw	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/jabber/Makefile.mingw	Sun Nov 04 18:32:21 2007 +0000
@@ -88,6 +88,21 @@
 INCLUDE_PATHS += -I$(CYRUS_SASL_TOP)/include
 LIB_PATHS += -L$(CYRUS_SASL_TOP)/lib
 LIBS += -llibsasl
+CYRUS_SASL_DLLS = \
+			$(CYRUS_SASL_TOP)/bin/comerr32.dll \
+			$(CYRUS_SASL_TOP)/bin/gssapi32.dll \
+			$(CYRUS_SASL_TOP)/bin/k5sprt32.dll \
+			$(CYRUS_SASL_TOP)/bin/krb5_32.dll \
+			$(CYRUS_SASL_TOP)/bin/libsasl.dll
+
+CYRUS_SASL_PLUGINS = \
+			$(CYRUS_SASL_TOP)/bin/sasl2/saslANONYMOUS.dll \
+			$(CYRUS_SASL_TOP)/bin/sasl2/saslCRAMMD5.dll \
+			$(CYRUS_SASL_TOP)/bin/sasl2/saslDIGESTMD5.dll \
+			$(CYRUS_SASL_TOP)/bin/sasl2/saslGSSAPI.dll \
+			$(CYRUS_SASL_TOP)/bin/sasl2/saslLOGIN.dll \
+			$(CYRUS_SASL_TOP)/bin/sasl2/saslPLAIN.dll
+
 endif
 
 include $(PIDGIN_COMMON_RULES)
@@ -102,6 +117,11 @@
 install: all $(DLL_INSTALL_DIR)
 	cp $(XMPP_TARGET).dll $(DLL_INSTALL_DIR)
 	cp $(TARGET).dll $(PURPLE_INSTALL_DIR)
+ifeq ($(CYRUS_SASL), 1)
+	mkdir -p $(PURPLE_INSTALL_DIR)/sasl2
+	cp $(CYRUS_SASL_DLLS) $(PURPLE_INSTALL_DIR)
+	cp $(CYRUS_SASL_PLUGINS) $(PURPLE_INSTALL_DIR)/sasl2
+endif
 
 $(OBJECTS): $(PURPLE_CONFIG_H)
 
--- a/libpurple/protocols/jabber/buddy.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/jabber/buddy.c	Sun Nov 04 18:32:21 2007 +0000
@@ -2252,6 +2252,16 @@
 	xmlnode *query;
 	JabberIq *iq;
 	char *dir_server = data;
+	const char *type;
+
+	/* if they've cancelled the search, we're
+	 * just going to get an error if we send
+	 * a cancel, so skip it */
+	type = xmlnode_get_attrib(result, "type");
+	if(type && !strcmp(type, "cancel")) {
+		g_free(dir_server);
+		return;
+	}
 
 	iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:search");
 	query = xmlnode_get_child(iq->node, "query");
--- a/libpurple/protocols/jabber/libxmpp.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/jabber/libxmpp.c	Sun Nov 04 18:32:21 2007 +0000
@@ -193,6 +193,9 @@
 init_plugin(PurplePlugin *plugin)
 {
 #ifdef HAVE_CYRUS_SASL
+#ifdef _WIN32
+	gchar *sasldir;
+#endif
 	int ret;
 #endif
 	PurpleAccountUserSplit *split;
@@ -237,6 +240,11 @@
 	
 	/* XXX - If any other plugin wants SASL this won't be good ... */
 #ifdef HAVE_CYRUS_SASL
+#ifdef _WIN32
+	sasldir = g_build_filename(wpurple_install_dir(), "sasl2", NULL);
+	sasl_set_path(SASL_PATH_TYPE_PLUGIN, sasldir);
+	g_free(sasldir);
+#endif
 	if ((ret = sasl_client_init(NULL)) != SASL_OK) {
 		purple_debug_error("xmpp", "Error (%d) initializing SASL.\n", ret);
 	}
--- a/libpurple/protocols/jabber/si.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/jabber/si.c	Sun Nov 04 18:32:21 2007 +0000
@@ -536,7 +536,7 @@
 	if(acceptfd == -1 && (errno == EAGAIN || errno == EWOULDBLOCK))
 		return;
 	else if(acceptfd == -1) {
-		purple_debug_warning("jabber", "accept: %s\n", strerror(errno));
+		purple_debug_warning("jabber", "accept: %s\n", g_strerror(errno));
 		return;
 	}
 
--- a/libpurple/protocols/msn/contact.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/msn/contact.c	Sun Nov 04 18:32:21 2007 +0000
@@ -100,46 +100,56 @@
 void
 msn_callback_state_set_who(MsnCallbackState *state, const gchar *who)
 {
+	gchar *nval;
 	g_return_if_fail(state != NULL);
 
+	nval = g_strdup(who);
 	g_free(state->who);
-	state->who = g_strdup(who);
+	state->who = nval;
 }
 
 void
 msn_callback_state_set_uid(MsnCallbackState *state, const gchar *uid)
 {
+	gchar *nval;
 	g_return_if_fail(state != NULL);
 
+	nval = g_strdup(uid);
 	g_free(state->uid);
-	state->uid = g_strdup(uid);
+	state->uid = nval;
 }
 
 void
 msn_callback_state_set_old_group_name(MsnCallbackState *state, const gchar *old_group_name)
 {
+	gchar *nval;
 	g_return_if_fail(state != NULL);
 
+	nval = g_strdup(old_group_name);
 	g_free(state->old_group_name);
-	state->old_group_name = g_strdup(old_group_name);
+	state->old_group_name = nval;
 }
 
 void
 msn_callback_state_set_new_group_name(MsnCallbackState *state, const gchar *new_group_name)
 {
+	gchar *nval;
 	g_return_if_fail(state != NULL);
 
+	nval = g_strdup(new_group_name);
 	g_free(state->new_group_name);
-	state->new_group_name = g_strdup(new_group_name);
+	state->new_group_name = nval;
 }
 
 void
 msn_callback_state_set_guid(MsnCallbackState *state, const gchar *guid)
 {
+	gchar *nval;
 	g_return_if_fail(state != NULL);
 
+	nval = g_strdup(guid);
 	g_free(state->guid);
-	state->guid = g_strdup(guid);
+	state->guid = nval;
 }
 
 
@@ -236,11 +246,12 @@
 	MsnListId list)
 {
 	char *passport = xmlnode_get_data(xmlnode_get_child(member, node));
-	char *type = xmlnode_get_data(xmlnode_get_child(member, "type"));
+	char *type = xmlnode_get_data(xmlnode_get_child(member, "Type"));
 	char *member_id = xmlnode_get_data(xmlnode_get_child(member, "MembershipId"));
 	MsnUser *user = msn_userlist_find_add_user(session->userlist, passport, NULL);
 
-	purple_debug_info("msncl","%s name: %s, Type: %s\n", node, passport, type);
+	purple_debug_info("msncl","%s name: %s, Type: %s, MembershipID: %s\n",
+		node, passport, type, member_id == NULL ? "(null)" : member_id);
 
 	if (member_id) {
 		user->membership_id[list] = atoi(member_id);
@@ -282,7 +293,7 @@
 				xmlnode *member;
 
 				purple_debug_info("msncl", "MemberRole role: %s, list: %d\n",
-					role, list);
+					role_str, list);
 
 				for (member = msn_soap_xml_get(membership, "Members/Member");
 					 member; member = xmlnode_get_next_twin(member)) {
@@ -1073,6 +1084,7 @@
 				msn_user_unset_op(user, MSN_LIST_PL_OP);
 
 			msn_add_contact_to_list(session->contact, state, state->who, MSN_LIST_RL);
+			return;
 		} else if (state->list_id == MSN_LIST_AL) {
 			purple_privacy_permit_remove(session->account, state->who, TRUE);
 			msn_add_contact_to_list(session->contact, NULL, state->who, MSN_LIST_BL);
@@ -1190,7 +1202,7 @@
 
 	partner_scenario = (list == MSN_LIST_RL) ? MSN_PS_CONTACT_API : MSN_PS_BLOCK_UNBLOCK;
 
-	member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML, passport);
+	member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML, state->who);
 
 	body = g_strdup_printf(MSN_CONTACT_ADD_TO_LIST_TEMPLATE, 
 			       MsnSoapPartnerScenarioText[partner_scenario],
--- a/libpurple/protocols/msn/notification.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/msn/notification.c	Sun Nov 04 18:32:21 2007 +0000
@@ -1411,7 +1411,7 @@
 	{
 		purple_debug_error("msn",
 						 "Error opening temp passport file: %s\n",
-						 strerror(errno));
+						 g_strerror(errno));
 	}
 	else
 	{
@@ -1460,7 +1460,7 @@
 		{
 			purple_debug_error("msn",
 							 "Error closing temp passport file: %s\n",
-							 strerror(errno));
+							 g_strerror(errno));
 
 			g_unlink(session->passport_info.file);
 			g_free(session->passport_info.file);
--- a/libpurple/protocols/msn/servconn.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/msn/servconn.c	Sun Nov 04 18:32:21 2007 +0000
@@ -402,7 +402,7 @@
 	
 			default: purple_debug_error("msn", "servconn read error,"
 						"len: %d, errno: %d, error: %s\n",
-						len, errno, strerror(errno));
+						len, errno, g_strerror(errno));
 				 msn_servconn_got_error(servconn, 
 						 MSN_SERVCONN_ERROR_READ);
 				 return;
--- a/libpurple/protocols/msn/soap.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/msn/soap.c	Sun Nov 04 18:32:21 2007 +0000
@@ -274,7 +274,7 @@
 
 			default : purple_debug_error("MSN SOAP", "Read error!"
 						"read len: %d, error = %s\n",
-						len, strerror(errno));
+						len, g_strerror(errno));
 				  purple_input_remove(soapconn->input_handler);
 				  //soapconn->input_handler = 0;
 				  g_free(soapconn->read_buf);
--- a/libpurple/protocols/msn/soap2.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/msn/soap2.c	Sun Nov 04 18:32:21 2007 +0000
@@ -23,6 +23,8 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include "internal.h"
+
 #include "soap2.h"
 
 #include "session.h"
@@ -159,7 +161,7 @@
 	conn->connected = TRUE;
 
 	if (conn->event_handle == 0)
-		conn->event_handle = g_idle_add(msn_soap_connection_run, conn);
+		conn->event_handle = purple_timeout_add(0, msn_soap_connection_run, conn);
 }
 
 static void
@@ -258,36 +260,46 @@
 msn_soap_read_cb(gpointer data, gint fd, PurpleInputCondition cond)
 {
     MsnSoapConnection *conn = data;
-	int count;
+	int count = 0, cnt;
 	char buf[8192];
 	char *linebreak;
 	char *cursor;
 	gboolean handled = FALSE;
 
-	g_return_if_fail(cond == PURPLE_INPUT_READ);
+	if (conn->message == NULL) {
+		conn->message = msn_soap_message_new(NULL, NULL);
+	}
+
+	while ((cnt = purple_ssl_read(conn->ssl, buf, sizeof(buf))) > 0) {
+		purple_debug_info("soap", "read %d bytes\n", cnt);
+		count += cnt;
+		if (conn->buf == NULL) {
+			conn->buf = g_string_new_len(buf, cnt);
+		} else {
+			g_string_append_len(conn->buf, buf, cnt);
+		}
+	}
 
-	count = purple_ssl_read(conn->ssl, buf, sizeof(buf));
-	purple_debug_info("soap", "read %d bytes\n", count);
-	if (count < 0 && errno == EAGAIN)
-		return;
-	else if (count <= 0) {
-		purple_debug_info("soap", "read: %s\n", strerror(errno));
+	if (cnt < 0) {
+		if (errno != EAGAIN) {
+			purple_debug_info("soap", "read: %s\n", g_strerror(errno));
+			purple_ssl_close(conn->ssl);
+			conn->ssl = NULL;
+			msn_soap_connection_handle_next(conn);
+			return;
+		} else if (count == 0) {
+			return;
+		}
+	}
+
+	if (cnt == 0 && count == 0) {
+		purple_debug_info("soap", "msn_soap_read_cb() called, but no data available?\n");
 		purple_ssl_close(conn->ssl);
 		conn->ssl = NULL;
 		msn_soap_connection_handle_next(conn);
 		return;
 	}
 
-	if (conn->message == NULL) {
-		conn->message = msn_soap_message_new(NULL, NULL);
-	}
-
-	if (conn->buf == NULL) {
-		conn->buf = g_string_new_len(buf, count);
-	} else {
-		g_string_append_len(conn->buf, buf, count);
-	}
-
 	purple_debug_info("soap", "current %s\n", conn->buf->str);
 
 	cursor = conn->buf->str + conn->handled_len;
--- a/libpurple/protocols/myspace/myspace.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/myspace/myspace.c	Sun Nov 04 18:32:21 2007 +0000
@@ -2353,7 +2353,7 @@
 	} else if (n < 0) {
 		purple_debug_error("msim", "msim_input_cb: read error, ret=%d, "
 			"error=%s, source=%d, fd=%d (%X))\n", 
-			n, strerror(errno), source, session->fd, session->fd);
+			n, g_strerror(errno), source, session->fd, session->fd);
 		purple_connection_error(gc, _("Read error"));
 		return;
 	} else if (n == 0) {
--- a/libpurple/protocols/oscar/flap_connection.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/oscar/flap_connection.c	Sun Nov 04 18:32:21 2007 +0000
@@ -468,7 +468,7 @@
  * @param error_message A brief error message that gives more detail
  *        regarding the reason for the disconnecting.  This should
  *        be NULL for everything except OSCAR_DISCONNECT_LOST_CONNECTION,
- *        in which case it should contain the value of strerror(errno),
+ *        in which case it should contain the value of g_strerror(errno),
  *        and OSCAR_DISCONNECT_COULD_NOT_CONNECT, in which case it
  *        should contain the error_message passed back from the call
  *        to purple_proxy_connect().
@@ -812,7 +812,7 @@
 
 				/* Error! */
 				flap_connection_schedule_destroy(conn,
-						OSCAR_DISCONNECT_LOST_CONNECTION, strerror(errno));
+						OSCAR_DISCONNECT_LOST_CONNECTION, g_strerror(errno));
 				break;
 			}
 
@@ -873,7 +873,7 @@
 
 				/* Error! */
 				flap_connection_schedule_destroy(conn,
-						OSCAR_DISCONNECT_LOST_CONNECTION, strerror(errno));
+						OSCAR_DISCONNECT_LOST_CONNECTION, g_strerror(errno));
 				break;
 			}
 
@@ -924,7 +924,7 @@
 		close(conn->fd);
 		conn->fd = -1;
 		flap_connection_schedule_destroy(conn,
-				OSCAR_DISCONNECT_LOST_CONNECTION, strerror(errno));
+				OSCAR_DISCONNECT_LOST_CONNECTION, g_strerror(errno));
 		return;
 	}
 
--- a/libpurple/protocols/oscar/odc.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/oscar/odc.c	Sun Nov 04 18:32:21 2007 +0000
@@ -456,7 +456,7 @@
 			return;
 
 		peer_connection_destroy(conn,
-				OSCAR_DISCONNECT_LOST_CONNECTION, strerror(errno));
+				OSCAR_DISCONNECT_LOST_CONNECTION, g_strerror(errno));
 		return;
 	}
 
--- a/libpurple/protocols/oscar/oft.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/oscar/oft.c	Sun Nov 04 18:32:21 2007 +0000
@@ -212,7 +212,7 @@
 	if (checksum_data->file == NULL)
 	{
 		purple_debug_error("oscar", "Unable to open %s for checksumming: %s\n",
-				purple_xfer_get_local_filename(xfer), strerror(errno));
+				purple_xfer_get_local_filename(xfer), g_strerror(errno));
 		callback(checksum_data);
 		g_free(checksum_data);
 	}
--- a/libpurple/protocols/oscar/peer.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/oscar/peer.c	Sun Nov 04 18:32:21 2007 +0000
@@ -317,7 +317,7 @@
 				return;
 
 			peer_connection_destroy(conn,
-					OSCAR_DISCONNECT_LOST_CONNECTION, strerror(errno));
+					OSCAR_DISCONNECT_LOST_CONNECTION, g_strerror(errno));
 			return;
 		}
 
@@ -367,7 +367,7 @@
 			return;
 
 		peer_connection_destroy(conn,
-				OSCAR_DISCONNECT_LOST_CONNECTION, strerror(errno));
+				OSCAR_DISCONNECT_LOST_CONNECTION, g_strerror(errno));
 		return;
 	}
 
--- a/libpurple/protocols/qq/qq_proxy.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/qq/qq_proxy.c	Sun Nov 04 18:32:21 2007 +0000
@@ -237,7 +237,7 @@
 		close(source);
 		purple_input_remove(phb->inpa);
 
-		purple_debug_error("proxy", "getsockopt SO_ERROR check: %s\n", strerror(error));
+		purple_debug_error("proxy", "getsockopt SO_ERROR check: %s\n", g_strerror(error));
 
 		phb->func(phb->data, -1, _("Unable to connect"));
 		return;
@@ -265,7 +265,7 @@
 
 	if (fd < 0) {
 		purple_debug(PURPLE_DEBUG_ERROR, "QQ Redirect", 
-			"Unable to create socket: %s\n", strerror(errno));
+			"Unable to create socket: %s\n", g_strerror(errno));
 		return -1;
 	}
 
@@ -297,7 +297,7 @@
 			purple_debug(PURPLE_DEBUG_WARNING, "QQ", "Connect in asynchronous mode.\n");
 			phb->inpa = purple_input_add(fd, PURPLE_INPUT_WRITE, no_one_calls, phb);
 		} else {
-			purple_debug(PURPLE_DEBUG_ERROR, "QQ", "Connection failed: %d\n", strerror(errno));
+			purple_debug(PURPLE_DEBUG_ERROR, "QQ", "Connection failed: %d\n", g_strerror(errno));
 			close(fd);
 			return -1;
 		}		/* if errno */
@@ -497,7 +497,7 @@
 		ret = send(qd->fd, data, len, 0);
 	}
 	if (ret == -1)
-		purple_connection_error(qd->gc, strerror(errno));
+		purple_connection_error(qd->gc, g_strerror(errno));
 
 	return ret;
 }
--- a/libpurple/protocols/qq/udp_proxy_s5.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/qq/udp_proxy_s5.c	Sun Nov 04 18:32:21 2007 +0000
@@ -74,7 +74,7 @@
 	memcpy(&sin.sin_port, buf + 8, 2);
 
 	if (connect(phb->udpsock, (struct sockaddr *) &sin, sizeof(struct sockaddr_in)) < 0) {
-		purple_debug(PURPLE_DEBUG_INFO, "s5_canread_again", "connect failed: %s\n", strerror(errno));
+		purple_debug(PURPLE_DEBUG_INFO, "s5_canread_again", "connect failed: %s\n", g_strerror(errno));
 		close(phb->udpsock);
 		close(source);
 		g_free(phb->host);
@@ -120,7 +120,7 @@
 
 	ctllen = sizeof(ctlsin);
 	if (getsockname(source, (struct sockaddr *) &ctlsin, &ctllen) < 0) {
-		purple_debug(PURPLE_DEBUG_INFO, "QQ", "getsockname: %s\n", strerror(errno));
+		purple_debug(PURPLE_DEBUG_INFO, "QQ", "getsockname: %s\n", g_strerror(errno));
 		close(source);
 		g_free(phb->host);
 		g_free(phb);
@@ -300,7 +300,7 @@
 
 	len = sizeof(error);
 	if (getsockopt(source, SOL_SOCKET, SO_ERROR, &error, &len) < 0) {
-		purple_debug(PURPLE_DEBUG_INFO, "getsockopt", "%s\n", strerror(errno));
+		purple_debug(PURPLE_DEBUG_INFO, "getsockopt", "%s\n", g_strerror(errno));
 		close(source);
 		if (phb->account == NULL || purple_account_get_connection(phb->account) != NULL) {
 
@@ -329,7 +329,7 @@
 	}
 
 	if (write(source, buf, i) < i) {
-		purple_debug(PURPLE_DEBUG_INFO, "write", "%s\n", strerror(errno));
+		purple_debug(PURPLE_DEBUG_INFO, "write", "%s\n", g_strerror(errno));
 		purple_debug(PURPLE_DEBUG_ERROR, "socks5 proxy", "Unable to write\n");
 		close(source);
 
--- a/libpurple/protocols/sametime/sametime.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/sametime/sametime.c	Sun Nov 04 18:32:21 2007 +0000
@@ -1702,7 +1702,7 @@
     purple_connection_error(pd->gc, _("Connection reset"));
 
   } else if(ret < 0) {
-    char *msg = strerror(err);
+    char *msg = g_strerror(err);
 
     DEBUG_INFO("error in read callback: %s\n", msg);
 
@@ -2167,7 +2167,7 @@
   } else {
     int err = errno;
     DEBUG_WARN("problem reading from file %s: %s\n",
-	       NSTR(mwFileTransfer_getFileName(ft)), strerror(err));
+	       NSTR(mwFileTransfer_getFileName(ft)), g_strerror(err));
 
     mwFileTransfer_cancel(ft);
   }
@@ -5009,7 +5009,7 @@
   fp = g_fopen(filename, "rb");
   if(! fp) {
     char *msg = g_strdup_printf(_("Error reading file %s: \n%s\n"),
-				filename, strerror(errno));
+				filename, g_strerror(errno));
     purple_xfer_error(purple_xfer_get_type(xfer), acct, xfer->who, msg);
     g_free(msg);
     return;
--- a/libpurple/protocols/silc/util.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/silc/util.c	Sun Nov 04 18:32:21 2007 +0000
@@ -79,7 +79,7 @@
 
 	pw = getpwuid(getuid());
 	if (!pw) {
-		purple_debug_error("silc", "silc: %s\n", strerror(errno));
+		purple_debug_error("silc", "silc: %s\n", g_strerror(errno));
 		return FALSE;
 	}
 
@@ -108,7 +108,7 @@
 				return FALSE;
 			}
 		} else {
-			purple_debug_error("silc", "Couldn't stat '%s' directory, error: %s\n", filename, strerror(errno));
+			purple_debug_error("silc", "Couldn't stat '%s' directory, error: %s\n", filename, g_strerror(errno));
 			return FALSE;
 		}
 	} else {
@@ -140,7 +140,7 @@
 			}
 		} else {
 			purple_debug_error("silc", "Couldn't stat '%s' directory, error: %s\n",
-							 servfilename, strerror(errno));
+							 servfilename, g_strerror(errno));
 			return FALSE;
 		}
 	}
@@ -163,7 +163,7 @@
 			}
 		} else {
 			purple_debug_error("silc", "Couldn't stat '%s' directory, error: %s\n",
-							 clientfilename, strerror(errno));
+							 clientfilename, g_strerror(errno));
 			return FALSE;
 		}
 	}
@@ -186,7 +186,7 @@
 			}
 		} else {
 			purple_debug_error("silc", "Couldn't stat '%s' directory, error: %s\n",
-							 friendsfilename, strerror(errno));
+							 friendsfilename, g_strerror(errno));
 			return FALSE;
 		}
 	}
@@ -218,12 +218,12 @@
 
 			if ((g_stat(file_public_key, &st)) == -1) {
 				purple_debug_error("silc", "Couldn't stat '%s' public key, error: %s\n",
-						   file_public_key, strerror(errno));
+						   file_public_key, g_strerror(errno));
 				return FALSE;
 			}
 		} else {
 			purple_debug_error("silc", "Couldn't stat '%s' public key, error: %s\n",
-					   file_public_key, strerror(errno));
+					   file_public_key, g_strerror(errno));
 			return FALSE;
 		}
 	}
@@ -239,7 +239,7 @@
 	if ((fd = g_open(file_private_key, O_RDONLY, 0)) != -1) {
 		if ((fstat(fd, &st)) == -1) {
 			purple_debug_error("silc", "Couldn't stat '%s' private key, error: %s\n",
-					   file_private_key, strerror(errno));
+					   file_private_key, g_strerror(errno));
 			close(fd);
 			return FALSE;
 		}
@@ -261,7 +261,7 @@
 			if ((fd = g_open(file_private_key, O_RDONLY, 0)) != -1) {
 				if ((fstat(fd, &st)) == -1) {
 					purple_debug_error("silc", "Couldn't stat '%s' private key, error: %s\n",
-							   file_private_key, strerror(errno));
+							   file_private_key, g_strerror(errno));
 					close(fd);
 					return FALSE;
 				}
@@ -270,12 +270,12 @@
 			 * will set the permissions */
 			else if ((g_stat(file_private_key, &st)) == -1) {
 				purple_debug_error("silc", "Couldn't stat '%s' private key, error: %s\n",
-						   file_private_key, strerror(errno));
+						   file_private_key, g_strerror(errno));
 				return FALSE;
 			}
 		} else {
 			purple_debug_error("silc", "Couldn't stat '%s' private key, error: %s\n",
-					   file_private_key, strerror(errno));
+					   file_private_key, g_strerror(errno));
 			return FALSE;
 		}
 	}
--- a/libpurple/protocols/silc10/silc.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/silc10/silc.c	Sun Nov 04 18:32:21 2007 +0000
@@ -331,7 +331,7 @@
 							(char *)purple_account_get_string(account, "private-key", prd),
 				(gc->password == NULL) ? "" : gc->password, &client->pkcs,
 				&client->public_key, &client->private_key)) {
-		g_snprintf(pkd, sizeof(pkd), _("Could not load SILC key pair: %s"), strerror(errno));
+		g_snprintf(pkd, sizeof(pkd), _("Could not load SILC key pair: %s"), g_strerror(errno));
 		purple_connection_error(gc, pkd);
 		return;
 	}
--- a/libpurple/protocols/silc10/util.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/silc10/util.c	Sun Nov 04 18:32:21 2007 +0000
@@ -79,7 +79,7 @@
 
 	pw = getpwuid(getuid());
 	if (!pw) {
-		purple_debug_error("silc", "silc: %s\n", strerror(errno));
+		purple_debug_error("silc", "silc: %s\n", g_strerror(errno));
 		return FALSE;
 	}
 
@@ -108,7 +108,7 @@
 				return FALSE;
 			}
 		} else {
-			purple_debug_error("silc", "Couldn't stat '%s' directory, error: %s\n", filename, strerror(errno));
+			purple_debug_error("silc", "Couldn't stat '%s' directory, error: %s\n", filename, g_strerror(errno));
 			return FALSE;
 		}
 	} else {
@@ -140,7 +140,7 @@
 			}
 		} else {
 			purple_debug_error("silc", "Couldn't stat '%s' directory, error: %s\n",
-							 servfilename, strerror(errno));
+							 servfilename, g_strerror(errno));
 			return FALSE;
 		}
 	}
@@ -163,7 +163,7 @@
 			}
 		} else {
 			purple_debug_error("silc", "Couldn't stat '%s' directory, error: %s\n",
-							 clientfilename, strerror(errno));
+							 clientfilename, g_strerror(errno));
 			return FALSE;
 		}
 	}
@@ -186,7 +186,7 @@
 			}
 		} else {
 			purple_debug_error("silc", "Couldn't stat '%s' directory, error: %s\n",
-							 friendsfilename, strerror(errno));
+							 friendsfilename, g_strerror(errno));
 			return FALSE;
 		}
 	}
@@ -216,12 +216,12 @@
 
 			if ((g_stat(file_public_key, &st)) == -1) {
 				purple_debug_error("silc", "Couldn't stat '%s' public key, error: %s\n",
-					file_public_key, strerror(errno));
+					file_public_key, g_strerror(errno));
 				return FALSE;
 			}
 		} else {
 			purple_debug_error("silc", "Couldn't stat '%s' public key, error: %s\n",
-							 file_public_key, strerror(errno));
+							 file_public_key, g_strerror(errno));
 			return FALSE;
 		}
 	}
@@ -237,7 +237,7 @@
 	if ((fd = g_open(file_private_key, O_RDONLY, 0)) != -1) {
 		if ((fstat(fd, &st)) == -1) {
 			purple_debug_error("silc", "Couldn't stat '%s' private key, error: %s\n",
-							 file_private_key, strerror(errno));
+							 file_private_key, g_strerror(errno));
 			close(fd);
 			return FALSE;
 		}
@@ -257,7 +257,7 @@
 			if ((fd = g_open(file_private_key, O_RDONLY, 0)) != -1) {
 				if ((fstat(fd, &st)) == -1) {
 					purple_debug_error("silc", "Couldn't stat '%s' private key, error: %s\n",
-							 file_private_key, strerror(errno));
+							 file_private_key, g_strerror(errno));
 					close(fd);
 					return FALSE;
 				}
@@ -266,12 +266,12 @@
 			 * will set the permissions */
 			else if ((g_stat(file_private_key, &st)) == -1) {
 				purple_debug_error("silc", "Couldn't stat '%s' private key, error: %s\n",
-					file_private_key, strerror(errno));
+					file_private_key, g_strerror(errno));
 				return FALSE;
 			}
 		} else {
 			purple_debug_error("silc", "Couldn't stat '%s' private key, error: %s\n",
-							 file_private_key, strerror(errno));
+							 file_private_key, g_strerror(errno));
 			return FALSE;
 		}
 	}
--- a/libpurple/protocols/toc/toc.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/toc/toc.c	Sun Nov 04 18:32:21 2007 +0000
@@ -1795,7 +1795,7 @@
 			ft->file = g_fopen(ft->filename, "w");
 			if (!ft->file) {
 				buf = g_strdup_printf(_("Could not open %s for writing!"), ft->filename);
-				purple_notify_error(ft->gc, NULL, buf, strerror(errno));
+				purple_notify_error(ft->gc, NULL, buf, g_strerror(errno));
 				g_free(buf);
 				purple_input_remove(ft->inpa);
 				close(source);
@@ -1812,7 +1812,7 @@
 			if (!ft->file) {
 				buf = g_strdup_printf("Could not open %s/%s for writing!", ft->filename,
 						ft->hdr.name);
-				purple_notify_error(ft->gc, NULL, buf, strerror(errno));
+				purple_notify_error(ft->gc, NULL, buf, g_strerror(errno));
 				g_free(buf);
 				purple_input_remove(ft->inpa);
 				close(source);
--- a/libpurple/protocols/yahoo/yahoo.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/yahoo/yahoo.c	Sun Nov 04 18:32:21 2007 +0000
@@ -2463,7 +2463,7 @@
 			return;
 
 		tmp = g_strdup_printf(_("Lost connection with server:\n%s"),
-				strerror(errno));
+				g_strerror(errno));
 		purple_connection_error(gc, tmp);
 		g_free(tmp);
 		return;
@@ -2630,7 +2630,7 @@
 			return;
 
 		tmp = g_strdup_printf(_("Lost connection with server:\n%s"),
-				strerror(errno));
+				g_strerror(errno));
 		purple_connection_error(gc, tmp);
 		g_free(tmp);
 		return;
@@ -2701,7 +2701,7 @@
 			purple_input_remove(gc->inpa);
 		gc->inpa = 0;
 		tmp = g_strdup_printf(_("Lost connection with %s:\n%s"),
-				"login.yahoo.com:80", strerror(errno));
+				"login.yahoo.com:80", g_strerror(errno));
 		purple_connection_error(gc, tmp);
 		g_free(tmp);
 		return;
--- a/libpurple/protocols/yahoo/ycht.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/protocols/yahoo/ycht.c	Sun Nov 04 18:32:21 2007 +0000
@@ -473,7 +473,7 @@
 			return;
 
 		tmp = g_strdup_printf(_("Lost connection with server\n%s"),
-				strerror(errno));
+				g_strerror(errno));
 		ycht_connection_error(ycht, tmp);
 		g_free(tmp);
 		return;
--- a/libpurple/proxy.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/proxy.c	Sun Nov 04 18:32:21 2007 +0000
@@ -429,9 +429,9 @@
 		if (ret != 0)
 			error = errno;
 		purple_debug_info("proxy", "Error connecting to %s:%d (%s).\n",
-						connect_data->host, connect_data->port, strerror(error));
+						connect_data->host, connect_data->port, g_strerror(error));
 
-		purple_proxy_connect_data_disconnect(connect_data, strerror(error));
+		purple_proxy_connect_data_disconnect(connect_data, g_strerror(error));
 		return;
 	}
 
@@ -458,7 +458,7 @@
 	if (connect_data->fd < 0)
 	{
 		purple_proxy_connect_data_disconnect_formatted(connect_data,
-				_("Unable to create socket:\n%s"), strerror(errno));
+				_("Unable to create socket:\n%s"), g_strerror(errno));
 		return;
 	}
 
@@ -478,7 +478,7 @@
 		}
 		else
 		{
-			purple_proxy_connect_data_disconnect(connect_data, strerror(errno));
+			purple_proxy_connect_data_disconnect(connect_data, g_strerror(errno));
 		}
 	}
 	else
@@ -496,7 +496,7 @@
 		{
 			if (ret != 0)
 				error = errno;
-			purple_proxy_connect_data_disconnect(connect_data, strerror(error));
+			purple_proxy_connect_data_disconnect(connect_data, g_strerror(error));
 			return;
 		}
 
@@ -534,7 +534,7 @@
 			return;
 
 		/* Error! */
-		purple_proxy_connect_data_disconnect(connect_data, strerror(errno));
+		purple_proxy_connect_data_disconnect(connect_data, g_strerror(errno));
 		return;
 	}
 	if (ret < request_len) {
@@ -593,7 +593,7 @@
 
 		/* Error! */
 		purple_proxy_connect_data_disconnect_formatted(connect_data,
-				_("Lost connection with server:\n%s"), strerror(errno));
+				_("Lost connection with server:\n%s"), g_strerror(errno));
 		return;
 	}
 
@@ -832,7 +832,7 @@
 	{
 		if (ret != 0)
 			error = errno;
-		purple_proxy_connect_data_disconnect(connect_data, strerror(error));
+		purple_proxy_connect_data_disconnect(connect_data, g_strerror(error));
 		return;
 	}
 
@@ -899,7 +899,7 @@
 	if (connect_data->fd < 0)
 	{
 		purple_proxy_connect_data_disconnect_formatted(connect_data,
-				_("Unable to create socket:\n%s"), strerror(errno));
+				_("Unable to create socket:\n%s"), g_strerror(errno));
 		return;
 	}
 
@@ -937,7 +937,7 @@
 		}
 		else
 		{
-			purple_proxy_connect_data_disconnect(connect_data, strerror(errno));
+			purple_proxy_connect_data_disconnect(connect_data, g_strerror(errno));
 		}
 	}
 	else
@@ -978,7 +978,7 @@
 		}
 	}
 
-	purple_proxy_connect_data_disconnect(connect_data, strerror(errno));
+	purple_proxy_connect_data_disconnect(connect_data, g_strerror(errno));
 }
 
 static void
@@ -1003,7 +1003,7 @@
 	{
 		if (ret != 0)
 			error = errno;
-		purple_proxy_connect_data_disconnect(connect_data, strerror(error));
+		purple_proxy_connect_data_disconnect(connect_data, g_strerror(error));
 		return;
 	}
 
@@ -1058,7 +1058,7 @@
 	if (connect_data->fd < 0)
 	{
 		purple_proxy_connect_data_disconnect_formatted(connect_data,
-				_("Unable to create socket:\n%s"), strerror(errno));
+				_("Unable to create socket:\n%s"), g_strerror(errno));
 		return;
 	}
 
@@ -1078,7 +1078,7 @@
 		}
 		else
 		{
-			purple_proxy_connect_data_disconnect(connect_data, strerror(errno));
+			purple_proxy_connect_data_disconnect(connect_data, g_strerror(errno));
 		}
 	}
 	else
@@ -1138,7 +1138,7 @@
 
 		/* Error! */
 		purple_proxy_connect_data_disconnect_formatted(connect_data,
-				_("Lost connection with server:\n%s"), strerror(errno));
+				_("Lost connection with server:\n%s"), g_strerror(errno));
 		return;
 	}
 
@@ -1247,7 +1247,7 @@
 
 		/* Error! */
 		purple_proxy_connect_data_disconnect_formatted(connect_data,
-				_("Lost connection with server:\n%s"), strerror(errno));
+				_("Lost connection with server:\n%s"), g_strerror(errno));
 		return;
 	}
 
@@ -1347,7 +1347,7 @@
 
 		/* Error! */
 		purple_proxy_connect_data_disconnect_formatted(connect_data,
-				_("Lost connection with server:\n%s"), strerror(errno));
+				_("Lost connection with server:\n%s"), g_strerror(errno));
 		return;
 	}
 
@@ -1475,7 +1475,7 @@
 
 		/* Error! */
 		purple_proxy_connect_data_disconnect_formatted(connect_data,
-				_("Lost connection with server:\n%s"), strerror(errno));
+				_("Lost connection with server:\n%s"), g_strerror(errno));
 		return;
 	}
 
@@ -1584,7 +1584,7 @@
 	{
 		if (ret != 0)
 			error = errno;
-		purple_proxy_connect_data_disconnect(connect_data, strerror(error));
+		purple_proxy_connect_data_disconnect(connect_data, g_strerror(error));
 		return;
 	}
 
@@ -1629,7 +1629,7 @@
 	if (connect_data->fd < 0)
 	{
 		purple_proxy_connect_data_disconnect_formatted(connect_data,
-				_("Unable to create socket:\n%s"), strerror(errno));
+				_("Unable to create socket:\n%s"), g_strerror(errno));
 		return;
 	}
 
@@ -1649,7 +1649,7 @@
 		}
 		else
 		{
-			purple_proxy_connect_data_disconnect(connect_data, strerror(errno));
+			purple_proxy_connect_data_disconnect(connect_data, g_strerror(errno));
 		}
 	}
 	else
--- a/libpurple/util.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/util.c	Sun Nov 04 18:32:21 2007 +0000
@@ -2505,7 +2505,7 @@
 		}
 
 		if (g_mkdir(dir, mode) < 0) {
-			purple_debug_warning("build_dir", "mkdir: %s\n", strerror(errno));
+			purple_debug_warning("build_dir", "mkdir: %s\n", g_strerror(errno));
 			g_strfreev(components);
 			g_free(dir);
 			return -1;
@@ -2541,7 +2541,7 @@
 		if (g_mkdir(user_dir, S_IRUSR | S_IWUSR | S_IXUSR) == -1)
 		{
 			purple_debug_error("util", "Error creating directory %s: %s\n",
-							 user_dir, strerror(errno));
+							 user_dir, g_strerror(errno));
 			return FALSE;
 		}
 	}
@@ -2576,7 +2576,7 @@
 		{
 			purple_debug_error("util", "Error removing old file "
 					   "%s: %s\n",
-					   filename_temp, strerror(errno));
+					   filename_temp, g_strerror(errno));
 		}
 	}
 
@@ -2586,7 +2586,7 @@
 	{
 		purple_debug_error("util", "Error opening file %s for "
 				   "writing: %s\n",
-				   filename_temp, strerror(errno));
+				   filename_temp, g_strerror(errno));
 		g_free(filename_temp);
 		return FALSE;
 	}
@@ -2599,7 +2599,7 @@
 	if (fclose(file) != 0)
 	{
 		purple_debug_error("util", "Error closing file %s: %s\n",
-				   filename_temp, strerror(errno));
+				   filename_temp, g_strerror(errno));
 		g_free(filename_temp);
 		return FALSE;
 	}
@@ -2631,7 +2631,7 @@
 	if (chmod(filename_temp, S_IRUSR | S_IWUSR) == -1)
 	{
 		purple_debug_error("util", "Error setting permissions of file %s: %s\n",
-						 filename_temp, strerror(errno));
+						 filename_temp, g_strerror(errno));
 	}
 #endif
 
@@ -2640,7 +2640,7 @@
 	{
 		purple_debug_error("util", "Error renaming %s to %s: %s\n",
 				   filename_temp, filename_full,
-				   strerror(errno));
+				   g_strerror(errno));
 	}
 
 	g_free(filename_temp);
@@ -3688,7 +3688,7 @@
 					if(new_data == NULL) {
 						purple_debug_error("util",
 								"Failed to allocate %u bytes: %s\n",
-								content_len, strerror(errno));
+								content_len, g_strerror(errno));
 						purple_util_fetch_url_error(gfud,
 								_("Unable to allocate enough memory to hold "
 								  "the contents from %s.  The web server may "
@@ -3726,7 +3726,7 @@
 			return;
 		} else {
 			purple_util_fetch_url_error(gfud, _("Error reading from %s: %s"),
-					gfud->website.address, strerror(errno));
+					gfud->website.address, g_strerror(errno));
 			return;
 		}
 	}
@@ -3757,7 +3757,7 @@
 		return;
 	else if (len < 0) {
 		purple_util_fetch_url_error(gfud, _("Error writing to %s: %s"),
-				gfud->website.address, strerror(errno));
+				gfud->website.address, g_strerror(errno));
 		return;
 	}
 	gfud->request_written += len;
--- a/libpurple/win32/libc_interface.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/libpurple/win32/libc_interface.c	Sun Nov 04 18:32:21 2007 +0000
@@ -300,7 +300,7 @@
 		return errbuf;
 	}
 	else
-		return strerror( errornum );
+		return g_strerror( errornum );
 }
 
 /* unistd.h */
--- a/pidgin/gtkprefs.c	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/gtkprefs.c	Sun Nov 04 18:32:21 2007 +0000
@@ -1126,13 +1126,26 @@
 	g_error_free(err);
 }
 
+static void
+browser_button_clicked_cb(GtkWidget *button, gpointer null)
+{
+	GError *err = NULL;
+
+	if (g_spawn_command_line_async ("gnome-default-applications-properties", &err))
+		return;
+
+	purple_notify_error(NULL, NULL, _("Cannot start browser 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 = NULL, *proxy_button = NULL;
+	GtkWidget *proxy_warning = NULL, *browser_warning = NULL;
+	GtkWidget *proxy_button = NULL, *browser_button = NULL;
 	GtkSizeGroup *sg;
 	PurpleProxyInfo *proxy_info = NULL;
 
@@ -1217,11 +1230,11 @@
 	g_signal_connect(G_OBJECT(ports_checkbox), "clicked",
 					 G_CALLBACK(pidgin_toggle_sensitive), spin_button);
 
-	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);
+		vbox = pidgin_make_frame(ret, _("Proxy Server &amp; Browser"));
+		prefs_proxy_frame = gtk_vbox_new(FALSE, 0);
+
+		proxy_warning = hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
 		gtk_container_add(GTK_CONTAINER(vbox), hbox);
 
 		label = gtk_label_new(NULL);
@@ -1229,10 +1242,18 @@
 		                     _("<b>Proxy configuration program was not found.</b>"));
 		gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 
+		browser_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>Browser 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"));
+		label = gtk_label_new(_("Proxy & Browser preferences are configured\n"
+		                        "in GNOME Preferences"));
 		gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 		gtk_widget_show(label);
 
@@ -1243,7 +1264,15 @@
 		                 G_CALLBACK(proxy_button_clicked_cb), NULL);
 		gtk_box_pack_start(GTK_BOX(hbox), proxy_button, FALSE, FALSE, 0);
 		gtk_widget_show(proxy_button);
+		browser_button = gtk_button_new_with_mnemonic(_("Configure _Browser"));
+		g_signal_connect(G_OBJECT(browser_button), "clicked",
+		                 G_CALLBACK(browser_button_clicked_cb), NULL);
+		gtk_box_pack_start(GTK_BOX(hbox), browser_button, FALSE, FALSE, 0);
+		gtk_widget_show(browser_button);
 	} else {
+		vbox = pidgin_make_frame(ret, _("Proxy Server"));
+		prefs_proxy_frame = gtk_vbox_new(FALSE, 0);
+
 		pidgin_prefs_dropdown(vbox, _("Proxy _type:"), PURPLE_PREF_STRING,
 					"/purple/proxy/type",
 					_("No proxy"), "none",
@@ -1351,11 +1380,20 @@
 		path = g_find_program_in_path("gnome-network-preferences");
 		if (path != NULL) {
 			gtk_widget_set_sensitive(proxy_button, TRUE);
-			gtk_widget_hide(warning);
+			gtk_widget_hide(proxy_warning);
 			g_free(path);
 		} else {
 			gtk_widget_set_sensitive(proxy_button, FALSE);
-			gtk_widget_show(warning);
+			gtk_widget_show(proxy_warning);
+		}
+		path = g_find_program_in_path("gnome-default-applications-properties");
+		if (path != NULL) {
+			gtk_widget_set_sensitive(browser_button, TRUE);
+			gtk_widget_hide(browser_warning);
+			g_free(path);
+		} else {
+			gtk_widget_set_sensitive(browser_button, FALSE);
+			gtk_widget_show(browser_warning);
 		}
 	}
 
--- a/pidgin/pixmaps/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,4 +1,416 @@
-SUBDIRS = animations buddy_icons dialogs emblems emotes icons protocols status toolbar tray
+pidginpixmapdir = $(datadir)/pixmaps/pidgin
+
+SUBDIRS = buddy_icons/qq dialogs/16 dialogs/64 emblems/16 \
+          emotes/default/24 emotes/none \
+          icons/16 icons/22 icons/24 icons/32 icons/48 \
+          protocols/16 protocols/22 protocols/48 \
+          status/11 status/16 status/22 status/32 status/48 \
+          toolbar/16 toolbar/22 tray/16 tray/22 tray/32 tray/48
+
+MAKEFILE_MINGW = \
+		buddy_icons/qq/Makefile.mingw \
+		dialogs/16/Makefile.mingw \
+		dialogs/64/Makefile.mingw \
+		icons/16/Makefile.mingw \
+		icons/24/Makefile.mingw \
+		icons/32/Makefile.mingw \
+		icons/48/Makefile.mingw \
+		emotes/default/Makefile.mingw \
+		emotes/default/24/Makefile.mingw \
+		emotes/none/Makefile.mingw \
+		emblems/16/Makefile.mingw \
+		protocols/22/Makefile.mingw \
+		protocols/48/Makefile.mingw \
+		status/11/Makefile.mingw \
+		status/11/rtl/Makefile.mingw \
+		status/16/Makefile.mingw \
+		status/16/rtl/Makefile.mingw \
+		status/22/Makefile.mingw \
+		status/22/rtl/Makefile.mingw \
+		status/32/Makefile.mingw \
+		status/32/rtl/Makefile.mingw \
+		status/48/Makefile.mingw \
+		status/48/rtl/Makefile.mingw \
+		toolbar/16/Makefile.mingw \
+		toolbar/22/Makefile.mingw \
+		tray/16/Makefile.mingw \
+		tray/22/Makefile.mingw \
+		tray/32/Makefile.mingw \
+		tray/48/Makefile.mingw
+
+ANIMATIONS_16 = \
+		animations/16/connect0.png \
+		animations/16/connect1.png \
+		animations/16/connect2.png \
+		animations/16/connect3.png \
+		animations/16/connect4.png \
+		animations/16/connect5.png \
+		animations/16/connect6.png \
+		animations/16/connect7.png \
+		animations/16/connect8.png \
+		animations/16/typing0.png \
+		animations/16/typing1.png \
+		animations/16/typing2.png \
+		animations/16/typing3.png \
+		animations/16/typing4.png \
+		animations/16/typing5.png
+
+DIALOGS_16_SCALABLE = \
+		dialogs/16/scalable/error.svg \
+		dialogs/16/scalable/info.svg \
+		dialogs/16/scalable/mail.svg
+
+DIALOGS_64_SCALABLE = \
+		dialogs/64/scalable/auth.svg \
+		dialogs/64/scalable/cool.svg \
+		dialogs/64/scalable/dialog.svg \
+		dialogs/64/scalable/error.svg \
+		dialogs/64/scalable/info.svg \
+		dialogs/64/scalable/question.svg \
+		dialogs/64/scalable/warning.svg
+
+EMBLEMS_16_SCALABLE = \
+		emblems/16/scalable/aol-client.svg \
+		emblems/16/scalable/blocked.svg \
+		emblems/16/scalable/bot.svg \
+		emblems/16/scalable/external.svg \
+		emblems/16/scalable/female.svg \
+		emblems/16/scalable/free-for-chat.svg \
+		emblems/16/scalable/game.svg \
+		emblems/16/scalable/male.svg \
+		emblems/16/scalable/mobile.svg \
+		emblems/16/scalable/music.svg \
+		emblems/16/scalable/not-authorized.svg \
+		emblems/16/scalable/qq-member.svg \
+		emblems/16/scalable/secure.svg \
+		emblems/16/scalable/unavailable.svg \
+		emblems/16/scalable/video.svg \
+		emblems/16/scalable/voice.svg
+
+EMOTES_DEFAULT_24_SCALABLE = \
+		emotes/default/24/scalable/act-up.svg \
+		emotes/default/24/scalable/airplane.svg \
+		emotes/default/24/scalable/alien.svg \
+		emotes/default/24/scalable/angel.svg \
+		emotes/default/24/scalable/angry.svg \
+		emotes/default/24/scalable/arrogant.svg \
+		emotes/default/24/scalable/at-wits-end.svg \
+		emotes/default/24/scalable/bad.svg \
+		emotes/default/24/scalable/bashful.svg \
+		emotes/default/24/scalable/beat-up.svg \
+		emotes/default/24/scalable/beauty.svg \
+		emotes/default/24/scalable/beer.svg \
+		emotes/default/24/scalable/blowkiss.svg \
+		emotes/default/24/scalable/bomb.svg \
+		emotes/default/24/scalable/bowl.svg \
+		emotes/default/24/scalable/boy.svg \
+		emotes/default/24/scalable/brb.svg \
+		emotes/default/24/scalable/bulgy-eyes.svg \
+		emotes/default/24/scalable/bye.svg \
+		emotes/default/24/scalable/cake.svg \
+		emotes/default/24/scalable/call-me.svg \
+		emotes/default/24/scalable/camera.svg \
+		emotes/default/24/scalable/can.svg \
+		emotes/default/24/scalable/car.svg \
+		emotes/default/24/scalable/cat.svg \
+		emotes/default/24/scalable/chicken.svg \
+		emotes/default/24/scalable/clap.svg \
+		emotes/default/24/scalable/clock.svg \
+		emotes/default/24/scalable/cloudy.svg \
+		emotes/default/24/scalable/clover.svg \
+		emotes/default/24/scalable/clown.svg \
+		emotes/default/24/scalable/coffee.svg \
+		emotes/default/24/scalable/coins.svg \
+		emotes/default/24/scalable/computer.svg \
+		emotes/default/24/scalable/confused.svg \
+		emotes/default/24/scalable/console.svg \
+		emotes/default/24/scalable/cowboy.svg \
+		emotes/default/24/scalable/cow.svg \
+		emotes/default/24/scalable/crying.svg \
+		emotes/default/24/scalable/curl-lip.svg \
+		emotes/default/24/scalable/curse.svg \
+		emotes/default/24/scalable/cute.svg \
+		emotes/default/24/scalable/cyclops.svg \
+		emotes/default/24/scalable/dance.svg \
+		emotes/default/24/scalable/dazed.svg \
+		emotes/default/24/scalable/desire.svg \
+		emotes/default/24/scalable/devil.svg \
+		emotes/default/24/scalable/disapointed.svg \
+		emotes/default/24/scalable/disdain.svg \
+		emotes/default/24/scalable/doctor.svg \
+		emotes/default/24/scalable/dog.svg \
+		emotes/default/24/scalable/doh.svg \
+		emotes/default/24/scalable/dont-know.svg \
+		emotes/default/24/scalable/drink.svg \
+		emotes/default/24/scalable/drool.svg \
+		emotes/default/24/scalable/eat.svg \
+		emotes/default/24/scalable/embarrassed.svg \
+		emotes/default/24/scalable/excruciating.svg \
+		emotes/default/24/scalable/eyeroll.svg \
+		emotes/default/24/scalable/female-fighter.svg \
+		emotes/default/24/scalable/film.svg \
+		emotes/default/24/scalable/fingers-crossed.svg \
+		emotes/default/24/scalable/flag.svg \
+		emotes/default/24/scalable/foot-in-mouth.svg \
+		emotes/default/24/scalable/freaked-out.svg \
+		emotes/default/24/scalable/ghost.svg \
+		emotes/default/24/scalable/giggle.svg \
+		emotes/default/24/scalable/girl.svg \
+		emotes/default/24/scalable/glasses-cool.svg \
+		emotes/default/24/scalable/glasses-nerdy.svg \
+		emotes/default/24/scalable/goat.svg \
+		emotes/default/24/scalable/go-away.svg \
+		emotes/default/24/scalable/good.svg \
+		emotes/default/24/scalable/hammer.svg \
+		emotes/default/24/scalable/handcuffs.svg \
+		emotes/default/24/scalable/handshake.svg \
+		emotes/default/24/scalable/highfive.svg \
+		emotes/default/24/scalable/hug-left.svg \
+		emotes/default/24/scalable/hug-right.svg \
+		emotes/default/24/scalable/hypnotized.svg \
+		emotes/default/24/scalable/in-love.svg \
+		emotes/default/24/scalable/island.svg \
+		emotes/default/24/scalable/jump.svg \
+		emotes/default/24/scalable/kissed.svg \
+		emotes/default/24/scalable/kissing.svg \
+		emotes/default/24/scalable/kiss.svg \
+		emotes/default/24/scalable/knife.svg \
+		emotes/default/24/scalable/lamp.svg \
+		emotes/default/24/scalable/lashes.svg \
+		emotes/default/24/scalable/laugh.svg \
+		emotes/default/24/scalable/liquor.svg \
+		emotes/default/24/scalable/loser.svg \
+		emotes/default/24/scalable/love-over.svg \
+		emotes/default/24/scalable/love.svg \
+		emotes/default/24/scalable/lying.svg \
+		emotes/default/24/scalable/madtongue.svg \
+		emotes/default/24/scalable/mail.svg \
+		emotes/default/24/scalable/male-fighter1.svg \
+		emotes/default/24/scalable/male-fighter2.svg \
+		emotes/default/24/scalable/mean.svg \
+		emotes/default/24/scalable/meeting.svg \
+		emotes/default/24/scalable/messed.svg \
+		emotes/default/24/scalable/mobile.svg \
+		emotes/default/24/scalable/mohawk.svg \
+		emotes/default/24/scalable/moneymouth.svg \
+		emotes/default/24/scalable/monkey.svg \
+		emotes/default/24/scalable/moon.svg \
+		emotes/default/24/scalable/msn-away.svg \
+		emotes/default/24/scalable/msn-busy.svg \
+		emotes/default/24/scalable/msn_online.svg \
+		emotes/default/24/scalable/msn.svg \
+		emotes/default/24/scalable/musical-note.svg \
+		emotes/default/24/scalable/music.svg \
+		emotes/default/24/scalable/nailbiting.svg \
+		emotes/default/24/scalable/neutral.svg \
+		emotes/default/24/scalable/on-the-phone.svg \
+		emotes/default/24/scalable/party.svg \
+		emotes/default/24/scalable/peace.svg \
+		emotes/default/24/scalable/phone.svg \
+		emotes/default/24/scalable/pig.svg \
+		emotes/default/24/scalable/pill.svg \
+		emotes/default/24/scalable/pirate.svg \
+		emotes/default/24/scalable/pissed-off.svg \
+		emotes/default/24/scalable/pizza.svg \
+		emotes/default/24/scalable/plate.svg \
+		emotes/default/24/scalable/poop.svg \
+		emotes/default/24/scalable/pray.svg \
+		emotes/default/24/scalable/present.svg \
+		emotes/default/24/scalable/qq.svg \
+		emotes/default/24/scalable/question.svg \
+		emotes/default/24/scalable/quiet.svg \
+		emotes/default/24/scalable/rainbow.svg \
+		emotes/default/24/scalable/rain.svg \
+		emotes/default/24/scalable/rose-dead.svg \
+		emotes/default/24/scalable/rose.svg \
+		emotes/default/24/scalable/rotfl.svg \
+		emotes/default/24/scalable/sad.svg \
+		emotes/default/24/scalable/sarcastic.svg \
+		emotes/default/24/scalable/search.svg \
+		emotes/default/24/scalable/secret.svg \
+		emotes/default/24/scalable/shame.svg \
+		emotes/default/24/scalable/sheep.svg \
+		emotes/default/24/scalable/shock.svg \
+		emotes/default/24/scalable/shout.svg \
+		emotes/default/24/scalable/shut-mouth.svg \
+		emotes/default/24/scalable/sick.svg \
+		emotes/default/24/scalable/sidefrown.svg \
+		emotes/default/24/scalable/sigarette.svg \
+		emotes/default/24/scalable/silly.svg \
+		emotes/default/24/scalable/sinister.svg \
+		emotes/default/24/scalable/skeleton.svg \
+		emotes/default/24/scalable/skywalker.svg \
+		emotes/default/24/scalable/sleepy.svg \
+		emotes/default/24/scalable/smile-big.svg \
+		emotes/default/24/scalable/smile.svg \
+		emotes/default/24/scalable/smirk.svg \
+		emotes/default/24/scalable/snail.svg \
+		emotes/default/24/scalable/snicker.svg \
+		emotes/default/24/scalable/snowman.svg \
+		emotes/default/24/scalable/soccerball.svg \
+		emotes/default/24/scalable/soldier.svg \
+		emotes/default/24/scalable/star.svg \
+		emotes/default/24/scalable/starving.svg \
+		emotes/default/24/scalable/stop.svg \
+		emotes/default/24/scalable/struggle.svg \
+		emotes/default/24/scalable/sun.svg \
+		emotes/default/24/scalable/sweat.svg \
+		emotes/default/24/scalable/talktohand.svg \
+		emotes/default/24/scalable/teeth.svg \
+		emotes/default/24/scalable/terror.svg \
+		emotes/default/24/scalable/thinking.svg \
+		emotes/default/24/scalable/thunder.svg \
+		emotes/default/24/scalable/time-out.svg \
+		emotes/default/24/scalable/tongue.svg \
+		emotes/default/24/scalable/tremble.svg \
+		emotes/default/24/scalable/turtle.svg \
+		emotes/default/24/scalable/tv.svg \
+		emotes/default/24/scalable/umbrella.svg \
+		emotes/default/24/scalable/vampire.svg \
+		emotes/default/24/scalable/victory.svg \
+		emotes/default/24/scalable/waiting.svg \
+		emotes/default/24/scalable/watermelon.svg \
+		emotes/default/24/scalable/waving.svg \
+		emotes/default/24/scalable/weep.svg \
+		emotes/default/24/scalable/wilt.svg \
+		emotes/default/24/scalable/wink.svg \
+		emotes/default/24/scalable/worship.svg \
+		emotes/default/24/scalable/yawn.svg \
+		emotes/default/24/scalable/yin-yang.svg
+
+PROTOCOLS_16_SCALABLE = \
+		protocols/16/scalable/aim.svg \
+		protocols/16/scalable/bonjour.svg \
+		protocols/16/scalable/gadu-gadu.svg \
+		protocols/16/scalable/novell.svg \
+		protocols/16/scalable/icq.svg \
+		protocols/16/scalable/irc.svg \
+		protocols/16/scalable/jabber.svg \
+		protocols/16/scalable/meanwhile.svg \
+		protocols/16/scalable/msn.svg \
+		protocols/16/scalable/qq.svg \
+		protocols/16/scalable/silc.svg \
+		protocols/16/scalable/simple.svg \
+		protocols/16/scalable/yahoo.svg \
+		protocols/16/scalable/zephyr.svg
+
+ICONS_16_SCALABLE = \
+		icons/16/scalable/pidgin.svg
+
+ICONS_22_SCALABLE = \
+		icons/22/scalable/pidgin.svg
+
+ICONS_24_SCALABLE = \
+		icons/24/scalable/pidgin.svg
+
+ICONS_32_SCALABLE = \
+		icons/32/scalable/pidgin.svg
+
+ICONS_48_SCALABLE = \
+		icons/48/scalable/pidgin.svg
+
+PROTOCOLS_22_SCALABLE = \
+		protocols/22/scalable/aim.svg \
+		protocols/22/scalable/bonjour.svg \
+		protocols/22/scalable/gadu-gadu.svg \
+		protocols/22/scalable/novell.svg \
+		protocols/22/scalable/icq.svg \
+		protocols/22/scalable/irc.svg \
+		protocols/22/scalable/jabber.svg \
+		protocols/22/scalable/meanwhile.svg \
+		protocols/22/scalable/msn.svg \
+		protocols/22/scalable/qq.svg \
+		protocols/22/scalable/silc.svg \
+		protocols/22/scalable/simple.svg \
+		protocols/22/scalable/yahoo.svg \
+		protocols/22/scalable/zephyr.svg
+
+PROTOCOLS_48_SCALABLE = \
+		protocols/48/scalable/aim.svg \
+		protocols/48/scalable/bonjour.svg \
+		protocols/48/scalable/gadu-gadu.svg \
+		protocols/48/scalable/google-talk.svg \
+		protocols/48/scalable/novell.svg \
+		protocols/48/scalable/icq.svg \
+		protocols/48/scalable/irc.svg \
+		protocols/48/scalable/jabber.svg \
+		protocols/48/scalable/meanwhile.svg \
+		protocols/48/scalable/msn.svg \
+		protocols/48/scalable/qq.svg \
+		protocols/48/scalable/silc.svg \
+		protocols/48/scalable/simple.svg \
+		protocols/48/scalable/yahoo.svg \
+		protocols/48/scalable/zephyr.svg
+
+STATUS_11_SCALABLE = \
+		status/11/scalable/available.svg \
+		status/11/scalable/away.svg \
+		status/11/scalable/busy.svg \
+		status/11/scalable/chat.svg \
+		status/11/scalable/extended-away.svg \
+		status/11/scalable/invisible.svg \
+		status/11/scalable/offline.svg \
+		status/11/scalable/person.svg
+
+STATUS_16_SCALABLE = \
+		status/16/scalable/available.svg \
+		status/16/scalable/away.svg \
+		status/16/scalable/busy.svg \
+		status/16/scalable/chat.svg \
+		status/16/scalable/extended-away.svg \
+		status/16/scalable/log-in.svg \
+		status/16/scalable/log-out.svg \
+		status/16/scalable/message-pending.svg \
+		status/16/scalable/offline.svg \
+		status/16/scalable/person.svg
+
+STATUS_22_SCALABLE = \
+		status/22/scalable/available.svg \
+		status/22/scalable/away.svg \
+		status/22/scalable/busy.svg \
+		status/22/scalable/chat.svg \
+		status/22/scalable/extended-away.svg \
+		status/22/scalable/log-in.svg \
+		status/22/scalable/log-out.svg \
+		status/22/scalable/offline.svg \
+		status/22/scalable/person.svg
+
+STATUS_32_SCALABLE = \
+		status/32/scalable/available.svg \
+		status/32/scalable/away.svg \
+		status/32/scalable/busy.svg \
+		status/32/scalable/chat.svg \
+		status/32/scalable/extended-away.svg \
+		status/32/scalable/log-in.svg \
+		status/32/scalable/log-out.svg \
+		status/32/scalable/offline.svg \
+		status/32/scalable/person.svg
+
+TOOLBAR_11 = \
+		toolbar/11/message-new.png
+
+TOOLBAR_16_SCALABLE = \
+		toolbar/16/scalable/change-bgcolor.svg \
+		toolbar/16/scalable/change-fgcolor.svg \
+		toolbar/16/scalable/emote-select.svg \
+		toolbar/16/scalable/font-size-down.svg \
+		toolbar/16/scalable/font-size-up.svg
+
+TOOLBAR_22_SCALABLE = \
+		toolbar/22/scalable/select-avatar.svg
+
+TRAY_16_SCALABLE = \
+		tray/16/scalable/tray-away.svg \
+		tray/16/scalable/tray-busy.svg \
+		tray/16/scalable/tray-connecting.svg \
+		tray/16/scalable/tray-extended-away.svg \
+		tray/16/scalable/tray-invisible.svg \
+		tray/16/scalable/tray-message.svg \
+		tray/16/scalable/tray-offline.svg \
+		tray/16/scalable/tray-online.svg
+
+TRAY_22_SCALABLE = \
+		tray/22/scalable/tray-invisible.svg
 
 EXTRA_DIST = \
 		edit.png			\
@@ -10,7 +422,29 @@
 		arrow-right.xpm		\
 		arrow-left.xpm		\
 		Makefile.mingw			\
-		pidgin.ico
+		pidgin.ico		\
+		$(MAKEFILE_MINGW)	\
+		$(DIALOGS_16_SCALABLE)	\
+		$(DIALOGS_64_SCALABLE)	\
+		$(ICONS_16_SCALABLE)	\
+		$(ICONS_22_SCALABLE)	\
+		$(ICONS_24_SCALABLE)	\
+		$(ICONS_32_SCALABLE)	\
+		$(ICONS_48_SCALABLE)	\
+		$(EMBLEMS_16_SCALABLE)	\
+		$(EMOTES_DEFAULT_24_SCALABLE)	\
+		$(PROTOCOLS_16_SCALABLE)	\
+		$(PROTOCOLS_22_SCALABLE)	\
+		$(PROTOCOLS_48_SCALABLE)	\
+		$(STATUS_11_SCALABLE)	\
+		$(STATUS_16_SCALABLE)	\
+		$(STATUS_22_SCALABLE)   \
+		$(STATUS_32_SCALABLE)	\
+		$(TOOLBAR_11)		\
+		$(TOOLBAR_16_SCALABLE)	\
+		$(TOOLBAR_22_SCALABLE)	\
+		$(TRAY_16_SCALABLE)	\
+		$(TRAY_22_SCALABLE)
 
 pidginbuttonpixdir = $(datadir)/pixmaps/pidgin/buttons
 pidginbuttonpix_DATA = edit.png pause.png info.png
@@ -18,3 +452,4 @@
 pidgindistpixdir = $(datadir)/pixmaps/pidgin
 pidgindistpix_DATA = logo.png arrow-down.xpm arrow-left.xpm arrow-right.xpm arrow-up.xpm
 
+nobase_dist_pidginpixmap_DATA = $(ANIMATIONS_16)
--- a/pidgin/pixmaps/Makefile.mingw	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/Makefile.mingw	Sun Nov 04 18:32:21 2007 +0000
@@ -15,7 +15,16 @@
 install:
 	if test '$(SUBDIRS)'; then \
 	  list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if [ "$$subdir" != "icons/22" ]; then \
 	    $(MAKE) -C $$subdir -f $(MINGW_MAKEFILE) install || exit 1 ;\
+	  fi \
+	  done; \
+	fi;
+	if test '$(nobase_dist_pidginpixmap_DATA)'; then \
+	  list='$(nobase_dist_pidginpixmap_DATA)'; for file in $$list; do \
+	    dir=`dirname $$file`; \
+	    mkdir -p $(pidginpixmapdir)/$$dir; \
+	    cp $$file $(pidginpixmapdir)/$$dir/; \
 	  done; \
 	fi;
 	if test '$(pidginbuttonpix_DATA)'; then \
--- a/pidgin/pixmaps/animations/16/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-EXTRA_DIST = 	connect0.png \
-		connect1.png \
-		connect2.png \
-		connect3.png \
-		connect4.png \
-		connect5.png \
-		connect6.png \
-		connect7.png \
-		connect8.png \
-		typing0.png \
-		typing1.png \
-		typing2.png \
-		typing3.png \
-		typing4.png \
-		typing5.png
-
-pidginanimpixdir = $(datadir)/pixmaps/pidgin/animations/16
-pidginanimpix_DATA = $(EXTRA_DIST)
--- a/pidgin/pixmaps/animations/16/Makefile.mingw	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-#
-# Makefile.mingw
-#
-# Description: Makefile for win32 (mingw) version of Pidgin pixmaps
-#
-
-PIDGIN_TREE_TOP := ../../../..
-include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
-
-datadir = $(PIDGIN_INSTALL_DIR)
-include ./Makefile.am
-
-.PHONY: install
-
-install:
-	if test '$(pidginanimpix_DATA)'; then \
-	  mkdir -p $(pidginanimpixdir); \
-	  cp $(pidginanimpix_DATA) $(pidginanimpixdir); \
-	fi;
-
--- a/pidgin/pixmaps/animations/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-SUBDIRS = 16
-
-EXTRA_DIST = \
-	Makefile.mingw \
-	16/Makefile.mingw
--- a/pidgin/pixmaps/animations/Makefile.mingw	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-#
-# Makefile.mingw
-#
-# Description: Makefile for win32 (mingw) version of Pidgin pixmaps
-#
-
-include ./Makefile.am
-
-install:
-	if test '$(SUBDIRS)'; then \
-	  list='$(SUBDIRS)'; for subdir in $$list; do \
-	    $(MAKE) -C $$subdir -f Makefile.mingw install || exit 1; \
-	  done; \
-	fi;
--- a/pidgin/pixmaps/buddy_icons/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-SUBDIRS = qq
-
-EXTRA_DIST = \
-	Makefile.mingw \
-	qq/Makefile.mingw
--- a/pidgin/pixmaps/buddy_icons/Makefile.mingw	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-#
-# Makefile.mingw
-#
-# Description: Makefile for win32 (mingw) version of Pidgin pixmaps
-#
-
-include ./Makefile.am
-
-.PHONY: install
-
-install:
-	if test '$(SUBDIRS)'; then \
-	  list='$(SUBDIRS)'; for subdir in $$list; do \
-	    $(MAKE) -C $$subdir -f Makefile.mingw install || exit 1; \
-	  done; \
-	fi;
--- a/pidgin/pixmaps/dialogs/16/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/dialogs/16/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,5 +1,3 @@
-SUBDIRS = scalable
-
 EXTRA_DIST = 	auth.png \
 		error.png \
 		info.png \
--- a/pidgin/pixmaps/dialogs/16/scalable/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-EXTRA_DIST = 	error.svg \
-	     	info.svg \
-		mail.svg
--- a/pidgin/pixmaps/dialogs/64/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/dialogs/64/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,5 +1,3 @@
-SUBDIRS = scalable
-
 EXTRA_DIST = 	auth.png \
 		cool.png \
 		dialog.png \
--- a/pidgin/pixmaps/dialogs/64/scalable/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-EXTRA_DIST =	auth.svg \
-		cool.svg \
-		dialog.svg \
-		error.svg \
-		info.svg \
-		question.svg \
-		warning.svg
--- a/pidgin/pixmaps/dialogs/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-SUBDIRS = 16 64
-
-EXTRA_DIST = \
-	Makefile.mingw \
-	16/Makefile.mingw \
-	64/Makefile.mingw
--- a/pidgin/pixmaps/dialogs/Makefile.mingw	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-#
-# Makefile.mingw
-#
-# Description: Makefile for win32 (mingw) version of Pidgin pixmaps
-#
-
-include ./Makefile.am
-
-.PHONY: install
-
-install:
-	if test '$(SUBDIRS)'; then \
-	  list='$(SUBDIRS)'; for subdir in $$list; do \
-	    $(MAKE) -C $$subdir -f Makefile.mingw install || exit 1; \
-	  done; \
-	fi;
--- a/pidgin/pixmaps/emblems/16/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/emblems/16/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,5 +1,3 @@
-SUBDIRS = scalable
-
 EXTRA_DIST = 	aol-client.png \
 		birthday.png \
 		blocked.png \
--- a/pidgin/pixmaps/emblems/16/scalable/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-EXTRA_DIST =	aol-client.svg \
-		blocked.svg \
-		bot.svg \
-		external.svg \
-		female.svg \
-		free-for-chat.svg \
-		game.svg \
-		male.svg \
-		mobile.svg \
-		music.svg \
-		not-authorized.svg \
-		qq-member.svg \
-		secure.svg \
-		unavailable.svg \
-		video.svg \
-		voice.svg
--- a/pidgin/pixmaps/emblems/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-SUBDIRS = 16
-
-EXTRA_DIST = \
-	Makefile.mingw \
-	16/Makefile.mingw
--- a/pidgin/pixmaps/emblems/Makefile.mingw	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-#
-# Makefile.mingw
-#
-# Description: Makefile for win32 (mingw) version of Pidgin pixmaps
-#
-
-include ./Makefile.am
-
-.PHONY: install
-
-install:
-	if test '$(SUBDIRS)'; then \
-	  list='$(SUBDIRS)'; for subdir in $$list; do \
-	    $(MAKE) -C $$subdir -f Makefile.mingw install || exit 1; \
-	  done; \
-	fi;
--- a/pidgin/pixmaps/emotes/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-SUBDIRS=default none
-
-EXTRA_DIST = Makefile.mingw
--- a/pidgin/pixmaps/emotes/Makefile.mingw	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-#
-# Makefile.mingw
-#
-# Description: Makefile for win32 (mingw) version of Pidgin pixmaps
-#
-
-include ./Makefile.am
-
-.PHONY: install clean
-
-install:
-	if test '$(SUBDIRS)'; then \
-	  list='$(SUBDIRS)'; for subdir in $$list; do \
-	    $(MAKE) -C $$subdir -f Makefile.mingw install || exit 1; \
-	  done; \
-	fi;
-
-clean:
-	if test '$(SUBDIRS)'; then \
-	  list='$(SUBDIRS)'; for subdir in $$list; do \
-	    $(MAKE) -C $$subdir -f Makefile.mingw clean || exit 1; \
-	  done; \
-	fi;
--- a/pidgin/pixmaps/emotes/default/24/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/emotes/default/24/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,5 +1,3 @@
-SUBDIRS = scalable
-
 SMILEYS = 	act-up.png \
     airplane.png \
     alien.png \
--- a/pidgin/pixmaps/emotes/default/24/scalable/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,189 +0,0 @@
-SMILEYS = 	act-up.svg \
-    airplane.svg \
-    alien.svg \
-    angel.svg \
-    angry.svg \
-    arrogant.svg \
-    at-wits-end.svg \
-    bad.svg \
-    bashful.svg \
-    beat-up.svg \
-    beauty.svg \
-    beer.svg \
-    blowkiss.svg \
-    bomb.svg \
-    bowl.svg \
-    boy.svg \
-    brb.svg \
-    bulgy-eyes.svg \
-    bye.svg \
-    cake.svg \
-    call-me.svg \
-    camera.svg \
-    can.svg \
-    car.svg \
-    cat.svg \
-    chicken.svg \
-    clap.svg \
-    clock.svg \
-    cloudy.svg \
-    clover.svg \
-    clown.svg \
-    coffee.svg \
-    coins.svg \
-    computer.svg \
-    confused.svg \
-    console.svg \
-    cowboy.svg \
-    cow.svg \
-    crying.svg \
-    curl-lip.svg \
-    curse.svg \
-    cute.svg \
-    cyclops.svg \
-    dance.svg \
-    dazed.svg \
-    desire.svg \
-    devil.svg \
-    disapointed.svg \
-    disdain.svg \
-    doctor.svg \
-    dog.svg \
-    doh.svg \
-    dont-know.svg \
-    drink.svg \
-    drool.svg \
-    eat.svg \
-    embarrassed.svg \
-    excruciating.svg \
-    eyeroll.svg \
-    female-fighter.svg \
-    film.svg \
-    fingers-crossed.svg \
-    flag.svg \
-    foot-in-mouth.svg \
-    freaked-out.svg \
-    ghost.svg \
-    giggle.svg \
-    girl.svg \
-    glasses-cool.svg \
-    glasses-nerdy.svg \
-    goat.svg \
-    go-away.svg \
-    good.svg \
-    hammer.svg \
-    handcuffs.svg \
-    handshake.svg \
-    highfive.svg \
-    hug-left.svg \
-    hug-right.svg \
-    hypnotized.svg \
-    in-love.svg \
-    island.svg \
-    jump.svg \
-    kissed.svg \
-    kissing.svg \
-    kiss.svg \
-    knife.svg \
-    lamp.svg \
-    lashes.svg \
-    laugh.svg \
-    liquor.svg \
-    loser.svg \
-    love-over.svg \
-    love.svg \
-    lying.svg \
-    madtongue.svg \
-    mail.svg \
-    male-fighter1.svg \
-    male-fighter2.svg \
-    mean.svg \
-    meeting.svg \
-    messed.svg \
-    mobile.svg \
-    mohawk.svg \
-    moneymouth.svg \
-    monkey.svg \
-    moon.svg \
-    msn-away.svg \
-    msn-busy.svg \
-    msn_online.svg \
-    msn.svg \
-    musical-note.svg \
-    music.svg \
-    nailbiting.svg \
-    neutral.svg \
-    on-the-phone.svg \
-    party.svg \
-    peace.svg \
-    phone.svg \
-    pig.svg \
-    pill.svg \
-    pirate.svg \
-    pissed-off.svg \
-    pizza.svg \
-    plate.svg \
-    poop.svg \
-    pray.svg \
-    present.svg \
-    qq.svg \
-    question.svg \
-    quiet.svg \
-    rainbow.svg \
-    rain.svg \
-    rose-dead.svg \
-    rose.svg \
-    rotfl.svg \
-    sad.svg \
-    sarcastic.svg \
-    search.svg \
-    secret.svg \
-    shame.svg \
-    sheep.svg \
-    shock.svg \
-    shout.svg \
-    shut-mouth.svg \
-    sick.svg \
-    sidefrown.svg \
-    sigarette.svg \
-    silly.svg \
-    sinister.svg \
-    skeleton.svg \
-    skywalker.svg \
-    sleepy.svg \
-    smile-big.svg \
-    smile.svg \
-    smirk.svg \
-    snail.svg \
-    snicker.svg \
-    snowman.svg \
-    soccerball.svg \
-    soldier.svg \
-    star.svg \
-    starving.svg \
-    stop.svg \
-    struggle.svg \
-    sun.svg \
-    sweat.svg \
-    talktohand.svg \
-    teeth.svg \
-    terror.svg \
-    thinking.svg \
-    thunder.svg \
-    time-out.svg \
-    tongue.svg \
-    tremble.svg \
-    turtle.svg \
-    tv.svg \
-    umbrella.svg \
-    vampire.svg \
-    victory.svg \
-    waiting.svg \
-    watermelon.svg \
-    waving.svg \
-    weep.svg \
-    wilt.svg \
-    wink.svg \
-    worship.svg \
-    yawn.svg \
-    yin-yang.svg
--- a/pidgin/pixmaps/emotes/default/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-SUBDIRS=24
-
-EXTRA_DIST= \
-	Makefile.mingw \
-	24/Makefile.mingw
--- a/pidgin/pixmaps/icons/16/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/icons/16/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,5 +1,3 @@
-SUBDIRS = scalable
-
 EXTRA_DIST = pidgin.png 
 
 pidginiconspixdir = $(datadir)/icons/hicolor/16x16/apps
--- a/pidgin/pixmaps/icons/16/scalable/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-EXTRA_DIST = 	pidgin.svg
--- a/pidgin/pixmaps/icons/22/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/icons/22/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,5 +1,3 @@
-SUBDIRS = scalable
-
 EXTRA_DIST = pidgin.png 
 
 pidginiconspixdir = $(datadir)/icons/hicolor/22x22/apps
--- a/pidgin/pixmaps/icons/22/scalable/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-EXTRA_DIST = 	pidgin.svg
--- a/pidgin/pixmaps/icons/24/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/icons/24/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,5 +1,3 @@
-SUBDIRS = scalable
-
 EXTRA_DIST = pidgin.png 
 
 pidginiconspixdir = $(datadir)/icons/hicolor/24x24/apps
--- a/pidgin/pixmaps/icons/24/scalable/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-EXTRA_DIST = 	pidgin.svg
--- a/pidgin/pixmaps/icons/32/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/icons/32/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,5 +1,3 @@
-SUBDIRS = scalable
-
 EXTRA_DIST = pidgin.png 
 
 pidginiconspixdir = $(datadir)/icons/hicolor/32x32/apps
--- a/pidgin/pixmaps/icons/32/scalable/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-EXTRA_DIST = 	pidgin.svg
--- a/pidgin/pixmaps/icons/48/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/icons/48/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,5 +1,3 @@
-SUBDIRS = scalable
-
 EXTRA_DIST = pidgin.png 
 
 pidginiconspixdir = $(datadir)/icons/hicolor/48x48/apps
--- a/pidgin/pixmaps/icons/48/scalable/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-EXTRA_DIST = pidgin.svg 
-
-pidginiconspixdir = $(datadir)/icons/hicolor/scalable/apps
-
-pidginiconspix_DATA = $(EXTRA_DIST)
-
--- a/pidgin/pixmaps/icons/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-SUBDIRS = 16 22 24 32 48
-
-EXTRA_DIST = \
-	Makefile.mingw \
-	16/Makefile.mingw \
-	24/Makefile.mingw \
-	32/Makefile.mingw \
-	48/Makefile.mingw
-
--- a/pidgin/pixmaps/icons/Makefile.mingw	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#
-# Makefile.mingw
-#
-# Description: Makefile for win32 (mingw) version of Pidgin pixmaps
-#
-
-include ./Makefile.am
-
-install:
-
-install_real:
-	if test '$(SUBDIRS)'; then \
-	  list='$(SUBDIRS)'; for subdir in $$list; do \
-	  if [ "$$subdir" != "22" ]; then \
-	    $(MAKE) -C $$subdir -f Makefile.mingw install || exit 1; \
-	  fi; \
-	  done; \
-	fi;
-
--- a/pidgin/pixmaps/protocols/16/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/protocols/16/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,5 +1,3 @@
-SUBDIRS = scalable
-
 EXTRA_DIST =	aim.png \
 		bonjour.png \
 		gadu-gadu.png \
--- a/pidgin/pixmaps/protocols/16/scalable/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-EXTRA_DIST = 	aim.svg \
-		bonjour.svg \
-		gadu-gadu.svg \
-		novell.svg \
-		icq.svg \
-		irc.svg \
-		jabber.svg \
-		meanwhile.svg \
-		msn.svg \
-		qq.svg \
-		silc.svg \
-		simple.svg \
-		yahoo.svg \
-		zephyr.svg
--- a/pidgin/pixmaps/protocols/22/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/protocols/22/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,5 +1,3 @@
-SUBDIRS = scalable
-
 EXTRA_DIST =	aim.png \
 		bonjour.png \
 		gadu-gadu.png \
--- a/pidgin/pixmaps/protocols/22/scalable/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-EXTRA_DIST = 	aim.svg \
-		bonjour.svg \
-		gadu-gadu.svg \
-		novell.svg \
-		icq.svg \
-		irc.svg \
-		jabber.svg \
-		meanwhile.svg \
-		msn.svg \
-		qq.svg \
-		silc.svg \
-		simple.svg \
-		yahoo.svg \
-		zephyr.svg
--- a/pidgin/pixmaps/protocols/48/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/protocols/48/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,5 +1,3 @@
-SUBDIRS = scalable
-
 EXTRA_DIST =	aim.png \
 		bonjour.png \
 		gadu-gadu.png \
--- a/pidgin/pixmaps/protocols/48/scalable/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-EXTRA_DIST = 	aim.svg \
-		bonjour.svg \
-		gadu-gadu.svg \
-		google-talk.svg \
-		novell.svg \
-		icq.svg \
-		irc.svg \
-		jabber.svg \
-		meanwhile.svg \
-		msn.svg \
-		qq.svg \
-		silc.svg \
-		simple.svg \
-		yahoo.svg \
-		zephyr.svg
--- a/pidgin/pixmaps/protocols/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-SUBDIRS = 16 22 48
-
-EXTRA_DIST = \
-	Makefile.mingw \
-	16/Makefile.mingw \
-	22/Makefile.mingw \
-	48/Makefile.mingw
-
--- a/pidgin/pixmaps/protocols/Makefile.mingw	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-#
-# Makefile.mingw
-#
-# Description: Makefile for win32 (mingw) version of Pidgin pixmaps
-#
-
-include ./Makefile.am
-
-.PHONY: install
-
-install:
-	if test '$(SUBDIRS)'; then \
-	  list='$(SUBDIRS)'; for subdir in $$list; do \
-	    $(MAKE) -C $$subdir -f Makefile.mingw install || exit 1; \
-	  done; \
-	fi;
--- a/pidgin/pixmaps/status/11/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/status/11/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,4 +1,4 @@
-SUBDIRS = scalable rtl
+SUBDIRS = rtl
 
 EXTRA_DIST = 	available.png \
 		away.png \
--- a/pidgin/pixmaps/status/11/scalable/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-EXTRA_DIST = 	available.svg \
-		away.svg \
-		busy.svg \
-		chat.svg \
-		extended-away.svg \
-		invisible.svg \
-		offline.svg \
-		person.svg
--- a/pidgin/pixmaps/status/16/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/status/16/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,4 +1,4 @@
-SUBDIRS = rtl scalable
+SUBDIRS = rtl
 
 EXTRA_DIST = 	available.png \
 		away.png \
--- a/pidgin/pixmaps/status/16/scalable/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-EXTRA_DIST = 	available.svg \
-		away.svg \
-		busy.svg \
-		chat.svg \
-		extended-away.svg \
-		log-in.svg \
-		log-out.svg \
-		message-pending.svg \
-		offline.svg \
-		person.svg
-
-#		half-operator.svg
-#		operator.svg
--- a/pidgin/pixmaps/status/22/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/status/22/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,4 +1,4 @@
-SUBDIRS = rtl scalable
+SUBDIRS = rtl
 
 EXTRA_DIST = 	available.png \
 		away.png \
--- a/pidgin/pixmaps/status/22/scalable/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-EXTRA_DIST = 	available.svg \
-		away.svg \
-		busy.svg \
-		chat.svg \
-		extended-away.svg \
-		log-in.svg \
-		log-out.svg \
-		offline.svg \
-		person.svg
--- a/pidgin/pixmaps/status/32/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/status/32/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,4 +1,4 @@
-SUBDIRS = rtl scalable
+SUBDIRS = rtl
 
 EXTRA_DIST = 	available.png \
 		away.png \
--- a/pidgin/pixmaps/status/32/scalable/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-EXTRA_DIST = 	available.svg \
-		away.svg \
-		busy.svg \
-		chat.svg \
-		extended-away.svg \
-		log-in.svg \
-		log-out.svg \
-		offline.svg \
-		person.svg
--- a/pidgin/pixmaps/status/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-SUBDIRS = 11 16 22 32 48
-
-EXTRA_DIST = \
-	Makefile.mingw \
-	11/Makefile.mingw \
-	11/rtl/Makefile.mingw \
-	16/Makefile.mingw \
-	16/rtl/Makefile.mingw \
-	22/Makefile.mingw \
-	22/rtl/Makefile.mingw \
-	32/Makefile.mingw \
-	32/rtl/Makefile.mingw \
-	48/Makefile.mingw \
-	48/rtl/Makefile.mingw
-
--- a/pidgin/pixmaps/status/Makefile.mingw	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-#
-# Makefile.mingw
-#
-# Description: Makefile for win32 (mingw) version of Pidgin pixmaps
-#
-
-include ./Makefile.am
-
-install:
-	if test '$(SUBDIRS)'; then \
-	  list='$(SUBDIRS)'; for subdir in $$list; do \
-	    $(MAKE) -C $$subdir -f Makefile.mingw install || exit 1; \
-	  done; \
-	fi;
--- a/pidgin/pixmaps/toolbar/16/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/toolbar/16/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,5 +1,3 @@
-SUBDIRS = scalable
-
 EXTRA_DIST = change-bgcolor.png \
 		change-fgcolor.png \
 		emote-select.png \
--- a/pidgin/pixmaps/toolbar/16/scalable/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-EXTRA_DIST = change-bgcolor.svg \
-		change-fgcolor.svg \
-		emote-select.svg \
-		font-size-down.svg \
-		font-size-up.svg
--- a/pidgin/pixmaps/toolbar/22/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/toolbar/22/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,5 +1,3 @@
-SUBDIRS = scalable
-
 EXTRA_DIST = select-avatar.png
 
 pidgintoolbarpixdir = $(datadir)/pixmaps/pidgin/toolbar/22
--- a/pidgin/pixmaps/toolbar/22/scalable/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-EXTRA_DIST = select-avatar.svg
--- a/pidgin/pixmaps/toolbar/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-SUBDIRS = 16 22
-
-TINY_ICONS = 11/message-new.png
-EXTRA_DIST = \
-	Makefile.mingw \
-	16/Makefile.mingw \
-	22/Makefile.mingw \
-	$(TINY_ICONS)
-
-pidgintinytoolbarpixdir = $(datadir)/pixmaps/pidgin/toolbar/11
-pidgintinytoolbarpix_DATA = $(TINY_ICONS)
--- a/pidgin/pixmaps/toolbar/Makefile.mingw	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-#
-# Makefile.mingw
-#
-# Description: Makefile for win32 (mingw) version of Pidgin pixmaps
-#
-
-include ./Makefile.am
-
-install:
-	if test '$(SUBDIRS)'; then \
-	  list='$(SUBDIRS)'; for subdir in $$list; do \
-	    $(MAKE) -C $$subdir -f Makefile.mingw install || exit 1; \
-	  done; \
-	fi;
--- a/pidgin/pixmaps/tray/16/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/tray/16/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,5 +1,3 @@
-SUBDIRS = scalable
-
 TRAY_ICONS =	tray-away.png \
 		tray-busy.png \
 		tray-invisible.png \
--- a/pidgin/pixmaps/tray/22/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/pixmaps/tray/22/Makefile.am	Sun Nov 04 18:32:21 2007 +0000
@@ -1,5 +1,3 @@
-SUBDIRS = scalable
-
 TRAY_ICONS =	tray-away.png \
 		tray-busy.png \
 		tray-connecting.png \
--- a/pidgin/pixmaps/tray/Makefile.am	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-SUBDIRS = 16 22 32 48
-
-EXTRA_DIST = \
-	Makefile.mingw \
-	16/Makefile.mingw \
-	22/Makefile.mingw \
-	32/Makefile.mingw \
-	48/Makefile.mingw
-
--- a/pidgin/pixmaps/tray/Makefile.mingw	Sat Nov 03 09:20:20 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-#
-# Makefile.mingw
-#
-# Description: Makefile for win32 (mingw) version of Pidgin pixmaps
-#
-
-include ./Makefile.am
-
-install:
-	if test '$(SUBDIRS)'; then \
-	  list='$(SUBDIRS)'; for subdir in $$list; do \
-	    $(MAKE) -C $$subdir -f Makefile.mingw install || exit 1; \
-	  done; \
-	fi;
--- a/pidgin/win32/nsis/pidgin-installer.nsi	Sat Nov 03 09:20:20 2007 +0000
+++ b/pidgin/win32/nsis/pidgin-installer.nsi	Sun Nov 04 18:32:21 2007 +0000
@@ -698,6 +698,7 @@
 
     Delete "$INSTDIR\ca-certs\Equifax_Secure_CA.pem"
     Delete "$INSTDIR\ca-certs\GTE_CyberTrust_Global_Root.pem"
+    Delete "$INSTDIR\ca-certs\Microsoft_Secure_Server_Authority.pem"
     Delete "$INSTDIR\ca-certs\Verisign_Class3_Extended_Validation_CA.pem"
     Delete "$INSTDIR\ca-certs\Verisign_Class3_Primary_CA.pem"
     Delete "$INSTDIR\ca-certs\Verisign_RSA_Secure_Server_CA.pem"
@@ -750,6 +751,7 @@
     Delete "$INSTDIR\plugins\win2ktrans.dll"
     Delete "$INSTDIR\plugins\winprefs.dll"
     RMDir "$INSTDIR\plugins"
+    RMDir /r "$INSTDIR\sasl2"
     Delete "$INSTDIR\sounds\purple\alert.wav"
     Delete "$INSTDIR\sounds\purple\login.wav"
     Delete "$INSTDIR\sounds\purple\logout.wav"
@@ -757,23 +759,28 @@
     Delete "$INSTDIR\sounds\purple\send.wav"
     RMDir "$INSTDIR\sounds\purple"
     RMDir "$INSTDIR\sounds"
+    Delete "$INSTDIR\comerr32.dll"
     Delete "$INSTDIR\freebl3.dll"
+    Delete "$INSTDIR\gssapi32.dll"
     Delete "$INSTDIR\idletrack.dll"
+    Delete "$INSTDIR\k5sprt32.dll"
+    Delete "$INSTDIR\krb5_32.dll"
     Delete "$INSTDIR\libgtkspell.dll"
     Delete "$INSTDIR\libjabber.dll"
+    Delete "$INSTDIR\libmeanwhile-1.dll"
     Delete "$INSTDIR\liboscar.dll"
     Delete "$INSTDIR\libpurple.dll"
-    Delete "$INSTDIR\libmeanwhile-1.dll"
+    Delete "$INSTDIR\libsasl.dll"
+    Delete "$INSTDIR\libsilc-1-1-2.dll"
+    Delete "$INSTDIR\libsilcclient-1-1-2.dll"
     Delete "$INSTDIR\libxml2.dll"
     Delete "$INSTDIR\nspr4.dll"
     Delete "$INSTDIR\nss3.dll"
     Delete "$INSTDIR\nssckbi.dll"
+    Delete "$INSTDIR\pidgin.dll"
     Delete "$INSTDIR\pidgin.exe"
-    Delete "$INSTDIR\pidgin.dll"
     Delete "$INSTDIR\plc4.dll"
     Delete "$INSTDIR\plds4.dll"
-    Delete "$INSTDIR\libsilc-1-1-2.dll"
-    Delete "$INSTDIR\libsilcclient-1-1-2.dll"
     Delete "$INSTDIR\smime3.dll"
     Delete "$INSTDIR\softokn3.dll"
     Delete "$INSTDIR\ssl3.dll"