changeset 25766:72165febf9fd

propagate from branch 'im.pidgin.pidgin' (head d6e38b24a5b289e3e7632def307f1d98b177d697) to branch 'im.pidgin.cpw.malu.xmpp.ibb_ft' (head ac44ee4c333e475418df55a6a57e10023bb3c77e)
author Marcus Lundblad <ml@update.uu.se>
date Wed, 07 Jan 2009 22:04:33 +0000
parents 86d7cabab362 (current diff) 06ab3599f0db (diff)
children 930e58241014
files
diffstat 38 files changed, 281 insertions(+), 333 deletions(-) [+]
line wrap: on
line diff
--- a/COPYRIGHT	Sun Jan 04 23:49:43 2009 +0000
+++ b/COPYRIGHT	Wed Jan 07 22:04:33 2009 +0000
@@ -212,6 +212,7 @@
 John Kelm
 Jochen Kemnade
 Akuke Kok
+Kir Kolyshkin
 Konstantin Korikov
 Cole Kowalski
 Matt Kramer
--- a/ChangeLog	Sun Jan 04 23:49:43 2009 +0000
+++ b/ChangeLog	Wed Jan 07 22:04:33 2009 +0000
@@ -15,6 +15,8 @@
 	XMPP:
 	* Support for XEP-0191 blocking.  (Vijay Raghunathan)
 	* Don't put SASL PLAIN or IQ Auth passwords in debug logs. (Paul Aurich)
+	* Fix removal of avatars (both PEP and vCard), we weren't removing
+	  them correctly before. (Paul Aurich)
 
 	Pidgin:
 	* Fix a crash in the Add Account dialog when changing protocols under
@@ -22,6 +24,7 @@
 
 	Finch:
 	* Redirect stderr outputs to the debug window.
+	* Fix rebinding actions with the arrow-keys and tab.
 
 version 2.5.3 (12/20/2008):
 	libpurple:
--- a/ChangeLog.API	Sun Jan 04 23:49:43 2009 +0000
+++ b/ChangeLog.API	Wed Jan 07 22:04:33 2009 +0000
@@ -1,5 +1,21 @@
 Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
 
+version 2.5.4 (??/??/????):
+	perl:
+		Changed:
+		* Purple::PluginPref->get_bounds no longer takes two integer
+		  arguments it now returns two integers.
+
+		Removed:
+		* Removed a handful of string-related utility functions that
+		  can generally be better handled with perl's built-in string
+		  functions rather than using pidgin's:
+			* Purple::Util::strcasereplace
+			* Purple::Util::strcasestr
+			* Purple::Util::strreplace
+			* Purple::Util::str_strip_char
+			* Purple::Util::chrreplace
+
 version 2.5.3 (12/20/2008):
 	libpurple
 		Changed:
--- a/configure.ac	Sun Jan 04 23:49:43 2009 +0000
+++ b/configure.ac	Wed Jan 07 22:04:33 2009 +0000
@@ -2285,6 +2285,30 @@
         AC_DEFINE(HAVE_TM_GMTOFF, 1, [Define if you have a tm_gmtoff member in struct tm])
 fi
 
+AC_CACHE_CHECK([whether va_lists can be copied by value], ac_cv_va_val_copy,[
+	AC_TRY_RUN([#include <stdarg.h>
+#include <stdlib.h>
+	void f (int i, ...) {
+	va_list args1, args2;
+	va_start (args1, i);
+	args2 = args1;
+	if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
+	  exit (1);
+	va_end (args1); va_end (args2);
+	}
+	int main() {
+	  f (0, 42);
+	  return 0;
+	}],
+	[ac_cv_va_val_copy=yes],
+	[ac_cv_va_val_copy=no],
+	[ac_cv_va_val_copy=yes])
+])
+
+if test "x$ac_cv_va_val_copy" = "xno"; then
+	AC_DEFINE(VA_COPY_AS_ARRAY, 1, ['va_lists' cannot be copied as values])
+fi
+
 dnl #######################################################################
 dnl # Check for check
 dnl #######################################################################
--- a/doc/Makefile.am	Sun Jan 04 23:49:43 2009 +0000
+++ b/doc/Makefile.am	Wed Jan 07 22:04:33 2009 +0000
@@ -1,4 +1,12 @@
-man_MANS = pidgin.1 finch.1
+man_MANS =
+
+if ENABLE_GTK
+man_MANS += pidgin.1
+endif
+
+if ENABLE_GNT
+man_MANS += finch.1
+endif
 
 EXTRA_DIST = \
 	C-HOWTO.dox \
--- a/finch/libgnt/gntkeys.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/finch/libgnt/gntkeys.c	Wed Jan 07 22:04:33 2009 +0000
@@ -131,7 +131,7 @@
 				code[ind] = (c ? 1 : 'a') + ch;
 				INSERT_COMB(str, code);
 			}
-			if (c == 0) {
+			if (c == 0 && a) {
 				INSERT_COMB("tab", "\033\t");
 				INSERT_COMB_CODE("up", "\033", GNT_KEY_UP);
 				INSERT_COMB_CODE("down", "\033", GNT_KEY_DOWN);
--- a/finch/libgnt/gntmain.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/finch/libgnt/gntmain.c	Wed Jan 07 22:04:33 2009 +0000
@@ -21,7 +21,7 @@
  */
 
 #define _GNU_SOURCE
-#if (defined(__APPLE__) || defined(__unix__)) && !defined(__FreeBSD__)
+#if (defined(__APPLE__) || defined(__unix__)) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
 #define _XOPEN_SOURCE_EXTENDED
 #endif
 
--- a/finch/libgnt/gnttree.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/finch/libgnt/gnttree.c	Wed Jan 07 22:04:33 2009 +0000
@@ -518,6 +518,7 @@
 
 		if (row == tree->current)
 		{
+			attr |= A_BOLD;
 			if (gnt_widget_has_focus(widget))
 				attr |= gnt_color_pair(GNT_COLOR_HIGHLIGHT);
 			else
--- a/finch/libgnt/gntwindow.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/finch/libgnt/gntwindow.c	Wed Jan 07 22:04:33 2009 +0000
@@ -49,7 +49,16 @@
 {
 	GntWindow *win = GNT_WINDOW(bind);
 	if (win->menu) {
-		gnt_screen_menu_show(win->menu);
+		GntMenu *menu = win->menu;
+
+		gnt_screen_menu_show(menu);
+		if (menu->type == GNT_MENU_TOPLEVEL) {
+			GntMenuItem *item;
+			item = g_list_nth_data(menu->list, menu->selected);
+			if (item && gnt_menuitem_get_submenu(item)) {
+				gnt_widget_activate(GNT_WIDGET(menu));
+			}
+		}
 		return TRUE;
 	}
 	return FALSE;
--- a/finch/libgnt/gntwm.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/finch/libgnt/gntwm.c	Wed Jan 07 22:04:33 2009 +0000
@@ -26,7 +26,7 @@
 #include <Python.h>
 #else
 #define _GNU_SOURCE
-#if (defined(__APPLE__) || defined(__unix__)) && !defined(__FreeBSD__)
+#if (defined(__APPLE__) || defined(__unix__)) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
 #define _XOPEN_SOURCE_EXTENDED
 #endif
 #endif
--- a/finch/libgnt/wms/irssi.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/finch/libgnt/wms/irssi.c	Wed Jan 07 22:04:33 2009 +0000
@@ -71,7 +71,12 @@
 	width = (getmaxx(stdscr) - irssi->buddylistwidth) / irssi->horiz;
 	height = (getmaxy(stdscr) - 1) / irssi->vert;
 
-	rx = irssi->buddylistwidth;
+	if (width) {
+		rx = irssi->buddylistwidth;
+	} else {
+		rx = 0;
+		width = getmaxx(stdscr) / irssi->horiz;
+	}
 	if (hor)
 		rx += hor * width;
 	if (rx)
@@ -234,7 +239,7 @@
 	height = (getmaxy(stdscr) - 1) / irssi->vert;
 
 	if (h)
-		*h = (x - irssi->buddylistwidth) / width;
+		*h = width ? (x - irssi->buddylistwidth) / width : x / (getmaxx(stdscr) / irssi->horiz);
 	if (v)
 		*v = y / height;
 }
@@ -278,6 +283,7 @@
 {
 	int vert, hor;
 	int x, y, w, h;
+	const char *name;
 
 	if (!GNT_IS_WINDOW(widget))
 		return;
@@ -286,10 +292,13 @@
 		return;
 	}
 
-	find_window_position(irssi, widget, &hor, &vert);
-	get_xywh_for_frame(irssi, hor, vert, &x, &y, &w, &h);
-	gnt_wm_move_window(GNT_WM(irssi), widget, x, y);
-	gnt_wm_resize_window(GNT_WM(irssi), widget, w, h);
+	name = gnt_widget_get_name(widget);
+	if (name && strstr(name, "conversation-window")) {
+		find_window_position(irssi, widget, &hor, &vert);
+		get_xywh_for_frame(irssi, hor, vert, &x, &y, &w, &h);
+		gnt_wm_move_window(GNT_WM(irssi), widget, x, y);
+		gnt_wm_resize_window(GNT_WM(irssi), widget, w, h);
+	}
 }
 
 static void
--- a/libpurple/dbus-server.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/dbus-server.c	Wed Jan 07 22:04:33 2009 +0000
@@ -803,6 +803,9 @@
 void
 purple_dbus_init(void)
 {
+	if (g_thread_supported())
+		dbus_g_thread_init();
+
 	purple_dbus_init_ids();
 
 	g_free(init_error);
--- a/libpurple/dnsquery.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/dnsquery.c	Wed Jan 07 22:04:33 2009 +0000
@@ -274,7 +274,6 @@
 			res = res->ai_next;
 		}
 		freeaddrinfo(tmp);
-		write_to_parent(child_out, &zero, sizeof(zero));
 #else
 		if (!inet_aton(dns_params.hostname, &sin.sin_addr)) {
 			struct hostent *hp;
@@ -292,11 +291,12 @@
 			sin.sin_family = AF_INET;
 
 		sin.sin_port = htons(dns_params.port);
-		write_to_parent(child_out, &zero, sizeof(zero));
+		rc = 0;
+		write_to_parent(child_out, &rc, sizeof(rc));
 		write_to_parent(child_out, &addrlen, sizeof(addrlen));
 		write_to_parent(child_out, &sin, addrlen);
+#endif
 		write_to_parent(child_out, &zero, sizeof(zero));
-#endif
 		dns_params.hostname[0] = '\0';
 	}
 
--- a/libpurple/ft.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/ft.c	Wed Jan 07 22:04:33 2009 +0000
@@ -700,7 +700,7 @@
 			msg = g_strdup_printf(_("Transfer of file %s complete"),
 								purple_xfer_get_filename(xfer));
 		else
-			msg = g_strdup_printf(_("File transfer complete"));
+			msg = g_strdup(_("File transfer complete"));
 		purple_xfer_conversation_write(xfer, msg, FALSE);
 		g_free(msg);
 	}
@@ -1140,7 +1140,7 @@
 	}
 	else
 	{
-		msg = g_strdup_printf(_("File transfer cancelled"));
+		msg = g_strdup(_("File transfer cancelled"));
 	}
 	purple_xfer_conversation_write(xfer, msg, FALSE);
 	g_free(msg);
--- a/libpurple/plugin.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/plugin.c	Wed Jan 07 22:04:33 2009 +0000
@@ -374,7 +374,7 @@
 	 */
 	if (plugin->info->id == NULL || *plugin->info->id == '\0')
 	{
-		plugin->error = g_strdup_printf(_("This plugin has not defined an ID."));
+		plugin->error = g_strdup(_("This plugin has not defined an ID."));
 		purple_debug_error("plugins", "%s is not loadable: info->id is not defined.\n", plugin->path);
 		plugin->unloadable = TRUE;
 		return plugin;
--- a/libpurple/plugins/perl/common/PluginPref.xs	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/plugins/perl/common/PluginPref.xs	Wed Jan 07 22:04:33 2009 +0000
@@ -70,10 +70,16 @@
 
 
 void
-purple_plugin_pref_get_bounds(pref, min, max)
+purple_plugin_pref_get_bounds(pref, OUTLIST int min, OUTLIST int max)
 	Purple::PluginPref pref
-	int *min
-	int *max
+	# According to the perlxs manual page we shouldn't need to specify a
+	# prototype here because "[p]arameters preceded by OUTLIST keyword do
+	# not appear in the usage signature of the generated Perl function."
+	# however that appears to only work for the usage error message and
+	# not for the call to newXSproto. Since I can't find any documentation
+	# for newXSproto at the moment I have no idea if that matters so
+	# override the prototype here.
+	PROTOTYPE: $
 
 void
 purple_plugin_pref_get_choices(pref)
--- a/libpurple/plugins/perl/common/Util.xs	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/plugins/perl/common/Util.xs	Wed Jan 07 22:04:33 2009 +0000
@@ -99,27 +99,10 @@
 	const char *program
 
 gchar_own *
-purple_strcasereplace(string, delimiter, replacement)
-	const char *string
-	const char *delimiter
-	const char *replacement
-
-const char *
-purple_strcasestr(haystack, needle)
-	const char *haystack
-	const char *needle
-
-gchar_own *
 purple_strdup_withhtml(src)
 	const gchar *src
 
 gchar_own *
-purple_strreplace(string, delimiter, replacement)
-	const char *string
-	const char *delimiter
-	const char *replacement
-
-gchar_own *
 purple_text_strip_mnemonic(in)
 	const char *in
 
@@ -356,10 +339,6 @@
 purple_str_size_to_units(size)
 	size_t size
 
-void
-purple_str_strip_char(IN_OUT char str, thechar)
-	char thechar
-
 time_t
 purple_str_to_time(timestamp, utc = FALSE, tm = NULL, OUTLIST long tz_off, OUTLIST const char *rest)
 	const char *timestamp
@@ -512,11 +491,6 @@
 	const char *artist
 	const char *album
 
-void
-purple_util_chrreplace(IN_OUT char string, delimiter, replacement)
-	char delimiter
-	char replacement
-
 gchar_own*
 purple_util_format_song_info(title, artist, album, unused)
 	const char* title
--- a/libpurple/plugins/perl/perl-handlers.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/plugins/perl/perl-handlers.c	Wed Jan 07 22:04:33 2009 +0000
@@ -289,14 +289,18 @@
 	PUSHMARK(sp);
 
 	purple_signal_get_values(handler->instance, handler->signal,
-	                       &ret_value, &value_count, &values);
+	                         &ret_value, &value_count, &values);
 
 	sv_args   = g_new(SV *,    value_count);
 	copy_args = g_new(void **, value_count);
 
 	for (i = 0; i < value_count; i++) {
 		sv_args[i] = purple_perl_sv_from_vargs(values[i],
+#ifdef VA_COPY_AS_ARRAY
+		                                       args,
+#else
 		                                       (va_list*)&args,
+#endif
 		                                       &copy_args[i]);
 
 		XPUSHs(sv_args[i]);
--- a/libpurple/protocols/jabber/buddy.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/protocols/jabber/buddy.c	Wed Jan 07 22:04:33 2009 +0000
@@ -459,7 +459,10 @@
 
 		avatar_data = purple_imgstore_get_data(img);
 		avatar_len = purple_imgstore_get_size(img);
-		/* have to get rid of the old PHOTO if it exists */
+		/* Get rid of an old PHOTO if one exists.
+		 * TODO: This may want to be modified to remove all old PHOTO
+		 * children, at the moment some people have managed to get
+		 * multiple PHOTO entries in their vCard. */
 		if((photo = xmlnode_get_child(vc_node, "PHOTO"))) {
 			xmlnode_free(photo);
 		}
@@ -473,6 +476,12 @@
 
 		xmlnode_insert_data(binval, enc, -1);
 		g_free(enc);
+	} else if (vc_node) {
+		xmlnode *photo;
+		/* TODO: Remove all PHOTO children? (see above note) */
+		if ((photo = xmlnode_get_child(vc_node, "PHOTO"))) {
+			xmlnode_free(photo);
+		}
 	}
 
 	if (vc_node != NULL) {
@@ -578,32 +587,30 @@
 				jabber_pep_publish((JabberStream*)gc->proto_data, publish);
 				
 				g_free(hash);
-			} else { /* if(img) */
-				/* remove the metadata */
-				xmlnode *metadata, *item;
-				xmlnode *publish = xmlnode_new("publish");
-				xmlnode_set_attrib(publish,"node",AVATARNAMESPACEMETA);
-				
-				item = xmlnode_new_child(publish, "item");
-				
-				metadata = xmlnode_new_child(item, "metadata");
-				xmlnode_set_namespace(metadata,AVATARNAMESPACEMETA);
-				
-				xmlnode_new_child(metadata, "stop");
-				
-				/* publish the metadata */
-				jabber_pep_publish((JabberStream*)gc->proto_data, publish);
+			} else {
+				purple_debug_error("jabber", "jabber_set_buddy_icon received non-png data");
 			}
 		} else {
-			purple_debug(PURPLE_DEBUG_ERROR, "jabber",
-						 "jabber_set_buddy_icon received non-png data");
+			/* remove the metadata */
+			xmlnode *metadata, *item;
+			xmlnode *publish = xmlnode_new("publish");
+			xmlnode_set_attrib(publish,"node",AVATARNAMESPACEMETA);
+
+			item = xmlnode_new_child(publish, "item");
+
+			metadata = xmlnode_new_child(item, "metadata");
+			xmlnode_set_namespace(metadata,AVATARNAMESPACEMETA);
+
+			xmlnode_new_child(metadata, "stop");
+
+			/* publish the metadata */
+			jabber_pep_publish((JabberStream*)gc->proto_data, publish);
 		}
 	}
 
-	/* even when the image is not png, we can still publish the vCard, since this
-	   one doesn't require a specific image type */
-
-	/* publish vCard for those poor older clients */
+	/* vCard avatars do not have an image type requirement so update our
+	 * vCard avatar regardless of image type for those poor older clients
+	 */
 	jabber_set_info(gc, purple_account_get_user_info(gc->account));
 
 	gpresence = purple_account_get_presence(gc->account);
--- a/libpurple/protocols/jabber/parser.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/protocols/jabber/parser.c	Wed Jan 07 22:04:33 2009 +0000
@@ -234,12 +234,22 @@
 	} else if ((ret = xmlParseChunk(js->context, buf, len, 0)) != XML_ERR_OK) {
 		xmlError *err = xmlCtxtGetLastError(js->context);
 
-		purple_debug_error("jabber", "xmlParseChunk returned error %i\n", ret);
-
-		if (err->level == XML_ERR_FATAL) {
-			purple_connection_error_reason (js->gc,
-				PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
-				_("XML Parse error"));
+		switch (err->level) {
+			case XML_ERR_NONE:
+				purple_debug_info("jabber", "xmlParseChunk returned info %i\n", ret);
+				break;
+			case XML_ERR_WARNING:
+				purple_debug_warning("jabber", "xmlParseChunk returned warning %i\n", ret);
+				break;
+			case XML_ERR_ERROR:
+				purple_debug_error("jabber", "xmlParseChunk returned error %i\n", ret);
+				break;
+			case XML_ERR_FATAL:
+				purple_debug_error("jabber", "xmlParseChunk returned fatal %i\n", ret);
+				purple_connection_error_reason (js->gc,
+				                                PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
+				                                _("XML Parse error"));
+				break;
 		}
 	}
 }
--- a/libpurple/protocols/myspace/myspace.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/protocols/myspace/myspace.c	Wed Jan 07 22:04:33 2009 +0000
@@ -533,7 +533,7 @@
 
 	guchar hash_pw[HASH_SIZE];
 	guchar key[HASH_SIZE];
-	gchar *password_utf16le, *password_utf8_lc;
+	gchar *password_truncated, *password_utf16le, *password_utf8_lc;
 	GString *data;
 	guchar *data_out;
 	size_t data_out_len;
@@ -548,10 +548,19 @@
 	g_return_val_if_fail(password != NULL, NULL);
 	g_return_val_if_fail(response_len != NULL, NULL);
 
+	/*
+	 * Truncate password to 10 characters.  Their "change password"
+	 * web page doesn't let you enter more than 10 characters, but you
+	 * can enter more than 10 when logging in on myspace.com and they
+	 * truncate it.
+	 */
+	password_truncated = g_strndup(password, 10);
+
 	/* Convert password to lowercase (required for passwords containing
 	 * uppercase characters). MySpace passwords are lowercase,
 	 * see ticket #2066. */
-	password_utf8_lc = g_utf8_strdown(password, -1);
+	password_utf8_lc = g_utf8_strdown(password_truncated, -1);
+	g_free(password_truncated);
 
 	/* Convert ASCII password to UTF16 little endian */
 	purple_debug_info("msim", "converting password to UTF-16LE\n");
@@ -560,8 +569,6 @@
 			&conv_bytes_read, &conv_bytes_written, &conv_error);
 	g_free(password_utf8_lc);
 
-	g_return_val_if_fail(conv_bytes_read == strlen(password), NULL);
-
 	if (conv_error != NULL) {
 		purple_debug_error("msim",
 				"g_convert password UTF8->UTF16LE failed: %s",
@@ -2876,10 +2883,9 @@
 	}
 
 	/* Strip spaces. */
-	for (i=0, j=0; normalized[j]; i++, j++) {
-		while (normalized[j] == ' ')
-			j++;
-		normalized[i] = normalized[j];
+	for (i=0, j=0; normalized[j]; j++) {
+		if (normalized[j] != ' ')
+			normalized[i++] = normalized[j];
 	}
 	normalized[i] = '\0';
 
--- a/libpurple/protocols/novell/novell.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/protocols/novell/novell.c	Wed Jan 07 22:04:33 2009 +0000
@@ -2519,8 +2519,8 @@
 	/* The conference was not found, must be closed */
 	chat = purple_find_chat(gc, id);
 	if (chat) {
-		str = g_strdup_printf(_("This conference has been closed."
-								" No more messages can be sent."));
+		str = g_strdup(_("This conference has been closed."
+						 " No more messages can be sent."));
 		purple_conversation_write(chat, NULL, str, PURPLE_MESSAGE_SYSTEM, time(NULL));
 		g_free(str);
 	}
--- a/libpurple/protocols/oscar/oscar.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/protocols/oscar/oscar.c	Wed Jan 07 22:04:33 2009 +0000
@@ -739,21 +739,21 @@
 static char *oscar_icqstatus(int state) {
 	/* Make a cute little string that shows the status of the dude or dudet */
 	if (state & AIM_ICQ_STATE_CHAT)
-		return g_strdup_printf(_("Free For Chat"));
+		return g_strdup(_("Free For Chat"));
 	else if (state & AIM_ICQ_STATE_DND)
-		return g_strdup_printf(_("Do Not Disturb"));
+		return g_strdup(_("Do Not Disturb"));
 	else if (state & AIM_ICQ_STATE_OUT)
-		return g_strdup_printf(_("Not Available"));
+		return g_strdup(_("Not Available"));
 	else if (state & AIM_ICQ_STATE_BUSY)
-		return g_strdup_printf(_("Occupied"));
+		return g_strdup(_("Occupied"));
 	else if (state & AIM_ICQ_STATE_AWAY)
-		return g_strdup_printf(_("Away"));
+		return g_strdup(_("Away"));
 	else if (state & AIM_ICQ_STATE_WEBAWARE)
-		return g_strdup_printf(_("Web Aware"));
+		return g_strdup(_("Web Aware"));
 	else if (state & AIM_ICQ_STATE_INVISIBLE)
-		return g_strdup_printf(_("Invisible"));
+		return g_strdup(_("Invisible"));
 	else
-		return g_strdup_printf(_("Online"));
+		return g_strdup(_("Online"));
 }
 
 static void
--- a/libpurple/protocols/oscar/peer.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/protocols/oscar/peer.c	Wed Jan 07 22:04:33 2009 +0000
@@ -859,7 +859,7 @@
 		{
 			gchar *tmp;
 			PurpleConversation *conv;
-			tmp = g_strdup_printf(_("Attempting to connect via proxy server."));
+			tmp = g_strdup(_("Attempting to connect via proxy server."));
 			conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn);
 			purple_conversation_write(conv, NULL, tmp,
 					PURPLE_MESSAGE_SYSTEM, time(NULL));
--- a/libpurple/protocols/qq/im.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/protocols/qq/im.c	Wed Jan 07 22:04:33 2009 +0000
@@ -467,7 +467,10 @@
 	/* qq_show_packet("text", (guint8 *)text, strlen(text)); */
 	g_return_val_if_fail(text != NULL && strlen(text) != 0, g_strdup(""));
 
-	segments = g_strsplit_set(text, "\x14\x15", 0);
+	while ((cur = strchr(text, '\x14')) != NULL)
+		*cur = '\x15';
+
+	segments = g_strsplit(text, "\x15", 0);
 	if(segments == NULL) {
 		return g_strdup("");
 	}
--- a/libpurple/protocols/qq/qq_network.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/protocols/qq/qq_network.c	Wed Jan 07 22:04:33 2009 +0000
@@ -214,7 +214,7 @@
 		qd->connect_retry = QQ_CONNECT_MAX;
 	}
 
-	segments = g_strsplit_set(qd->curr_server, ":", 0);
+	segments = g_strsplit(qd->curr_server, ":", 0);
 	tmp_server = g_strdup(segments[0]);
 	if (NULL != segments[1]) {
 		port = atoi(segments[1]);
--- a/libpurple/protocols/qq/qq_process.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/protocols/qq/qq_process.c	Wed Jan 07 22:04:33 2009 +0000
@@ -435,8 +435,8 @@
 static void process_server_msg(PurpleConnection *gc, guint8 *data, gint data_len, guint16 seq)
 {
 	qq_data *qd;
-	guint8 *data_str;
-	gchar **segments;
+	guint8 *data_str, i = 0;
+	gchar **segments, **seg;
 	gchar *funct_str, *from, *to;
 	gint bytes, funct;
 
@@ -448,9 +448,11 @@
 	g_memmove(data_str, data, data_len);
 	data_str[data_len] = 0x00;
 
-	segments = g_strsplit_set((gchar *) data_str, "\x1f", 0);
+	segments = g_strsplit((gchar *) data_str, "\x1f", 0);
 	g_return_if_fail(segments != NULL);
-	if (g_strv_length(segments) < 3) {
+	for (seg = segments; *seg != NULL; seg++)
+		i++;
+	if (i < 3) {
 		purple_debug_warning("QQ", "Server message segments is less than 3\n");
 		g_strfreev(segments);
 		return;
--- a/libpurple/protocols/qq/utils.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/protocols/qq/utils.c	Wed Jan 07 22:04:33 2009 +0000
@@ -95,8 +95,8 @@
 gchar **split_data(guint8 *data, gint len, const gchar *delimit, gint expected_fields)
 {
 	guint8 *input;
-	gchar **segments;
-	gint count, j;
+	gchar **segments, **seg;
+	gint count = 0, j;
 
 	g_return_val_if_fail(data != NULL && len != 0 && delimit != 0, NULL);
 
@@ -106,11 +106,12 @@
 	g_memmove(input, data, len);
 	input[len] = 0x00;
 
-	segments = g_strsplit_set((gchar *) input, delimit, 0);
+	segments = g_strsplit((gchar *) input, delimit, 0);
 	if (expected_fields <= 0)
 		return segments;
 
-	count = g_strv_length(segments);
+	for (seg = segments; *seg != NULL; seg++)
+		count++;
 	if (count < expected_fields) {	/* not enough fields */
 		purple_debug_error("QQ", "Less fields %d then %d\n", count, expected_fields);
 		return NULL;
--- a/libpurple/protocols/sametime/Makefile.am	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/protocols/sametime/Makefile.am	Wed Jan 07 22:04:33 2009 +0000
@@ -8,24 +8,22 @@
 SAMETIMESOURCES = sametime.c
 
 AM_CFLAGS = \
-	$(st) \
-	-DG_LOG_DOMAIN=\"sametime\"
+	$(st)
 
 if STATIC_SAMETIME
 
 st = -DPURPLE_STATIC_PRPL
 noinst_LTLIBRARIES     = libsametime.la
-libsametime_la_SOURCES = $(SAMETIMESOURCES)
 libsametime_la_CFLAGS  = $(AM_CFLAGS)
 
 else
 
 st =
 pkg_LTLIBRARIES     = libsametime.la
-libsametime_la_SOURCES = $(SAMETIMESOURCES)
 
 endif
 
+libsametime_la_SOURCES = $(SAMETIMESOURCES)
 libsametime_la_LDFLAGS = -module -avoid-version
 libsametime_la_LIBADD = $(GLIB_LIBS) $(MEANWHILE_LIBS)
 
@@ -34,5 +32,6 @@
 	-I$(top_builddir)/libpurple \
 	$(DEBUG_CFLAGS) \
 	$(GLIB_CFLAGS) \
-	$(MEANWHILE_CFLAGS)
+	$(MEANWHILE_CFLAGS) \
+	-DG_LOG_DOMAIN=\"sametime\"
 
--- a/libpurple/protocols/sametime/Makefile.mingw	Sun Jan 04 23:49:43 2009 +0000
+++ b/libpurple/protocols/sametime/Makefile.mingw	Wed Jan 07 22:04:33 2009 +0000
@@ -21,6 +21,8 @@
   endif
 endif
 
+CFLAGS += -DG_LOG_DOMAIN=\"sametime\"
+
 ##
 ## INCLUDE PATHS
 ##
--- a/pidgin/plugins/notify.c	Sun Jan 04 23:49:43 2009 +0000
+++ b/pidgin/plugins/notify.c	Wed Jan 07 22:04:33 2009 +0000
@@ -555,9 +555,12 @@
 }
 
 static void
-handle_urgent(PidginWindow *win, gboolean set)
+handle_urgent(PidginWindow *purplewin, gboolean set)
 {
-	pidgin_set_urgent(GTK_WINDOW(win->window), set);
+	g_return_if_fail(purplewin != NULL);
+	g_return_if_fail(purplewin->window != NULL);
+
+	pidgin_set_urgent(GTK_WINDOW(purplewin->window), set);
 }
 
 static void
--- a/pidgin/win32/nsis/translations/german.nsh	Sun Jan 04 23:49:43 2009 +0000
+++ b/pidgin/win32/nsis/translations/german.nsh	Wed Jan 07 22:04:33 2009 +0000
@@ -5,8 +5,8 @@
 ;;  German language strings for the Windows Pidgin NSIS installer.
 ;;  Windows Code page: 1252
 ;;
-;;  Author: Bjoern Voigt <bjoern@cs.tu-berlin.de>, 2007.
-;;  Version 6
+;;  Author: Bjoern Voigt <bjoern@cs.tu-berlin.de>, 2008.
+;;  Version 3
 ;;
  
 ; Startup checks
@@ -33,7 +33,7 @@
  
 ; GTK+ Directory Page
 !define GTK_UPGRADE_PROMPT			"Eine alte Version der GTK+ Runtime wurde gefunden. Möchten Sie aktualisieren?$\rHinweis: $(^Name) funktioniert evtl. nicht, wenn Sie nicht aktualisieren."
-!define GTK_WINDOWS_INCOMPATIBLE		"Windows 95/98/Me sind inkompatibel zu GTK+ 2.8.0 oder neuer.  GTK+ ${GTK_INSTALL_VERSION} wird nicht installiert.$\rWenn Sie nicht GTK+ ${GTK_MIN_VERSION} oder neuer installiert haben, wird die Installation jetzt abgebrochent."
+!define GTK_WINDOWS_INCOMPATIBLE		"Windows 95/98/Me sind inkompatibel zu GTK+ 2.8.0 oder neuer.  GTK+ ${GTK_INSTALL_VERSION} wird nicht installiert.$\rWenn Sie nicht GTK+ ${GTK_MIN_VERSION} oder neuer installiert haben, wird die Installation jetzt abgebrochen."
  
 ; Installer Finish Page
 !define PIDGIN_FINISH_VISIT_WEB_SITE	"Besuchen Sie die Pidgin Webseite"
--- a/po/bn.po	Sun Jan 04 23:49:43 2009 +0000
+++ b/po/bn.po	Wed Jan 07 22:04:33 2009 +0000
@@ -1,14 +1,16 @@
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the GAIM package.
-# INDRANIL DAS GUPTA (ইনà§à¦¦à§à¦°à¦¨à§€à¦² দাশগà§à¦ªà§à¦¤) <indradg@l2c2.org>, 2005.
-# Samia Nimatullah <mailsamia2001@yahoo.com>, 2005.
-# Tisa Nafisa <tisa_nafisa@yahoo.com>, 2007.
-# Jamil Ahmed <jamil@bengalinux.org>, 2007.
-# Israt Jahan <israt@ankur.org.bd>, 2008.
+# Pidgin Bengali translations (bn_BD, bn_IN)
 #
-msgid ""
-msgstr ""
-"Project-Id-Version: GAIM 2.5.3\n"
+# Copyright (C) 2005 INDRANIL DAS GUPTA (ইনà§à¦¦à§à¦°à¦¨à§€à¦² দাশগà§à¦ªà§à¦¤) <indradg@l2c2.org>
+# Copyright (C) 2005 Samia Nimatullah <mailsamia2001@yahoo.com>
+# Copyright (C) 2007 Tisa Nafisa <tisa_nafisa@yahoo.com>
+# Copyright (C) 2007 Jamil Ahmed <jamil@bengalinux.org>
+# Copyright (C) 2008 Israt Jahan <israt@ankur.org.bd>
+#
+# This file is distributed under the same license as the Pidgin package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Pidgin 2.5.3\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2008-12-18 01:17-0800\n"
 "PO-Revision-Date: 2008-11-13 17:07+0600\n"
--- a/po/ca.po	Sun Jan 04 23:49:43 2009 +0000
+++ b/po/ca.po	Wed Jan 07 22:04:33 2009 +0000
@@ -33,8 +33,8 @@
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-19 17:53+0100\n"
-"PO-Revision-Date: 2008-12-20 17:15+0100\n"
+"POT-Creation-Date: 2009-01-05 01:42+0100\n"
+"PO-Revision-Date: 2009-01-05 20:36+0100\n"
 "Last-Translator: Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>\n"
 "Language-Team: Catalan <tradgnome@softcatala.net>\n"
 "MIME-Version: 1.0\n"
@@ -4196,6 +4196,9 @@
 msgid "Re-initializing Stream"
 msgstr "S'està reinicialitzant el flux"
 
+msgid "Server doesn't support blocking"
+msgstr "El servidor no permet blocar"
+
 msgid "Not Authorized"
 msgstr "No autoritzat"
 
@@ -4954,7 +4957,6 @@
 msgid "Passport account not yet verified"
 msgstr "El compte de passaport encara no està verificat"
 
-#, c-format
 msgid "Passport account suspended"
 msgstr "El compte de passaport s'ha suspès"
 
@@ -6576,12 +6578,10 @@
 msgstr "_D'acord"
 
 #, c-format
-msgid ""
-"You may be disconnected shortly.  You may want to use TOC until this is "
-"fixed.  Check %s for updates."
-msgstr ""
-"Se us pot desconnectar d'aquí a poc temps. Si voleu, podeu emprar TOC fins "
-"que això es resolgui. Comproveu si hi ha actualitzacions a %s."
+msgid "You may be disconnected shortly.  If so, check %s for updates."
+msgstr ""
+"Pot ser que es desconnecti d'aquí a poc. Si això passés, comproveu si hi ha "
+"actualitzacions a %s."
 
 # FIXME: hash (josep)
 msgid "Unable to get a valid AIM login hash."
@@ -7535,13 +7535,11 @@
 msgid " TCP"
 msgstr " TCP"
 
-#, fuzzy
 msgid " FromMobile"
-msgstr "Mòbil"
-
-#, fuzzy
+msgstr " FromMobile"
+
 msgid " BindMobile"
-msgstr "Mòbil"
+msgstr " BindMobile"
 
 msgid " Video"
 msgstr " Vídeo"
@@ -9335,6 +9333,9 @@
 msgid "SIP usernames may not contain whitespaces or @ symbols"
 msgstr "Els noms d'usuari SIP no poden contenir espais en blanc ni @"
 
+msgid "SIP connect server not specified"
+msgstr "No s'ha especificat el servidor SIP al qual connectar-se"
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -14102,6 +14103,13 @@
 msgid "This plugin is useful for debbuging XMPP servers or clients."
 msgstr "Aquest connector és útil per a depurar servidors i clients XMPP."
 
+#~ msgid ""
+#~ "You may be disconnected shortly.  You may want to use TOC until this is "
+#~ "fixed.  Check %s for updates."
+#~ msgstr ""
+#~ "Se us pot desconnectar d'aquí a poc temps. Si voleu, podeu emprar TOC "
+#~ "fins que això es resolgui. Comproveu si hi ha actualitzacions a %s."
+
 #~ msgid "Connection to server lost (no data received within %d second)"
 #~ msgid_plural ""
 #~ "Connection to server lost (no data received within %d seconds)"
@@ -14748,9 +14756,6 @@
 #~ "Podeu obtenir la versió %s de:<br><a href=\"http://pidgin.im/\">http://"
 #~ "pidgin.im</a>."
 
-#~ msgid "WinGaim Options"
-#~ msgstr "Opcions del WinGaim"
-
 #~ msgid ""
 #~ "%d buddy from group %s was not removed because it belongs to an account "
 #~ "which is disabled or offline.  This buddy and the group were not "
@@ -16010,62 +16015,18 @@
 #~ msgid "Error communicating with Gadu-Gadu server"
 #~ msgstr "S'ha produït un error en comunicar amb el servidor Gadu-Gadu"
 
-#~ msgid ""
-#~ "Gaim was unable to complete your request due to a problem communicating "
-#~ "with the Gadu-Gadu HTTP server.  Please try again later."
-#~ msgstr ""
-#~ "El Gaim no ha pogut completar la vostra petició perquè hi ha hagut un "
-#~ "problema en la comunicació amb el servidor HTTP Gadu-Gadu. Torneu-ho a "
-#~ "intentar més tard."
-
 #~ msgid "Unable to import Gadu-Gadu buddy list"
 #~ msgstr "No s'ha pogut importar la llista d'amics de Gadu-Gadu"
 
-#~ msgid ""
-#~ "Gaim was unable to connect to the Gadu-Gadu buddy list server.  Please "
-#~ "try again later."
-#~ msgstr ""
-#~ "El Gaim no ha pogut connectar-se al servidor de llistes d'amics del Gadu-"
-#~ "Gadu. Torneu-ho a intentar més tard."
-
-#~ msgid ""
-#~ "Gaim was unable to connect to the buddy list server.  Please try again "
-#~ "later."
-#~ msgstr ""
-#~ "El Gaim no s'ha pogut connectar al servidor de llistes d'amics. Torneu-ho "
-#~ "a intentar més tard."
-
 #~ msgid "Unable to delete Gadu-Gadu buddy list"
 #~ msgstr "No s'ha pogut suprimir la llista d'amics de Gadu-Gadu"
 
 #~ msgid "Unable to access directory"
 #~ msgstr "No s'ha pogut accedir al directori"
 
-#~ msgid ""
-#~ "Gaim was unable to search the Directory because it was unable to connect "
-#~ "to the directory server.  Please try again later."
-#~ msgstr ""
-#~ "El Gaim no ha pogut cercar al directori perquè no s'hi ha pogut "
-#~ "connectar. Torneu-ho a intentar més tard."
-
-#~ msgid ""
-#~ "Gaim was unable to change your password due to an error connecting to the "
-#~ "Gadu-Gadu server.  Please try again later."
-#~ msgstr ""
-#~ "El Gaim no ha pogut canviar la contrasenya a causa d'un error mentre es "
-#~ "comunicava amb el servidor Gadu-Gadu. Torneu-ho a intentar més tard."
-
 #~ msgid "Unable to access user profile."
 #~ msgstr "No s'ha pogut accedir al perfil de l'usuari."
 
-#~ msgid ""
-#~ "Gaim was unable to access this user's profile due to an error connecting "
-#~ "to the directory server.  Please try again later."
-#~ msgstr ""
-#~ "El Gaim no ha pogut accedir al perfil de l'usuari atès que s'ha produït "
-#~ "un error en connectar-se al servidor de directori. Torneu-ho a intentar "
-#~ "més tard."
-
 #~ msgid "The user %s (%s%s%s%s%s) wants you to authorize them."
 #~ msgstr "L'usuari %s (%s%s%s%s%s) vol que l'autoritzeu."
 
@@ -16207,13 +16168,6 @@
 #~ msgid "/Buddies/Log Out"
 #~ msgstr "/Amics/Desconnecta"
 
-#~ msgid ""
-#~ "Gaim cannot send files over Yahoo! that are bigger than One Megabyte "
-#~ "(1,048,576 bytes)."
-#~ msgstr ""
-#~ "El Gaim no pot enviar fitxer a través de Yahoo! que siguin més grans d'un "
-#~ "Megabyte (1.048.576 bytes)."
-
 #~ msgid "Miscellaneous error"
 #~ msgstr "Error miscel·lani"
 
@@ -16241,12 +16195,6 @@
 #~ msgid "MSN error for account %s"
 #~ msgstr "S'ha produït un error MSN per al compte %s"
 
-#~ msgid "Moving Gaim Settings.."
-#~ msgstr "S'està movent les opcions del Gaim..."
-
-#~ msgid "Moving Gaim user settings to: "
-#~ msgstr "S'està movent les opcions d'usuaris del Gaim a: "
-
 #~ msgid "Notification"
 #~ msgstr "Notificació"
 
--- a/po/ca@valencia.po	Sun Jan 04 23:49:43 2009 +0000
+++ b/po/ca@valencia.po	Wed Jan 07 22:04:33 2009 +0000
@@ -34,7 +34,7 @@
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2008-12-19 17:53+0100\n"
-"PO-Revision-Date: 2008-12-20 17:15+0100\n"
+"PO-Revision-Date: 2009-01-05 20:36+0100\n"
 "Last-Translator: Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>\n"
 "Language-Team: Catalan <tradgnome@softcatala.net>\n"
 "MIME-Version: 1.0\n"
@@ -14739,9 +14739,6 @@
 #~ "Podeu obtenir la versió %s de:<br><a href=\"http://pidgin.im/\">http://"
 #~ "pidgin.im</a>."
 
-#~ msgid "WinGaim Options"
-#~ msgstr "Opcions del WinGaim"
-
 #~ msgid ""
 #~ "%d buddy from group %s was not removed because it belongs to an account "
 #~ "which is disabled or offline.  This buddy and the group were not "
@@ -16001,62 +15998,18 @@
 #~ msgid "Error communicating with Gadu-Gadu server"
 #~ msgstr "S'ha produït un error en comunicar amb el servidor Gadu-Gadu"
 
-#~ msgid ""
-#~ "Gaim was unable to complete your request due to a problem communicating "
-#~ "with the Gadu-Gadu HTTP server.  Please try again later."
-#~ msgstr ""
-#~ "El Gaim no ha pogut completar la vostra petició perquè hi ha hagut un "
-#~ "problema en la comunicació amb el servidor HTTP Gadu-Gadu. Torneu-ho a "
-#~ "intentar més tard."
-
 #~ msgid "Unable to import Gadu-Gadu buddy list"
 #~ msgstr "No s'ha pogut importar la llista d'amics de Gadu-Gadu"
 
-#~ msgid ""
-#~ "Gaim was unable to connect to the Gadu-Gadu buddy list server.  Please "
-#~ "try again later."
-#~ msgstr ""
-#~ "El Gaim no ha pogut connectar-se al servidor de llistes d'amics del Gadu-"
-#~ "Gadu. Torneu-ho a intentar més tard."
-
-#~ msgid ""
-#~ "Gaim was unable to connect to the buddy list server.  Please try again "
-#~ "later."
-#~ msgstr ""
-#~ "El Gaim no s'ha pogut connectar al servidor de llistes d'amics. Torneu-ho "
-#~ "a intentar més tard."
-
 #~ msgid "Unable to delete Gadu-Gadu buddy list"
 #~ msgstr "No s'ha pogut suprimir la llista d'amics de Gadu-Gadu"
 
 #~ msgid "Unable to access directory"
 #~ msgstr "No s'ha pogut accedir al directori"
 
-#~ msgid ""
-#~ "Gaim was unable to search the Directory because it was unable to connect "
-#~ "to the directory server.  Please try again later."
-#~ msgstr ""
-#~ "El Gaim no ha pogut cercar al directori perquè no s'hi ha pogut "
-#~ "connectar. Torneu-ho a intentar més tard."
-
-#~ msgid ""
-#~ "Gaim was unable to change your password due to an error connecting to the "
-#~ "Gadu-Gadu server.  Please try again later."
-#~ msgstr ""
-#~ "El Gaim no ha pogut canviar la contrasenya a causa d'un error mentre es "
-#~ "comunicava amb el servidor Gadu-Gadu. Torneu-ho a intentar més tard."
-
 #~ msgid "Unable to access user profile."
 #~ msgstr "No s'ha pogut accedir al perfil de l'usuari."
 
-#~ msgid ""
-#~ "Gaim was unable to access this user's profile due to an error connecting "
-#~ "to the directory server.  Please try again later."
-#~ msgstr ""
-#~ "El Gaim no ha pogut accedir al perfil de l'usuari atès que s'ha produït "
-#~ "un error en connectar-se al servidor de directori. Torneu-ho a intentar "
-#~ "més tard."
-
 #~ msgid "The user %s (%s%s%s%s%s) wants you to authorize them."
 #~ msgstr "L'usuari %s (%s%s%s%s%s) vol que l'autoritzeu."
 
@@ -16198,13 +16151,6 @@
 #~ msgid "/Buddies/Log Out"
 #~ msgstr "/Amics/Desconnecta"
 
-#~ msgid ""
-#~ "Gaim cannot send files over Yahoo! that are bigger than One Megabyte "
-#~ "(1,048,576 bytes)."
-#~ msgstr ""
-#~ "El Gaim no pot enviar fitxer a través de Yahoo! que siguin més grans d'un "
-#~ "Megabyte (1.048.576 bytes)."
-
 #~ msgid "Miscellaneous error"
 #~ msgstr "Error miscel·lani"
 
@@ -16232,12 +16178,6 @@
 #~ msgid "MSN error for account %s"
 #~ msgstr "S'ha produït un error MSN per al compte %s"
 
-#~ msgid "Moving Gaim Settings.."
-#~ msgstr "S'està movent les opcions del Gaim..."
-
-#~ msgid "Moving Gaim user settings to: "
-#~ msgstr "S'està movent les opcions d'usuaris del Gaim a: "
-
 #~ msgid "Notification"
 #~ msgstr "Notificació"
 
--- a/po/de.po	Sun Jan 04 23:49:43 2009 +0000
+++ b/po/de.po	Wed Jan 07 22:04:33 2009 +0000
@@ -11,8 +11,8 @@
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-01-04 12:29+0100\n"
-"PO-Revision-Date: 2009-01-04 12:29+0100\n"
+"POT-Creation-Date: 2009-01-05 17:34+0100\n"
+"PO-Revision-Date: 2009-01-05 17:34+0100\n"
 "Last-Translator: Jochen Kemnade <jochenkemnade@web.de>\n"
 "Language-Team: German <de@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -4168,6 +4168,9 @@
 msgid "Re-initializing Stream"
 msgstr "Initialisiere Stream nochmal"
 
+msgid "Server doesn't support blocking"
+msgstr "Server unterstützt kein Blockieren"
+
 msgid "Not Authorized"
 msgstr "Nicht autorisiert"
 
@@ -6487,12 +6490,10 @@
 msgstr "_OK"
 
 #, c-format
-msgid ""
-"You may be disconnected shortly.  You may want to use TOC until this is "
-"fixed.  Check %s for updates."
-msgstr ""
-"Die Verbindung kann schnell unterbrochen werden. Vielleicht wollen Sie TOC "
-"benutzen bis dieser Fehler behoben wurde. Suchen Sie auf %s nach Updates."
+msgid "You may be disconnected shortly.  If so, check %s for updates."
+msgstr ""
+"Sie werden eventuell gleich abgemeldet. In diesem Fall, überprüfen Sie %s "
+"auf Updates."
 
 msgid "Unable to get a valid AIM login hash."
 msgstr "Konnte keinen gültigen AIM Login-Hash bekommen."
--- a/po/fi.po	Sun Jan 04 23:49:43 2009 +0000
+++ b/po/fi.po	Wed Jan 07 22:04:33 2009 +0000
@@ -10,8 +10,8 @@
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-16 00:12+0200\n"
-"PO-Revision-Date: 2008-12-16 00:16+0200\n"
+"POT-Creation-Date: 2009-01-07 13:30+0200\n"
+"PO-Revision-Date: 2009-01-07 13:30+0200\n"
 "Last-Translator: Timo Jyrinki <timo.jyrinki@iki.fi>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
@@ -1486,7 +1486,6 @@
 "Kun uusi keskustelu aloitetaan, tämä liitännäinen näyttää edellisen "
 "keskustelun keskusteluikkunassa."
 
-#, c-format
 msgid "Online"
 msgstr "Linjoilla"
 
@@ -1917,7 +1916,6 @@
 msgid "Transfer of file %s complete"
 msgstr "Tiedoston %s siirto valmis"
 
-#, c-format
 msgid "File transfer complete"
 msgstr "Tiedostonsiirto valmis"
 
@@ -1925,7 +1923,6 @@
 msgid "You canceled the transfer of %s"
 msgstr "Peruutit tiedoston %s siirron"
 
-#, c-format
 msgid "File transfer cancelled"
 msgstr "Tiedostonsiirto peruutettu"
 
@@ -2132,7 +2129,6 @@
 msgid "You are using %s, but this plugin requires %s."
 msgstr "Käytät: %s, mutta tämä liitännäinen vaatii: %s."
 
-#, c-format
 msgid "This plugin has not defined an ID."
 msgstr "Tämä liitännäinen ei ole määritellyt tunnistetta (ID)."
 
@@ -3024,7 +3020,6 @@
 #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
 #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
 #. Away stuff
-#, c-format
 msgid "Away"
 msgstr "Poissa"
 
@@ -3905,7 +3900,6 @@
 msgid "Extended Away"
 msgstr "Pidennetty poissaolo"
 
-#, c-format
 msgid "Do Not Disturb"
 msgstr "Älä häiritse"
 
@@ -4139,6 +4133,9 @@
 msgid "Re-initializing Stream"
 msgstr "Uudelleenalustetaan datavirtaa"
 
+msgid "Server doesn't support blocking"
+msgstr "Palvelin ei tue estämistä"
+
 msgid "Not Authorized"
 msgstr "Ei valtuuksia"
 
@@ -4891,7 +4888,6 @@
 msgid "Passport account not yet verified"
 msgstr "Passport-tiliä ei ole verifioitu"
 
-#, c-format
 msgid "Passport account suspended"
 msgstr "Passport-tili jäädytetty"
 
@@ -6093,7 +6089,6 @@
 msgid "Error. SSL support is not installed."
 msgstr "Virhe. SSL-tuki ei ole asennettu."
 
-#, c-format
 msgid "This conference has been closed. No more messages can be sent."
 msgstr "Tämä konferenssi on suljettu. Uusia viestejä ei voi lähettää."
 
@@ -6359,23 +6354,18 @@
 msgid "Screen Sharing"
 msgstr "Näytön jakaminen"
 
-#, c-format
 msgid "Free For Chat"
 msgstr "Vapaana keskusteluun"
 
-#, c-format
 msgid "Not Available"
 msgstr "Ei tavoitettavissa"
 
-#, c-format
 msgid "Occupied"
 msgstr "Varattu"
 
-#, c-format
 msgid "Web Aware"
 msgstr "Net-tietoinen"
 
-#, c-format
 msgid "Invisible"
 msgstr "Näkymätön"
 
@@ -6477,19 +6467,16 @@
 msgstr "_OK"
 
 #, c-format
-msgid ""
-"You may be disconnected shortly.  You may want to use TOC until this is "
-"fixed.  Check %s for updates."
-msgstr ""
-"Yhteytesi saatetaan katkaista kohta. Saatat haluta käyttää TOC-"
-"yhteyskäytäntöä kunnes tämä on korjattu. Tarkista päivitykset: %s"
+msgid "You may be disconnected shortly.  If so, check %s for updates."
+msgstr ""
+"Yhteytesi saattaa katketa kohta. Jos niin käy, tarkista päivitykset: %s."
 
 msgid "Unable to get a valid AIM login hash."
 msgstr "Kelvollista AIM-sisäänkirjautumistiivistettä ei saatu."
 
 #, c-format
 msgid "You may be disconnected shortly.  Check %s for updates."
-msgstr "Yhteytesi saatetaan katkaista kohta. Tarkista päivitykset: %s."
+msgstr "Yhteytesi saattaa katketa kohta. Tarkista päivitykset: %s."
 
 msgid "Unable to get a valid login hash."
 msgstr "Kelvollista sisäänkirjautumistiivistettä ei saatu."
@@ -7047,7 +7034,6 @@
 msgid "Attempting to connect to %s:%hu."
 msgstr "Yritetään yhdistää kohteeseen %s:%hu."
 
-#, c-format
 msgid "Attempting to connect via proxy server."
 msgstr "Yritetään yhdistämistä välipalvelimen kautta."
 
@@ -9209,6 +9195,9 @@
 msgid "SIP usernames may not contain whitespaces or @ symbols"
 msgstr "SIP-käyttäjänimissä ei tule olla välilyöntejä tai @-merkkejä"
 
+msgid "SIP connect server not specified"
+msgstr "SIP-yhteyspalvelinta ei määritelty"
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -13897,6 +13886,13 @@
 "Tätä liitännäistä voidaan käyttää XMPP-palvelimien tai -asiakasohjelmien "
 "virheenjäljitykseen."
 
+#~ msgid ""
+#~ "You may be disconnected shortly.  You may want to use TOC until this is "
+#~ "fixed.  Check %s for updates."
+#~ msgstr ""
+#~ "Yhteytesi saatetaan katkaista kohta. Saatat haluta käyttää TOC-"
+#~ "yhteyskäytäntöä kunnes tämä on korjattu. Tarkista päivitykset: %s"
+
 #~ msgid "Connection to server lost (no data received within %d second)"
 #~ msgid_plural ""
 #~ "Connection to server lost (no data received within %d seconds)"
--- a/po/fr.po	Sun Jan 04 23:49:43 2009 +0000
+++ b/po/fr.po	Wed Jan 07 22:04:33 2009 +0000
@@ -4,7 +4,7 @@
 # Copyright (C) 2002, Stéphane Pontier <stephane.pontier@free.fr>
 # Copyright (C) 2002, Stéphane Wirtel <stephane.wirtel@belgacom.net>
 # Copyright (C) 2002, Loïc Jeannin <loic.jeannin@free.fr>
-# Copyright (C) 2002-2008, Éric Boumaour <zongo_fr@users.sourceforge.net>
+# Copyright (C) 2002-2009, Éric Boumaour <zongo_fr@users.sourceforge.net>
 #
 # This file is distributed under the same license as the Pidgin package.
 #
@@ -21,8 +21,8 @@
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-16 10:10+0100\n"
-"PO-Revision-Date: 2008-12-16 10:09+0100\n"
+"POT-Creation-Date: 2009-01-05 10:49+0100\n"
+"PO-Revision-Date: 2009-01-05 10:48+0100\n"
 "Last-Translator: Éric Boumaour <zongo_fr@users.sourceforge.net>\n"
 "Language-Team: fr <fr@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -4191,6 +4191,9 @@
 msgid "Re-initializing Stream"
 msgstr "Réinitialisation du flux"
 
+msgid "Server doesn't support blocking"
+msgstr "Le serveur ne supporte pas le blocage"
+
 msgid "Not Authorized"
 msgstr "Non autorisé"
 
@@ -4947,7 +4950,6 @@
 msgid "Passport account not yet verified"
 msgstr "Le compte Passeport n'est pas encore validé"
 
-#, c-format
 msgid "Passport account suspended"
 msgstr "Le compte Passeport est suspendu"
 
@@ -6548,12 +6550,10 @@
 msgstr "_OK"
 
 #, c-format
-msgid ""
-"You may be disconnected shortly.  You may want to use TOC until this is "
-"fixed.  Check %s for updates."
-msgstr ""
-"Vous risquez d'être déconnecté sous peu. Veuillez essayer d'utiliser TOC "
-"entre-temps si cela arrive. Visitez %s pour plus d'informations."
+msgid "You may be disconnected shortly.  If so, check %s for updates."
+msgstr ""
+"Vous risquez d'être déconnecté sous peu. Si c'est le cas, consultez %s pour "
+"plus d'informations."
 
 msgid "Unable to get a valid AIM login hash."
 msgstr "Impossible de récupérer un code de connexion AIM valide."
@@ -9310,6 +9310,9 @@
 msgstr ""
 "Les noms d'utilisateur SIP ne peuvent pas avoir d'espace ou de symbole @."
 
+msgid "SIP connect server not specified"
+msgstr "Serveur de connexion SIP non spécifié"
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -14053,42 +14056,9 @@
 msgid "This plugin is useful for debbuging XMPP servers or clients."
 msgstr "Ce plugin est utile pour débugger les clients ou serveurs XMPP."
 
-#~ msgid "Connection to server lost (no data received within %d second)"
-#~ msgid_plural ""
-#~ "Connection to server lost (no data received within %d seconds)"
-#~ msgstr[0] ""
-#~ "Connexion avec le serveur perdue (aucune donnée depuis %d seconde)."
-#~ msgstr[1] ""
-#~ "Connexion avec le serveur perdue (aucune donnée depuis %d secondes)."
-
-#~ msgid "%d needs Q&A"
-#~ msgstr "%d a besoin d'une réponse"
-
-#~ msgid "Add buddy Q&A"
-#~ msgstr "Ajouter une réponse de contact"
-
-#~ msgid "Can not decrypt get server reply"
-#~ msgstr "Impossible de récupérer la réponse du serveur"
-
-#~ msgid "Keep alive error"
-#~ msgstr "Erreur de Keep alive"
-
-#~ msgid ""
-#~ "Lost connection with server:\n"
-#~ "%d, %s"
-#~ msgstr ""
-#~ "Connexion perdue avec le serveur :\n"
-#~ "%d, %s"
-
-#~ msgid "Connecting server ..."
-#~ msgstr "Connexion au serveur..."
-
 #~ msgid "Failed to send IM."
 #~ msgstr "Impossible d'envoyer le message."
 
-#~ msgid "Not a member of room \"%s\"\n"
-#~ msgstr "Vous n'êtes pas membre du groupe « %s ».\n"
-
 #~ msgid "User information for %s unavailable"
 #~ msgstr "Les informations sur %s ne sont pas disponibles"