changeset 15885:c6e563dfaa7a

More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
author Stu Tomlinson <stu@nosnilmot.com>
date Sat, 24 Mar 2007 17:51:05 +0000
parents bfa907029bfc
children 53f9f4ebea7a
files Makefile.am configure.ac finch/Makefile.am finch/libgnt/wms/Makefile.am finch/plugins/Makefile.am gaim.pc.in gaim.spec.in libpurple/Makefile.am libpurple/gaim-client-example.c libpurple/gaim-client.c libpurple/gaim-notifications-example libpurple/gaim-remote libpurple/gaim-send libpurple/gaim-send-async libpurple/gaim-url-handler libpurple/gconf/gaim.schemas.in libpurple/plugins/perl/Makefile.am libpurple/plugins/perl/libgaimperl.c libpurple/plugins/perl/libpurpleperl.c libpurple/protocols/silc/Makefile.am libpurple/purple-client-example.c libpurple/purple-client.c libpurple/purple-notifications-example libpurple/purple-remote libpurple/purple-send libpurple/purple-send-async libpurple/purple-uninstalled.pc.in libpurple/purple-url-handler libpurple/tests/Makefile.am pidgin.spec.in pidgin/Makefile.am pidgin/gtkconv.c pidgin/gtkdialogs.c pidgin/gtkdnd-hints.c pidgin/pidgin-uninstalled.pc.in pidgin/pidgin.pc.in pidgin/pixmaps/buddy_icons/qq/Makefile.am pidgin/pixmaps/emblems/16/scalable/Makefile.am pidgin/pixmaps/emotes/none/Makefile.am pidgin/pixmaps/status/default/Makefile.am pidgin/plugins/gevolution/Makefile.am
diffstat 41 files changed, 1405 insertions(+), 1378 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile.am	Sat Mar 24 17:07:17 2007 +0000
+++ b/Makefile.am	Sat Mar 24 17:51:05 2007 +0000
@@ -11,10 +11,11 @@
 		README.dbus \
 		README.mingw \
 		gaim.pc.in \
-		gaim.spec.in \
+		gaim-uninstalled.pc.in \
 		gaim.apspec.in \
+		gaim.service.in \
+		pidgin.spec.in \
 		pidgin.desktop.in \
-		gaim.service.in \
 		intltool-extract.in \
 		intltool-merge.in \
 		intltool-update.in \
@@ -23,16 +24,13 @@
 
 noinst_HEADERS = config.h
 
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = gaim.pc
-
 if ENABLE_DBUS
 dbus_servicedir=$(DBUS_SERVICES_DIR)
 dbus_service_DATA=gaim.service
 endif
 
-dist-hook: gaim.spec
-	cp gaim.spec $(distdir)
+dist-hook: pidgin.spec
+	cp pidgin.spec $(distdir)
 	rm $(distdir)/config.h
 
 distcheck-hook: libpurple/plugins/perl/common/Gaim.pm gtk/plugins/perl/common/GtkUI.pm
--- a/configure.ac	Sat Mar 24 17:07:17 2007 +0000
+++ b/configure.ac	Sat Mar 24 17:51:05 2007 +0000
@@ -1,5 +1,5 @@
 dnl Process this file with autoconf to produce a configure script.
-AC_INIT([pidgin], [2.0.0beta7devel], [gaim-devel@lists.sourceforge.net])
+AC_INIT([pidgin], [2.0.0beta7devel], [devel@pidgin.im])
 AC_CANONICAL_SYSTEM
 AM_CONFIG_HEADER(config.h)
 AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
@@ -700,14 +700,14 @@
 extern_init=
 load_proto=
 for i in $STATIC_PRPLS ; do
-	dnl Ugly special case for "libsilcgaim.a":
+	dnl Ugly special case for "libsilcpurple.a":
 	if test "x$i" = "xsilc"; then
-		STATIC_LINK_LIBS="$STATIC_LINK_LIBS protocols/$i/lib${i}gaim.a"
+		STATIC_LINK_LIBS="$STATIC_LINK_LIBS protocols/$i/lib${i}purple.a"
 	else
 		STATIC_LINK_LIBS="$STATIC_LINK_LIBS protocols/$i/lib$i.a"
 	fi
-	extern_init="$extern_init extern gboolean gaim_init_${i}_plugin();"
-	load_proto="$load_proto gaim_init_${i}_plugin();"
+	extern_init="$extern_init extern gboolean purple_init_${i}_plugin();"
+	load_proto="$load_proto purple_init_${i}_plugin();"
 	case $i in
 		bonjour)	static_bonjour=yes ;;
 		gg)			static_gg=yes ;;
@@ -935,7 +935,7 @@
 dnl it is now accessible through D-Bus.
 
 dnl Python is only required if --enable-dbus is used, and only for
-dnl the build process to generate the code, not for running gaim.
+dnl the build process to generate the code, not for running pidgin.
 dnl This autogenerated code is system-independent, so in principle we
 dnl can generate all of it before shipping.  But I thought adding
 dnl auto-generated stuff to the repository is inelegant.
@@ -1145,7 +1145,7 @@
 
 		AC_ARG_WITH(perl-lib,
 		[AC_HELP_STRING([--with-perl-lib=[site|vendor|DIR]],
-			[specify where to install the Perl libraries for gaim. Default is site.])],
+			[specify where to install the Perl libraries for pidgin. Default is site.])],
 		[
 			if test "x$withval" = xsite; then
 				PERL_MM_PARAMS=""
@@ -1890,7 +1890,7 @@
 AC_ARG_ENABLE(fatal-asserts, [AC_HELP_STRING([--enable-fatal-asserts],
 	[make assertions fatal (useful for debugging)])], , enable_fatal_asserts=no)
 if test "x$enable_fatal_asserts" = "xyes" ; then
-	AC_DEFINE(GAIM_FATAL_ASSERTS, 1, [Define to make assertions fatal (useful for debugging).])
+	AC_DEFINE(PURPLE_FATAL_ASSERTS, 1, [Define to make assertions fatal (useful for debugging).])
 fi
 
 AC_OUTPUT([Makefile
@@ -1903,12 +1903,13 @@
 		   m4macros/Makefile
 		   pidgin/Makefile
 		   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/Makefile
 		   pidgin/pixmaps/dialogs/16/Makefile
 		   pidgin/pixmaps/dialogs/16/scalable/Makefile
 		   pidgin/pixmaps/dialogs/64/Makefile
@@ -1919,7 +1920,7 @@
 		   pidgin/pixmaps/emotes/Makefile
 		   pidgin/pixmaps/emotes/default/Makefile
 		   pidgin/pixmaps/emotes/default/22/Makefile
-		   pidgin/pixmaps/emotes/default/22/scalable/Makefile	
+		   pidgin/pixmaps/emotes/default/22/scalable/Makefile
 		   pidgin/pixmaps/emotes/none/Makefile
 		   pidgin/pixmaps/protocols/Makefile
 		   pidgin/pixmaps/protocols/16/Makefile
@@ -1958,6 +1959,7 @@
 		   libpurple/example/Makefile
 		   libpurple/gconf/Makefile
 		   libpurple/purple.pc
+		   libpurple/purple-uninstalled.pc
 		   libpurple/plugins/Makefile
 		   libpurple/plugins/mono/Makefile
 		   libpurple/plugins/mono/api/Makefile
@@ -1989,9 +1991,7 @@
 		   finch/libgnt/wms/Makefile
 		   finch/plugins/Makefile
 		   po/Makefile.in
-		   gaim.pc
-		   gaim-uninstalled.pc
-		   gaim.spec
+		   pidgin.spec
 		  ])
 
 echo
@@ -2030,7 +2030,7 @@
 echo Print debugging messages...... : $enable_debug
 echo Assertions are fatal.......... : $enable_fatal_asserts
 echo
-eval eval echo Gaim will be installed in $bindir.
+eval eval echo Pidgin will be installed in $bindir.
 if test "x$gaimpath" != "x" ; then
 	echo Warning: You have an old copy of gaim at $gaimpath.
 fi
--- a/finch/Makefile.am	Sat Mar 24 17:07:17 2007 +0000
+++ b/finch/Makefile.am	Sat Mar 24 17:51:05 2007 +0000
@@ -43,7 +43,7 @@
 	gntstatus.h \
 	gntui.h
 
-finchincludedir=$(includedir)/gaim/gnt
+finchincludedir=$(includedir)/finch
 finchinclude_HEADERS = \
 	$(finch_headers)
 
@@ -63,7 +63,7 @@
 	-DSTANDALONE \
 	-DBR_PTHREADS=0 \
 	-DDATADIR=\"$(datadir)\" \
-	-DLIBDIR=\"$(libdir)/gaim/\" \
+	-DLIBDIR=\"$(libdir)/finch/\" \
 	-DLOCALEDIR=\"$(datadir)/locale\" \
 	-DSYSCONFDIR=\"$(sysconfdir)\" \
 	-I$(top_srcdir)/libpurple/ \
--- a/finch/libgnt/wms/Makefile.am	Sat Mar 24 17:07:17 2007 +0000
+++ b/finch/libgnt/wms/Makefile.am	Sat Mar 24 17:51:05 2007 +0000
@@ -3,7 +3,7 @@
 plugin_LTLIBRARIES = \
 	s.la
 
-plugindir = $(libdir)/gaim
+plugindir = $(libdir)/finch
 
 s_la_SOURCES = s.c
 s_la_LIBADD =  \
--- a/finch/plugins/Makefile.am	Sat Mar 24 17:07:17 2007 +0000
+++ b/finch/plugins/Makefile.am	Sat Mar 24 17:51:05 2007 +0000
@@ -9,7 +9,7 @@
 	gnthistory.la \
 	gntlastlog.la
 
-plugindir = $(libdir)/gaim
+plugindir = $(libdir)/finch
 
 gntgf_la_SOURCES      = gntgf.c
 gnthistory_la_SOURCES = gnthistory.c
--- a/gaim.pc.in	Sat Mar 24 17:07:17 2007 +0000
+++ b/gaim.pc.in	Sat Mar 24 17:51:05 2007 +0000
@@ -5,10 +5,10 @@
 datarootdir=@datarootdir@
 datadir=@datadir@
 sysconfdir=@sysconfdir@
- 
+
 Name: Gaim
 Description: Gaim is a GTK2-based instant messenger application.
 Version: @VERSION@
 Requires: glib-2.0
-Cflags: -I${includedir}/gaim
-Libs: -L${libdir} -lgaim
+Cflags: -I${includedir}/libpurple
+Libs: -L${libdir} -lpurple
--- a/gaim.spec.in	Sat Mar 24 17:07:17 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,492 +0,0 @@
-# Older RPM doesn't define these by default
-%{!?perl_vendorlib: %define perl_vendorlib %(eval "`%{__perl} -V:installvendorlib`"; echo $installvendorlib)}
-%{!?perl_vendorarch: %define perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch)}
-%{!?perl_archlib: %define perl_archlib %(eval "`%{__perl} -V:installarchlib`"; echo $installarchlib)}
-
-# When not doing betas comment this out
-# NOTE: %defines in spec files are evaluated in comments so the correct
-#       way to comment it out is to replace the % with #
-#define beta 7
-
-%if 0%{?beta}
-%define gaimver %(echo "@VERSION@"|sed -e 's/dev//; s/beta.*//')
-%else
-%define gaimver @VERSION@
-%endif
-
-Summary:    A GTK+ based multiprotocol instant messaging client
-Name:       @PACKAGE@
-Version:    %gaimver
-Release:    0%{?beta:.beta%{beta}}
-Epoch:      1
-License:    GPL
-Group:      Applications/Internet
-URL:        http://gaim.sourceforge.net/
-Packager:   %{packager}
-Source:     %{name}-@VERSION@.tar.bz2
-BuildRoot:  %{_tmppath}/%{name}-%{version}-root
-
-# Generic build requirements
-BuildRequires: libtool, pkgconfig, intltool, gettext, libxml2-devel
-%{?_with_avahi:BuildRequires: avahi-compat-howl-devel}
-%{!?_without_gtkspell:BuildRequires: gtkspell-devel}
-%{?_with_howl:BuildRequires: howl-devel}
-%{?_with_meanwhile:BuildRequires: meanwhile-devel}
-%{?_with_mono:BuildRequires: mono-devel}
-%{?_with_sasl:BuildRequires: cyrus-sasl-devel >= 2}
-%{?_with_silc:BuildRequires: /usr/include/silc/silcclient.h}
-%{?_with_tcl:BuildRequires: tcl, tk, /usr/include/tcl.h}
-%{!?_without_text:BuildRequires: ncurses-devel}
-
-%if "%{_vendor}" == "suse"
-# For SuSE:
-BuildRequires: gnutls-devel
-%{?_with_dbus:BuildRequires: dbus-1-devel >= 0.35}
-%{!?_without_gstreamer:BuildRequires: gstreamer010-devel >= 0.10}
-%else
-%{?_with_dbus:BuildRequires: dbus-devel >= 0.35}
-%{!?_without_gstreamer:BuildRequires: gstreamer-devel >= 0.10}
-%endif
-
-# Mandrake 10.1 and lower || Mandrake 10.2 (and higher?)
-%if "%{_vendor}" == "MandrakeSoft" || "%{_vendor}" == "Mandrakesoft" || "%{_vendor}" == "Mandriva"
-# For Mandrake/Mandriva:
-BuildRequires: libgtk+2.0_0-devel, libnss3-devel, perl-devel
-Obsoletes:  libgaim-remote0
-%else
-# For SuSE, Red Hat, Fedora and others:
-BuildRequires: gtk2-devel
-%if "%{_vendor}" != "suse"
-# For Red Hat, Fedora and others:
-# let's assume RH & FC1 are the only brain-dead distros missing the
-# perl-XML-Parser dependency on intltool and that other RH/FC releases
-# don't care if we specify it here
-BuildRequires: perl-XML-Parser
-BuildRequires: mozilla-nss-devel
-%endif
-%endif
-
-# For some reason perl isn't always automatically detected as a requirement :(
-Requires: perl
-# Gadu-Gadu support was split out temporarily
-Provides: gaim-gadugadu = %{epoch}:%{version}-%{release}
-
-%package devel
-Summary:    Development headers, documentation, and libraries for Gaim.
-Group:      Applications/Internet
-Requires:   pkgconfig, gaim = %{epoch}:%{version}
-
-%if 0%{?_with_howl:1} || 0%{?_with_avahi:1}
-%package bonjour
-Summary:    Bonjour plugin for Gaim
-Group:      Applications/Internet
-Requires:   gaim = %{epoch}:%{version}
-%endif
-
-%if 0%{?_with_meanwhile:1}
-%package meanwhile
-Summary:    Lotus Sametime plugin for Gaim using the Meanwhile library
-Group:      Applications/Internet
-Requires:   gaim = %{epoch}:%{version}
-%endif
-
-%if 0%{?_with_mono:1}
-%package mono
-Summary:    Mono .NET plugin support for Gaim
-Group:      Applications/Internet
-Requires:   gaim = %{epoch}:%{version}
-%endif
-
-%if 0%{?_with_silc:1}
-%package silc
-Summary:    SILC (Secure Internet Live Conferencing) plugin for Gaim
-Group:      Applications/Internet
-Requires:   gaim = %{epoch}:%{version}
-%endif
-
-%if 0%{?_with_tcl:1}
-%package tcl
-Summary:    Tcl scripting support for Gaim
-Group:      Applications/Internet
-Requires:   gaim = %{epoch}:%{version}
-%endif
-
-%if 0%{!?_without_text:1}
-%package text
-Summary:    A text-based user interface for Gaim
-Group:      Applications/Internet
-Requires:   gaim = %{epoch}:%{version}
-%endif
-
-%description
-Gaim allows you to talk to anyone using a variety of messaging
-protocols including AIM, MSN, Yahoo!, Jabber, Bonjour, Gadu-Gadu,
-ICQ, IRC, Novell Groupwise, QQ, Lotus Sametime, SILC, Simple and
-Zephyr.  These protocols are implemented using a modular, easy to
-use design.  To use a protocol, just add an account using the
-account editor.
-
-Gaim supports many common features of other clients, as well as many
-unique features, such as perl scripting, TCL scripting and C plugins.
-
-Gaim is not affiliated with or endorsed by America Online, Inc.,
-Microsoft Corporation, Yahoo! Inc., or ICQ Inc.
-
-%description devel
-The gaim-devel package contains the header files, developer
-documentation, and libraries required for development of Gaim scripts
-and plugins.
-
-%if 0%{?_with_howl:1} || 0%{?_with_avahi:1}
-%description bonjour
-Bonjour plugin for Gaim.
-%endif
-
-%if 0%{?_with_meanwhile:1}
-%description meanwhile
-Lotus Sametime plugin for Gaim using the Meanwhile library.
-%endif
-
-%if 0%{?_with_mono:1}
-%description mono
-Mono plugin loader for Gaim.  This package will allow you to write or
-use Gaim plugins written in the .NET programming language.
-%endif
-
-%if 0%{?_with_silc:1}
-%description silc
-SILC (Secure Internet Live Conferencing) plugin for Gaim.
-%endif
-
-%if 0%{!?without_text:1}
-%description text
-A text-based user interface for Gaim.  This can be run from a
-standard text console or from a terminal within X Windows.  It
-uses ncurses and our homegrown gnt library for drawing windows
-and text.
-%endif
-
-%if 0%{?_with_tcl:1}
-%description tcl
-Tcl plugin loader for Gaim.  This package will allow you to write or
-use Gaim plugins written in the Tcl programming language.
-%endif
-
-%prep
-%setup -q -n %{name}-@VERSION@
-
-%build
-CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{_prefix} \
-                                    --bindir=%{_bindir} \
-                                    --datadir=%{_datadir} \
-                                    --includedir=%{_includedir} \
-                                    --libdir=%{_libdir} \
-                                    --mandir=%{_mandir} \
-                                    --sysconfdir=%{_sysconfdir} \
-                                    --disable-schemas-install \
-                                    %{!?_with_dbus:--disable-dbus} \
-                                    %{?_without_gstreamer:--disable-gstreamer} \
-                                    %{?_without_gtkspell:--disable-gtkspell} \
-                                    %{?_with_mono:--enable-mono} \
-                                    %{?_with_perlmakehack:--with-perl-lib=%{buildroot}%{_prefix}} \
-                                    %{!?_with_perlmakehack:--with-perl-lib=%{_prefix}} \
-                                    %{?_with_sasl:--enable-cyrus-sasl} \
-                                    %{?_with_silc:--with-silc-includes=%{_includedir}/silc} \
-                                    %{?_with_silc:--with-silc-libs=%{_libdir}/silc} \
-                                    %{!?_with_tcl:--disable-tcl} \
-                                    %{?_without_text:--disable-consoleui}
-
-make %{?_smp_mflags}
-
-%install
-rm -rf %{buildroot}
-%if 0%{?_with_perlmakehack:1}
-make prefix=%{buildroot}%{_prefix} bindir=%{buildroot}%{_bindir} \
-     datadir=%{buildroot}%{_datadir} includedir=%{buildroot}%{_includedir} \
-     libdir=%{buildroot}%{_libdir} mandir=%{buildroot}%{_mandir} \
-     sysconfdir=%{buildroot}%{_sysconfdir} \
-     install
-%else
-make DESTDIR=$RPM_BUILD_ROOT install
-%endif
-
-# Delete files that we don't want to put in any of the RPMs
-rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/*.la
-rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
-rm -f $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod
-find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} ';'
-find $RPM_BUILD_ROOT -type f -name '*.bs' -empty -exec rm -f {} ';'
-
-%if 0%{!?_with_howl:1} && 0%{!?_with_avahi:1}
-rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/libbonjour.so
-%endif
-
-%if 0%{!?_with_meanwhile:1}
-rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/libsametime.so
-%endif
-
-%if 0%{!?_with_mono:1}
-rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/mono.so
-rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/*.dll
-%endif
-
-%if 0%{!?_with_silc:1}
-rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/libsilcgaim.so
-%endif
-
-%if 0%{!?_with_tcl:1}
-rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/tcl.so
-%endif
-
-%if 0%{?_without_text:1}
-rm -f $RPM_BUILD_ROOT%{_mandir}/man1/gaim-text.*
-rm -f $RPM_BUILD_ROOT%{_bindir}/gaim-text
-rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/gntgf.so
-rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/gnthistory.so
-rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/s.so
-rm -f $RPM_BUILD_ROOT%{_libdir}/libgnt.so.*
-%endif
-
-%find_lang %{name}
-
-find $RPM_BUILD_ROOT%{_libdir}/gaim -xtype f -print | \
-        sed "s@^$RPM_BUILD_ROOT@@g" | \
-        grep -v /gntgf.so | \
-        grep -v /gnthistory.so | \
-        grep -v /libbonjour.so | \
-        grep -v /libsilcgaim.so | \
-        grep -v /libsametime.so | \
-        grep -v /mono.so | \
-        grep -v /s.so | \
-        grep -v /tcl.so | \
-        grep -v ".dll$" | \
-        grep -v ".tcl$" > %{name}-%{version}-coreplugins
-
-# files -f file can only take one filename :(
-cat %{name}.lang >> %{name}-%{version}-coreplugins
-
-%clean
-rm -rf %{buildroot}
-
-%pre
-if [ "$1" -gt 1 -a -n "`which gconftool-2 2>/dev/null`" ]; then
-    export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-    gconftool-2 --makefile-uninstall-rule \
-        %{_sysconfdir}/gconf/schemas/gaim.schemas >/dev/null || :
-    killall -HUP gconfd-2 || :
-fi
-
-%post
-if [ -n "`which gconftool-2 2>/dev/null`" ]; then
-    export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-    gconftool-2 --makefile-install-rule \
-        %{_sysconfdir}/gconf/schemas/gaim.schemas > /dev/null || :
-    killall -HUP gconfd-2 || :
-fi
-/sbin/ldconfig
-
-%preun
-if [ "$1" -eq 0 -a -n "`which gconftool-2 2>/dev/null`" ]; then
-    export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-    gconftool-2 --makefile-uninstall-rule \
-      %{_sysconfdir}/gconf/schemas/gaim.schemas > /dev/null || :
-    killall -HUP gconfd-2 || :
-fi
-
-%postun -p /sbin/ldconfig
-
-%files -f %{name}-%{version}-coreplugins
-%defattr(-, root, root)
-
-%doc AUTHORS
-%doc COPYING
-%doc COPYRIGHT
-%doc ChangeLog
-%doc NEWS
-%doc README
-%doc README.SVN
-%doc doc/FAQ
-%doc doc/the_penguin.txt
-%doc %{_mandir}/man1/gaim.*
-%doc %{_mandir}/man3*/*
-
-%dir %{_libdir}/gaim
-%attr(755, root, root) %{perl_vendorarch}/Gaim*
-%attr(755, root, root) %{perl_vendorarch}/auto/Gaim
-
-%{_bindir}/gaim
-%{_datadir}/pixmaps/*
-%dir %{_datadir}/sounds/gaim
-%{_datadir}/sounds/gaim/*
-%{_datadir}/applications/*
-%{_libdir}/libgaim.so.*
-%{_sysconfdir}/gconf/schemas/gaim.schemas
-
-%if 0%{?_with_dbus:1}
-%{_bindir}/gaim-client-example
-%{_bindir}/gaim-remote
-%{_bindir}/gaim-send
-%{_bindir}/gaim-send-async
-%{_bindir}/gaim-url-handler
-%{_libdir}/libgaim-client.so.*
-%{_datadir}/dbus-1/services/gaim.service
-%doc README.dbus
-%doc libgaim/gaim-notifications-example
-%endif
-
-%files devel
-%defattr(-, root, root)
-
-%doc ChangeLog.API
-%doc HACKING
-%doc PLUGIN_HOWTO
-%doc PROGRAMMING_NOTES
-
-%dir %{_includedir}/gaim
-%{_includedir}/gaim/*.h
-%dir %{_includedir}/gaim/gnt
-%{_includedir}/gaim/gnt/*.h
-%dir %{_includedir}/gnt
-%{_includedir}/gnt/*.h
-%{_libdir}/libgaim.so
-%{_libdir}/libgnt.so
-%{_libdir}/pkgconfig/gaim.pc
-%{_libdir}/pkgconfig/gnt.pc
-%{_datadir}/aclocal/gaim.m4
-%if 0%{?_with_dbus:1}
-%{_libdir}/libgaim-client.so
-%endif
-
-%if 0%{?_with_howl:1} || 0%{?_with_avahi:1}
-%files bonjour
-%defattr(-, root, root)
-
-%{_libdir}/gaim/libbonjour.*
-%endif
-
-%if 0%{?_with_meanwhile:1}
-%files meanwhile
-%defattr(-, root, root)
-
-%{_libdir}/gaim/libsametime.*
-%endif
-
-%if 0%{?_with_mono:1}
-%files mono
-%defattr(-, root, root)
-
-%{_libdir}/gaim/mono.so
-%{_libdir}/gaim/*.dll
-%endif
-
-%if 0%{?_with_silc:1}
-%files silc
-%defattr(-, root, root)
-
-%{_libdir}/gaim/libsilcgaim.*
-%endif
-
-%if 0%{?_with_tcl:1}
-%files tcl
-%defattr(-, root, root)
-
-%{_libdir}/gaim/tcl.so
-%endif
-
-%if 0%{!?_without_text:1}
-%files text
-%defattr(-, root, root)
-
-%doc %{_mandir}/man1/gaim-text.*
-%{_bindir}/gaim-text
-%{_libdir}/gaim/gntgf.so
-%{_libdir}/gaim/gnthistory.so
-%{_libdir}/gaim/s.so
-%{_libdir}/libgnt.so.*
-%endif
-
-%changelog
-* Sun Oct  1 2006 Stu Tomlinson <stu@nosnilmot.com>
-- We can build with internal gadu gadu again, so bring it back into the
-  main package
-- Deal with gconf schame uninstallation on package upgrade and removal
-
-* Sun Aug 20 2006 Stu Tomlinson <stu@nosnilmot.com>
-- Make the gstreamer-devel dependency overridable with '--without-gstreamer'
-  to allow building on older distributions without suitable gstreamer
-
-* Tue Aug 15 2006 Mark Doliner <thekingant@users.sourceforge.net>
-- Add a BuildRequire for gstreamer-devel
-- Remove the BuildRequires for audiofile-devel and libao-devel
-
-* Mon May 8 2006 Mark Doliner <thekingant@users.sourceforge.net>
-- Add --with avahi option to compile the gaim-bonjour package against
-  Avahi's Howl compatibility layer
-
-* Wed Mar 29 2006 Stu Tomlinson <stu@nosnilmot.com>
-- Source RPM uses tar.bz2 now to save space
-- Update BuildRequires for new intltool dependencies
-- Add a --with perlmakehack option to allow builds to succeed on RH9
-- Add a --with gadugadu to build (separate) gaim-gadugadu package
-
-* Sat Dec 17 2005 Stu Tomlinson <stu@nosnilmot.com>
-- Add support for beta versions so the subsequent releases are seen as newer
-  by RPM
-- Split of sametime support to gaim-meanwhile
-- Use make DESTDIR=... instead of overloading prefix etc. when installing
-- Default build to include cyrus-sasl support in Jabber
-- Add --with dbus to build with DBUS support
-
-* Sun Dec 04 2005 Christopher O'Brien <siege@preoccupied.net>
-- Added obsoletes gaim-meanwhile
-
-* Sun Oct 30 2005 Stu Tomlinson <stu@nosnilmot.com>
-- Add separate gaim-bonjour package if built with --with-howl
-- Add separate gaim-mono package if built with --with-mono
-- Exclude some unwanted perl files
-
-* Sat Aug 20 2005 Stu Tomlinson <stu@nosnilmot.com>
-- Include libgaimperl.so
-- Include gaim.m4 in gaim-devel
-
-* Thu Apr 28 2005 Stu Tomlinson <stu@nosnilmot.com>
-- Use perl_vendorlib & perl_archlib for better 64bit compat (Jeff Mahoney)
-- Clean up Requires, most should be auto-detected
-- Restore gtkspell-devel build requirement (and add --without gtkspell option)
-- Fix Tcl build requirements to work across more distros
-- Fix SILC build requirements to work across more distros
-
-* Mon Oct 11 2004 John Jolly <john.jolly@gmail.com>
-- Added if "%{_vendor}" == "suse" to handle GnuTLS libraries for SuSE
-
-* Sat Oct  2 2004 Stu Tomlinson <stu@nosnilmot.com>
-- If --with tcl or silc are not specified, make sure the plugins don't
-  exist to prevent RPM complaining about unpackaged files
-
-* Tue Jun 29 2004 Ethan Blanton <eblanton@cs.ohiou.edu>
-- Change Tcl to use --with tcl, the same as SILC, and build a gaim-tcl
-  package if specified.
-
-* Thu Jun 24 2004 Mark Doliner <thekingant@users.sourceforge.net>
-- Add --with silc rebuild option for compiling a separate gaim-silc
-  RPM containing the silc protocol plugin (Stu Tomlinson).
-
-* Wed Jun 23 2004 Ethan Blanton <eblanton@cs.ohiou.edu>
-- Moved gaim headers and a pkgconfig configuration file into the
-  gaim-devel RPM (Stu Tomlinson).
-
-* Thu Jan 15 2004 Ethan Blanton <eblanton@cs.ohiou.edu>
-- Removed the manual strip command, as it seems to be unwarranted if
-  the necessary programs are properly installed.  (For me, this was
-  elfutils.)
-
-* Sun Jul 20 2003 Bjoern Voigt <bjoern@cs.tu-berlin.de>
-- Added pkgconfig build dependency.
-- if "%{_vendor}" != "MandrakeSoft" now also works with rpm 3.x.
-- Added Gaim-specific directories to list of Gaim's files.
-
-* Wed Jul 16 2003 Ethan Blanton <eblanton@cs.ohiou.edu>
-- Complete spec file rewrite to take advantage of "new" RPM features
-  and make things prettier.
-- Use system-supplied %%{_prefix}, %%{_datadir}, etc. rather than
-  attempt to define our own.
--- a/libpurple/Makefile.am	Sat Mar 24 17:07:17 2007 +0000
+++ b/libpurple/Makefile.am	Sat Mar 24 17:51:05 2007 +0000
@@ -1,12 +1,13 @@
 EXTRA_DIST = \
 		dbus-analyze-functions.py \
 		dbus-analyze-types.py \
-		gaim-notifications-example \
-		gaim-remote \
-		gaim-send \
-		gaim-send-async \
-		gaim-url-handler \
+		purple-notifications-example \
+		purple-remote \
+		purple-send \
+		purple-send-async \
+		purple-url-handler \
 		purple.pc.in \
+		purple-uninstalled.pc.in \
 		Makefile.mingw \
 		win32/global.mak \
 		win32/libc_interface.c \
@@ -15,7 +16,7 @@
 		win32/libpurplerc.rc.in \
 		win32/rules.mak \
 		win32/targets.mak \
-		win32/wgaimerror.h \
+		win32/wpurpleerror.h \
 		win32/win32dep.c \
 		win32/giowin32.c \
 		win32/win32dep.h
@@ -29,7 +30,7 @@
 
 SUBDIRS = $(GCONF_DIR) plugins protocols tests . example
 
-gaim_coresources = \
+purple_coresources = \
 	account.c \
 	accountopt.c \
 	blist.c \
@@ -77,7 +78,7 @@
 	xmlnode.c \
 	whiteboard.c
 
-gaim_coreheaders = \
+purple_coreheaders = \
 	account.h \
 	accountopt.h \
 	blist.h \
@@ -137,9 +138,9 @@
 	dbus-types.h \
 	purple-client-bindings.c \
 	purple-client-bindings.h \
-	gaim.service
+	purple.service
 
-# gaim dbus server
+# purple dbus server
 
 dbus_sources  = dbus-server.c dbus-useful.c
 dbus_headers  = dbus-bindings.h dbus-purple.h dbus-server.h dbus-useful.h dbus-define-api.h
@@ -148,64 +149,64 @@
                 connection.h conversation.h core.h log.h prefs.h roomlist.h \
                 savedstatuses.h status.h server.h xmlnode.h
 
-gaim_build_coreheaders = $(addprefix $(srcdir)/, $(gaim_coreheaders))
+purple_build_coreheaders = $(addprefix $(srcdir)/, $(purple_coreheaders))
 dbus_build_exported = $(addprefix $(srcdir)/, $(dbus_exported))
 
-dbus-types.c: dbus-analyze-types.py $(gaim_coreheaders)
-	cat $(gaim_build_coreheaders) | $(PYTHON) $(srcdir)/dbus-analyze-types.py --pattern=PURPLE_DBUS_DEFINE_TYPE\(%s\) > $@
+dbus-types.c: dbus-analyze-types.py $(purple_coreheaders)
+	cat $(purple_build_coreheaders) | $(PYTHON) $(srcdir)/dbus-analyze-types.py --pattern=PURPLE_DBUS_DEFINE_TYPE\(%s\) > $@
 
 dbus-types.h: dbus-analyze-types.py $(dbus_coreheaders)
-	cat $(gaim_build_coreheaders) | $(PYTHON) $(srcdir)/dbus-analyze-types.py --pattern=PURPLE_DBUS_DECLARE_TYPE\(%s\) > $@
+	cat $(purple_build_coreheaders) | $(PYTHON) $(srcdir)/dbus-analyze-types.py --pattern=PURPLE_DBUS_DECLARE_TYPE\(%s\) > $@
 
 dbus-bindings.c: dbus-analyze-functions.py $(dbus_exported)
 	cat $(dbus_build_exported) | $(PYTHON) $(srcdir)/dbus-analyze-functions.py > $@
 
 dbus-server.$(OBJEXT): dbus-bindings.c dbus-types.c dbus-types.h
 dbus-server.lo: dbus-bindings.c dbus-types.c dbus-types.h
-$(libgaim_la_OBJECTS): dbus-types.h
+$(libpurple_la_OBJECTS): dbus-types.h
 
-# libgaim-client
+# libpurple-client
 
-libgaim_client_lib = libgaim-client.la
+libpurple_client_lib = libpurple-client.la
 
-libgaim_client_la_SOURCES = gaim-client.c gaim-client.h
+libpurple_client_la_SOURCES = purple-client.c purple-client.h
 
-libgaim_client_la_LIBADD = $(DBUS_LIBS)
+libpurple_client_la_LIBADD = $(DBUS_LIBS)
 
 purple-client-bindings.c: dbus-analyze-functions.py $(dbus_exported)
 	cat $(dbus_build_exported) | $(PYTHON) $(srcdir)/dbus-analyze-functions.py --client > $@
 
-purple-client-bindings.h: dbus-analyze-types.py dbus-analyze-functions.py $(gaim_coreheaders) $(dbus_exported)
-	cat $(gaim_build_coreheaders) | $(PYTHON) $(srcdir)/dbus-analyze-types.py --keyword=enum --verbatim > $@
+purple-client-bindings.h: dbus-analyze-types.py dbus-analyze-functions.py $(purple_coreheaders) $(dbus_exported)
+	cat $(purple_build_coreheaders) | $(PYTHON) $(srcdir)/dbus-analyze-types.py --keyword=enum --verbatim > $@
 	cat $(dbus_build_exported) | $(PYTHON) $(srcdir)/dbus-analyze-functions.py --client --headers >> $@
 
-$(libgaim_client_la_OBJECTS): purple-client-bindings.h purple-client-bindings.c
+$(libpurple_client_la_OBJECTS): purple-client-bindings.h purple-client-bindings.c
 
-# gaim-client-example
+# purple-client-example
 
-gaim_client_example_SOURCES = gaim-client-example.c
+purple_client_example_SOURCES = purple-client-example.c
 
-gaim_client_example_DEPENDENCIES = libgaim-client.la
+purple_client_example_DEPENDENCIES = libpurple-client.la
 
-gaim_client_example_LDADD = \
-	libgaim-client.la \
+purple_client_example_LDADD = \
+	libpurple-client.la \
 	$(GLIB_LIBS) \
 	$(DBUS_LIBS)
 
-bin_PROGRAMS = gaim-client-example
+bin_PROGRAMS = purple-client-example
 
-gaim-client-example.$(OBJEXT): purple-client-bindings.h
+purple-client-example.$(OBJEXT): purple-client-bindings.h
 
 # scripts
 
-bin_SCRIPTS = gaim-remote gaim-send gaim-send-async gaim-url-handler
+bin_SCRIPTS = purple-remote purple-send purple-send-async purple-url-handler
 
 endif
 
-lib_LTLIBRARIES = libpurple.la $(libgaim_client_lib)
+lib_LTLIBRARIES = libpurple.la $(libpurple_client_lib)
 
 libpurple_la_SOURCES = \
-	$(gaim_coresources) \
+	$(purple_coresources) \
 	$(dbus_sources)
 
 noinst_HEADERS= \
@@ -214,7 +215,7 @@
 
 libpurpleincludedir=$(includedir)/libpurple
 libpurpleinclude_HEADERS = \
-	$(gaim_coreheaders) \
+	$(purple_coreheaders) \
 	$(dbus_headers)
 
 libpurple_la_DEPENDENCIES = $(STATIC_LINK_LIBS)
--- a/libpurple/gaim-client-example.c	Sat Mar 24 17:07:17 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-#define DBUS_API_SUBJECT_TO_CHANGE
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "purple-client.h"
-
-/*
-   This example demonstrates how to use libpurple-client to communicate
-   with purple.  The names and signatures of functions provided by
-   libpurple-client are the same as those in purple.  However, all
-   structures (such as PurpleAccount) are opaque, that is, you can only
-   use pointer to them.  In fact, these pointers DO NOT actually point
-   to anything, they are just integer identifiers of assigned to these
-   structures by purple.  So NEVER try to dereference these pointers.
-   Integer ids as disguised as pointers to provide type checking and
-   prevent mistakes such as passing an id of PurpleAccount when an id of
-   PurpleBuddy is expected.  According to glib manual, this technique is
-   portable.
-*/
-
-int main (int argc, char **argv)
-{
-	GList *alist, *node;
-
-	purple_init();
-
-	alist = purple_accounts_get_all();
-	for (node = alist; node != NULL; node = node->next)
-	{
-		PurpleAccount *account = (PurpleAccount*) node->data;
-		char *name = purple_account_get_username(account);
-		g_print("Name: %s\n", name);
-		g_free(name);
-	}
-	g_list_free(alist);
-
-	return 0;
-}
--- a/libpurple/gaim-client.c	Sat Mar 24 17:07:17 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-#define DBUS_API_SUBJECT_TO_CHANGE
-
-#include <dbus/dbus-glib.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "dbus-purple.h"
-#include "purple-client-bindings.h"
-
-static DBusGConnection *bus;
-static DBusGProxy *purple_proxy;
-
-static GList *garray_int_to_glist(GArray *array)
-{
-	GList *list = NULL;
-	int i;
-
-	for (i = 0; i < array->len; i++)
-		list = g_list_append(list, GINT_TO_POINTER(g_array_index(array,gint,i)));
-
-	g_array_free(array, TRUE);
-	return list;
-}
-
-static GSList *garray_int_to_gslist(GArray *array)
-{
-	GSList *list = NULL;
-	int i;
-
-	for (i = 0; i < array->len; i++)
-		list = g_slist_append(list, GINT_TO_POINTER(g_array_index(array,gint,i)));
-
-	g_array_free(array, TRUE);
-	return list;
-}
-
-#include "purple-client-bindings.c"
-
-static void lose(const char *fmt, ...) G_GNUC_NORETURN G_GNUC_PRINTF (1, 2);
-static void lose_gerror(const char *prefix, GError *error) G_GNUC_NORETURN;
-
-static void
-lose(const char *str, ...)
-{
-	va_list args;
-
-	va_start(args, str);
-
-	vfprintf(stderr, str, args);
-	fputc('\n', stderr);
-
-	va_end(args);
-
-	exit(1);
-}
-
-static void
-lose_gerror(const char *prefix, GError *error)
-{
-	lose("%s: %s", prefix, error->message);
-}
-
-void purple_init(void)
-{
-	GError *error = NULL;
-
-	g_type_init ();
-
-	bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
-	if (!bus)
-		lose_gerror ("Couldn't connect to session bus", error);
-
-	purple_proxy = dbus_g_proxy_new_for_name (bus,
-					DBUS_SERVICE_PURPLE,
-					DBUS_PATH_PURPLE,
-					DBUS_INTERFACE_PURPLE);
-
-	if (!purple_proxy)
-		lose_gerror ("Couldn't connect to the Purple Service", error);
-}
-
--- a/libpurple/gaim-notifications-example	Sat Mar 24 17:07:17 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-#!/usr/bin/env python
-
-# This is a simple gaim notification server.
-# It shows notifications when your buddy signs on or you get an IM message.
-#
-# This script requires Python 2.4 and PyGTK bindings
-#
-# Note that all function names are resolved dynamically, no
-# gaim-specific library is needed.
-
-import dbus
-import dbus.glib
-import dbus.decorators
-import gobject
-import os
-
-def ensureimconversation(conversation, account, name):
-    if conversation != 0:
-        return conversation
-    else:
-        # 1 = GAIM_CONV_IM 
-        return gaim.GaimConversationNew(1, account, name)
-
-def receivedimmsg(account, name, message, conversation, flags):
-    buddy = gaim.GaimFindBuddy(account, name)
-    if buddy != 0:
-        alias = gaim.GaimBuddyGetAlias(buddy)
-    else:
-        alias = name
-
-    text = "%s says %s" % (alias, message)
-    code = os.spawnlp(os.P_WAIT, "xmessage", "xmessage", "-buttons",
-                      "'So what?','Show me',Close,Abuse", text)
-
-    if code == 101:                     # so what?
-        pass
-    else:
-        conversation = ensureimconversation(conversation, account, name)
-
-    if code == 102:                     # show me
-        window = gaim.GaimConversationGetWindow(conversation)
-        gaim.GaimConvWindowRaise(window)
-
-    if code == 103:                     # close 
-        gaim.GaimConversationDestroy(conversation)
-
-    if code == 104:                     # abuse
-        im = gaim.GaimConversationGetImData(conversation)
-        gaim.GaimConvImSend(im, "Go away you f...")
-                                 
-        
-def buddysignedon(buddyid):
-    alias = gaim.GaimBuddyGetAlias(buddyid)
-    text = "%s is online" % alias
-
-    code = os.spawnlp(os.P_WAIT, "xmessage", "xmessage", "-buttons",
-                      "'So what?','Let's talk'", text)
-
-    if code == 101:                     # so what?
-        pass
-
-    if code == 102:                     # talk
-        name = gaim.GaimBuddyGetName(buddyid)
-        account = gaim.GaimBuddyGetAccount(buddyid)
-        gaim.GaimConversationNew(1, account, name)
-    
-
-bus = dbus.SessionBus()
-obj = bus.get_object("net.sf.gaim.GaimService", "/net/sf/gaim/GaimObject")
-gaim = dbus.Interface(obj, "net.sf.gaim.GaimInterface")
-
-bus.add_signal_receiver(receivedimmsg,
-                        dbus_interface = "net.sf.gaim.GaimInterface",
-                        signal_name = "ReceivedImMsg")
-
-bus.add_signal_receiver(buddysignedon,
-                        dbus_interface = "net.sf.gaim.GaimInterface",
-                        signal_name = "BuddySignedOn")
-
-print "This is a simple gaim notification server."
-print "It shows notifications when your buddy signs on or you get an IM message."
-
-loop = gobject.MainLoop()
-loop.run()
-
-
--- a/libpurple/gaim-remote	Sat Mar 24 17:07:17 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,215 +0,0 @@
-#!/usr/bin/python
-
-import dbus
-import re
-import urllib
-import sys
-
-import xml.dom.minidom 
-
-xml.dom.minidom.Element.all   = xml.dom.minidom.Element.getElementsByTagName
-
-obj = dbus.SessionBus().get_object("net.sf.gaim.GaimService", "/net/sf/gaim/GaimObject")
-gaim = dbus.Interface(obj, "net.sf.gaim.GaimInterface")
-
-class CheckedObject:
-    def __init__(self, obj):
-        self.obj = obj
-
-    def __getattr__(self, attr):
-        return CheckedAttribute(self, attr)
-
-class CheckedAttribute:
-    def __init__(self, cobj, attr):
-        self.cobj = cobj
-        self.attr = attr
-        
-    def __call__(self, *args):
-        result = self.cobj.obj.__getattr__(self.attr)(*args)
-        if result == 0:
-            raise "Error: " + self.attr + " " + str(args) + " returned " + str(result)
-        return result
-            
-def show_help():
-    print """This program uses DBus to communicate with gaim.
-
-Usage:
-
-    %s "command1" "command2" ...
-
-Each command is of one of the three types:
-
-    [protocol:]commandname?param1=value1&param2=value2&...
-    FunctionName?param1=value1&param2=value2&...
-    FunctionName(value1,value2,...)
-
-The second and third form are provided for completeness but their use
-is not recommended; use gaim-send or gaim-send-async instead.  The
-second form uses introspection to find out the parameter names and
-their types, therefore it is rather slow.
-
-Examples of commands:
-
-    jabber:goim?screenname=testone@localhost&message=hi
-    jabber:gochat?room=TestRoom&server=conference.localhost
-    jabber:getinfo?screenname=testone@localhost
-    jabber:addbuddy?screenname=my friend
-
-    setstatus?status=away&message=don't disturb
-    quit
-
-    GaimAccountsFindConnected?name=&protocol=prpl-jabber
-    GaimAccountFindConnected(,prpl-jabber)
-""" % sys.argv[0]
-
-cgaim = CheckedObject(gaim)
-
-urlregexp = r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?"
-
-def extendlist(list, length, fill):
-    if len(list) < length:
-        return list + [fill] * (length - len(list))
-    else:
-        return list
-
-def convert(value):
-    try:
-        return int(value)
-    except:
-        return value
-
-def findaccount(accountname, protocolname):
-    try:
-        # prefer connected accounts
-        account = cgaim.GaimAccountsFindConnected(accountname, protocolname)
-        return account
-    except:
-        # try to get any account and connect it
-        account = cgaim.GaimAccountsFindAny(accountname, protocolname)
-        gaim.GaimAccountSetStatusVargs(account, "online", 1)
-        gaim.GaimAccountConnect(account)
-        return account
-    
-
-def execute(uri):
-    match = re.match(urlregexp, uri)
-    protocol = match.group(2)
-    if protocol == "aim" or protocol == "icq":
-        protocol = "oscar"
-    if protocol is not None:
-        protocol = "prpl-" + protocol
-    command = match.group(5)
-    paramstring = match.group(7)
-    params = {}
-    if paramstring is not None:
-        for param in paramstring.split("&"):
-            key, value = extendlist(param.split("=",1), 2, "")
-            params[key] = urllib.unquote(value)
-
-    accountname = params.get("account", "")
-
-    if command == "goim":
-        account = findaccount(accountname, protocol)
-        conversation = cgaim.GaimConversationNew(1, account, params["screenname"])
-        if "message" in params:
-            im = cgaim.GaimConversationGetImData(conversation)
-            gaim.GaimConvImSend(im, params["message"])
-        return None
-
-    elif command == "gochat":
-        account = findaccount(accountname, protocol)
-        connection = cgaim.GaimAccountGetConnection(account)
-        return gaim.ServJoinChat(connection, params)
-
-    elif command == "addbuddy":
-        account = findaccount(accountname, protocol)
-        return cgaim.GaimBlistRequestAddBuddy(account, params["screenname"],
-                                              params.get("group", ""), "")
-
-    elif command == "setstatus":
-        current = gaim.GaimSavedstatusGetCurrent()
-
-        if "status" in params:
-            status_id = params["status"]
-            status_type = gaim.GaimPrimitiveGetTypeFromId(status_id)
-        else:
-            status_type = gaim.GaimSavedstatusGetType(current)
-            status_id = gaim.GaimPrimitiveGetIdFromType(status_type)
-
-        if "message" in params:
-            message = params["message"];
-        else:
-            message = gaim.GaimSavedstatusGetMessage(current)
-
-        if "account" in params:
-            accounts = [cgaim.GaimAccountsFindAny(accountname, protocol)]
-
-            for account in accounts:
-                status = gaim.GaimAccountGetStatus(account, status_id)
-                type = gaim.GaimStatusGetType(status)
-                gaim.GaimSavedstatusSetSubstatus(current, account, type, message)
-                gaim.GaimSavedstatusActivateForAccount(current, account)
-        else:
-            accounts = gaim.GaimAccountsGetAllActive()
-            saved = gaim.GaimSavedstatusNew("", status_type)
-            gaim.GaimSavedstatusSetMessage(saved, message)
-            gaim.GaimSavedstatusActivate(saved)
-
-        return None
-
-    elif command == "getinfo":
-        account = findaccount(accountname, protocol)
-        connection = cgaim.GaimAccountGetConnection(account)
-        return gaim.ServGetInfo(connection, params["screenname"])
-
-    elif command == "quit":
-        return gaim.GaimCoreQuit()
-
-    elif command == "uri":
-        return None
-
-    else:
-        match = re.match(r"(\w+)\s*\(([^)]*)\)", command)
-        if match is not None:
-            name = match.group(1)
-            argstr = match.group(2)
-            if argstr == "":
-                args = []
-            else:
-                args = argstr.split(",")
-            fargs = []
-            for arg in args:
-                fargs.append(convert(arg.strip()))
-            return gaim.__getattr__(name)(*fargs)
-        else:
-            # introspect the object to get parameter names and types
-            # this is slow because the entire introspection info must be downloaded
-            data = dbus.Interface(obj, "org.freedesktop.DBus.Introspectable").\
-                   Introspect()
-            introspect = xml.dom.minidom.parseString(data).documentElement
-            for method in introspect.all("method"):
-                if command == method.getAttribute("name"):
-                    methodparams = []
-                    for arg in method.all("arg"):
-                        if arg.getAttribute("direction") == "in":
-                            value = params[arg.getAttribute("name")]
-                            type = arg.getAttribute("type")
-                            if type == "s":
-                                methodparams.append(value)
-                            elif type == "i":
-                                methodparams.append(int(value))
-                            else:
-                                raise "Don't know how to handle type \"%s\"" % type
-                    return gaim.__getattr__(command)(*methodparams)
-            show_help()
-            raise "Unknown command: %s" % command
-
-if len(sys.argv) == 1:
-    show_help()
-
-for arg in sys.argv[1:]:
-    output = execute(arg)
-
-    if (output != None):
-        print output
-
--- a/libpurple/gaim-send	Sat Mar 24 17:07:17 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-#!/bin/bash
-
-METHOD_NAME=$1
-
-if test -z "$METHOD_NAME" 
-then
-    cat <<EOF 
-This program calls gaim API functions using DBus and prints the return value.
-If you are not interested in the return value, use gaim-send-async.
-
-Usage:
-
-   $0 method-name type1:parameter1 type2:parameter2 ...
-
-This shell script just invokes dbus-send, see man dbus-send for how 
-to specify the parameters.  
-
-Examples:
-
-   $0 GaimAccountsFindConnected string: string:prpl-jabber
-   $0 GaimAccountsGetAll
-   $0 GaimCoreQuit
-
-Use dbus-viewer to get the list of supported functions and their parameters.
-EOF
-    exit 1
-fi
-
-shift
-dbus-send --dest=net.sf.gaim.GaimService --print-reply --type=method_call /net/sf/gaim/GaimObject net.sf.gaim.GaimInterface.$METHOD_NAME "$@"
-
-echo 
--- a/libpurple/gaim-send-async	Sat Mar 24 17:07:17 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#!/bin/bash
-
-METHOD_NAME=$1
-
-if test -z "$METHOD_NAME" 
-then
-    cat <<EOF 
-This program calls gaim API functions using DBus.  As opposed to gaim-send, 
-it does not print the return value.
-
-Usage:
-
-   $0 method-name type1:parameter1 type2:parameter2 ...
-
-This shell script just invokes dbus-send, see man dbus-send for how 
-to specify the parameters.  
-
-Examples:
-
-   $0 GaimCoreQuit
-
-Use dbus-viewer to get the list of supported functions and their parameters.
-EOF
-    exit 1
-fi
-
-shift
-dbus-send --dest=net.sf.gaim.GaimService --type=method_call /net/sf/gaim/GaimObject net.sf.gaim.GaimInterface.$METHOD_NAME "$@"
-
-echo 
--- a/libpurple/gaim-url-handler	Sat Mar 24 17:07:17 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,285 +0,0 @@
-#!/usr/bin/python
-
-import dbus
-import re
-import sys
-import time
-import urllib
-
-obj = dbus.SessionBus().get_object("net.sf.gaim.GaimService", "/net/sf/gaim/GaimObject")
-gaim = dbus.Interface(obj, "net.sf.gaim.GaimInterface")
-
-class CheckedObject:
-    def __init__(self, obj):
-        self.obj = obj
-
-    def __getattr__(self, attr):
-        return CheckedAttribute(self, attr)
-
-class CheckedAttribute:
-    def __init__(self, cobj, attr):
-        self.cobj = cobj
-        self.attr = attr
-
-    def __call__(self, *args):
-        result = self.cobj.obj.__getattr__(self.attr)(*args)
-        if result == 0:
-            raise "Error: " + self.attr + " " + str(args) + " returned " + str(result)
-        return result
-
-cgaim = CheckedObject(gaim)
-
-def extendlist(list, length, fill):
-    if len(list) < length:
-        return list + [fill] * (length - len(list))
-    else:
-        return list
-
-def convert(value):
-    try:
-        return int(value)
-    except:
-        return value
-
-def findaccount(protocolname, accountname=""):
-    try:
-        # prefer connected accounts
-        account = cgaim.GaimAccountsFindConnected(accountname, protocolname)
-        return account
-    except:
-        # try to get any account and connect it
-        account = cgaim.GaimAccountsFindAny(accountname, protocolname)
-        gaim.GaimAccountSetStatusVargs(account, "online", 1)
-        gaim.GaimAccountConnect(account)
-        return account
-
-def goim(account, screenname, message=None):
-    # XXX: 1 == GAIM_CONV_TYPE_IM
-    conversation = cgaim.GaimConversationNew(1, account, screenname)
-    if message:
-        gaim.GaimConvSendConfirm(conversation, message)
-
-def gochat(account, params, message=None):
-    connection = cgaim.GaimAccountGetConnection(account)
-    gaim.ServJoinChat(connection, params)
-
-    if message != None:
-    	for i in range(20):
-            # XXX: 2 == GAIM_CONV_TYPE_CHAT
-            conversation = gaim.GaimFindConversationWithAccount(2, params.get("channel", params.get("room")), account)
-            if conversation:
-                gaim.GaimConvSendConfirm(conversation, message)
-                break
-            else:
-                time.sleep(0.5)
-
-def addbuddy(account, screenname, group="", alias=""):
-    cgaim.GaimBlistRequestAddBuddy(account, screenname, group, alias)
-
-
-def aim(uri):
-    protocol = "prpl-oscar"
-    match = re.match(r"^(aim|icq):([^?]*)(\?(.*))", uri)
-    if not match:
-        print "Invalid aim URI: %s" % uri
-        return
-
-    command = urllib.unquote_plus(match.group(2))
-    paramstring = match.group(4)
-    params = {}
-    if paramstring:
-        for param in paramstring.split("&"):
-            key, value = extendlist(param.split("=", 1), 2, "")
-            params[key] = urllib.unquote_plus(value)
-    accountname = params.get("account", "")
-    screenname = params.get("screenname", "")
-
-    account = findaccount(protocol, accountname)
-
-    if command.lower() == "goim":
-        goim(account, screenname, params.get("message"))
-    elif command.lower() == "gochat":
-        gochat(account, params)
-    elif command.lower() == "addbuddy":
-        addbuddy(account, screenname, params.get("group", ""))
-
-def gg(uri):
-    protocol = "prpl-gg"
-    match = re.match(r"^gg:(.*)", uri)
-    if not match:
-        print "Invalid gg URI: %s" % uri
-        return
-
-    screenname = urllib.unquote_plus(match.group(1))
-    account = findaccount(protocol)
-    goim(account, screenname)
-
-def icq(uri):
-    aim(uri)
-
-def irc(uri):
-    protocol = "prpl-irc"
-    match = re.match(r"^irc:(//([^/]*)/)?([^?]*)(\?(.*))?", uri)
-    if not match:
-        print "Invalid irc URI: %s" % uri
-        return
-
-    server = urllib.unquote_plus(match.group(2)) or ""
-    target = match.group(3) or ""
-    query = match.group(5) or ""
-
-    modifiers = {}
-    if target:
-        for modifier in target.split(",")[1:]:
-            modifiers[modifier] = True
-
-    isnick = modifiers.has_key("isnick")
-
-    paramstring = match.group(5)
-    params = {}
-    if paramstring:
-        for param in paramstring.split("&"):
-            key, value = extendlist(param.split("=", 1), 2, "")
-            params[key] = urllib.unquote_plus(value)
-
-    account = findaccount(protocol)
-
-    if (target != ""):
-        if (isnick):
-            goim(account, urllib.unquote_plus(target.split(",")[0]), params.get("msg"))
-	else:
-            channel = urllib.unquote_plus(target.split(",")[0])
-            if channel[0] != "#":
-                channel = "#" + channel
-            gochat(account, {"server": server, "channel": channel, "password": params.get("key", "")}, params.get("msg"))
-
-def msnim(uri):
-    protocol = "prpl-msn"
-    match = re.match(r"^msnim:([^?]*)(\?(.*))", uri)
-    if not match:
-        print "Invalid msnim URI: %s" % uri
-        return
-
-    command = urllib.unquote_plus(match.group(1))
-    paramstring = match.group(3)
-    params = {}
-    if paramstring:
-        for param in paramstring.split("&"):
-            key, value = extendlist(param.split("=", 1), 2, "")
-            params[key] = urllib.unquote_plus(value)
-    screenname = params.get("contact", "")
-
-    account = findaccount(protocol)
-
-    if command.lower() == "chat":
-        goim(account, screenname)
-    elif command.lower() == "add":
-        addbuddy(account, screenname)
-
-def sip(uri):
-    protocol = "prpl-simple"
-    match = re.match(r"^sip:(.*)", uri)
-    if not match:
-        print "Invalid sip URI: %s" % uri
-        return
-
-    screenname = urllib.unquote_plus(match.group(1))
-    account = findaccount(protocol)
-    goim(account, screenname)
-
-def xmpp(uri):
-    protocol = "prpl-jabber"
-    match = re.match(r"^xmpp:((//)?([^/?#]*))?(/?([^?#]*))(\?([^;#]*)(;([^#]*))?)?(#(.*))?", uri)
-    if not match:
-        print "Invalid xmpp URI: %s" % uri
-        return
-
-    tmp = match.group(3)
-    if (tmp):
-        accountname = urllib.unquote_plus(tmp)
-    else:
-        accountname = ""
-
-    screenname = urllib.unquote_plus(match.group(5))
-
-    tmp = match.group(7)
-    if (tmp):
-        command = urllib.unquote_plus(tmp)
-    else:
-        command = ""
-
-    paramstring = match.group(9)
-    params = {}
-    if paramstring:
-        for param in paramstring.split(";"):
-            key, value = extendlist(param.split("=", 1), 2, "")
-            params[key] = urllib.unquote_plus(value)
-
-    account = findaccount(protocol, accountname)
-
-    if command.lower() == "message":
-        goim(account, screenname, params.get("body"))
-    elif command.lower() == "join":
-        room, server = screenname.split("@")
-        gochat(account, {"room": room, "server": server})
-    elif command.lower() == "roster":
-        addbuddy(account, screenname, params.get("group", ""), params.get("name", ""))
-    else:
-        goim(account, screenname)
-
-def ymsgr(uri):
-    protocol = "prpl-yahoo"
-    match = re.match(r"^ymsgr:([^?]*)(\?([^&]*)(&(.*))?)", uri)
-    if not match:
-        print "Invalid ymsgr URI: %s" % uri
-        return
-
-    command = urllib.unquote_plus(match.group(1))
-    screenname = urllib.unquote_plus(match.group(3))
-    paramstring = match.group(5)
-    params = {}
-    if paramstring:
-        for param in paramstring.split("&"):
-            key, value = extendlist(param.split("=", 1), 2, "")
-            params[key] = urllib.unquote_plus(value)
-
-    account = findaccount(protocol)
-
-    if command.lower() == "sendim":
-        goim(account, screenname, params.get("m"))
-    elif command.lower() == "chat":
-        gochat(account, {"room": screenname})
-    elif command.lower() == "addfriend":
-        addbuddy(account, screenname)
-
-
-def main(argv=sys.argv):
-    if len(argv) != 2:
-        print "Usage: %s URI" % argv[0]
-        print "Example: %s \"xmpp:romeo@montague.net?message\"" % argv[0]
-        return
-
-    uri = argv[1]
-    type = uri.split(":")[0]
-
-    if type == "aim":
-        aim(uri)
-    elif type == "gg":
-        gg(uri)
-    elif type == "icq":
-        icq(uri)
-    elif type == "irc":
-        irc(uri)
-    elif type == "msnim":
-        msnim(uri)
-    elif type == "sip":
-        sip(uri)
-    elif type == "xmpp":
-        xmpp(uri)
-    elif type == "ymsgr":
-        ymsgr(uri)
-    else:
-        print "Unkown protocol: %s" % type
-
-if __name__ == "__main__":
-    main()
--- a/libpurple/gconf/gaim.schemas.in	Sat Mar 24 17:07:17 2007 +0000
+++ b/libpurple/gconf/gaim.schemas.in	Sat Mar 24 17:51:05 2007 +0000
@@ -17,7 +17,7 @@
       <applyto>/desktop/gnome/url-handlers/aim/command</applyto>
       <owner>gaim</owner>
       <type>string</type>
-      <default>gaim-url-handler "%s"</default>
+      <default>pidgin-url-handler "%s"</default>
       <locale name="C">
         <short>The handler for "aim" URLs</short>
         <long>The command used to handle "aim" URLs, if enabled.</long>
@@ -51,7 +51,7 @@
       <applyto>/desktop/gnome/url-handlers/gg/command</applyto>
       <owner>gaim</owner>
       <type>string</type>
-      <default>gaim-url-handler "%s"</default>
+      <default>pidgin-url-handler "%s"</default>
       <locale name="C">
         <short>The handler for "gg" URLs</short>
         <long>The command used to handle "gg" URLs, if enabled.</long>
@@ -85,7 +85,7 @@
       <applyto>/desktop/gnome/url-handlers/icq/command</applyto>
       <owner>gaim</owner>
       <type>string</type>
-      <default>gaim-url-handler "%s"</default>
+      <default>pidgin-url-handler "%s"</default>
       <locale name="C">
         <short>The handler for "icq" URLs</short>
         <long>The command used to handle "icq" URLs, if enabled.</long>
@@ -119,7 +119,7 @@
       <applyto>/desktop/gnome/url-handlers/irc/command</applyto>
       <owner>gaim</owner>
       <type>string</type>
-      <default>gaim-url-handler "%s"</default>
+      <default>pidgin-url-handler "%s"</default>
       <locale name="C">
         <short>The handler for "irc" URLs</short>
         <long>The command used to handle "irc" URLs, if enabled.</long>
@@ -153,7 +153,7 @@
       <applyto>/desktop/gnome/url-handlers/msnim/command</applyto>
       <owner>gaim</owner>
       <type>string</type>
-      <default>gaim-url-handler "%s"</default>
+      <default>pidgin-url-handler "%s"</default>
       <locale name="C">
         <short>The handler for "msnim" URLs</short>
         <long>The command used to handle "msnim" URLs, if enabled.</long>
@@ -187,7 +187,7 @@
       <applyto>/desktop/gnome/url-handlers/sip/command</applyto>
       <owner>gaim</owner>
       <type>string</type>
-      <default>gaim-url-handler "%s"</default>
+      <default>pidgin-url-handler "%s"</default>
       <locale name="C">
         <short>The handler for "sip" URLs</short>
         <long>The command used to handle "sip" URLs, if enabled.</long>
@@ -221,7 +221,7 @@
       <applyto>/desktop/gnome/url-handlers/xmpp/command</applyto>
       <owner>gaim</owner>
       <type>string</type>
-      <default>gaim-url-handler "%s"</default>
+      <default>pidgin-url-handler "%s"</default>
       <locale name="C">
         <short>The handler for "xmpp" URLs</short>
         <long>The command used to handle "xmpp" URLs, if enabled.</long>
@@ -255,7 +255,7 @@
       <applyto>/desktop/gnome/url-handlers/ymsgr/command</applyto>
       <owner>gaim</owner>
       <type>string</type>
-      <default>gaim-url-handler "%s"</default>
+      <default>pidgin-url-handler "%s"</default>
       <locale name="C">
         <short>The handler for "ymsgr" URLs</short>
         <long>The command used to handle "ymsgr" URLs, if enabled.</long>
--- a/libpurple/plugins/perl/Makefile.am	Sat Mar 24 17:07:17 2007 +0000
+++ b/libpurple/plugins/perl/Makefile.am	Sat Mar 24 17:51:05 2007 +0000
@@ -4,10 +4,10 @@
 perl_dirs = common
 
 plugin_LTLIBRARIES = perl.la
-hack_LTLIBRARIES = libgaimperl.la
+hack_LTLIBRARIES = libpurpleperl.la
 
 perl_la_LDFLAGS = -module -avoid-version
-perl_la_LIBADD = $(GLIB_LIBS) $(PERL_LIBS) libgaimperl.la
+perl_la_LIBADD = $(GLIB_LIBS) $(PERL_LIBS) libpurpleperl.la
 perl_la_SOURCES = \
 	perl.c \
 	perl-common.c \
@@ -18,11 +18,11 @@
 perl_la_DEPENDENCIES = \
 	.libs/libperl_orig.a \
 	.libs/DynaLoader.a \
-	libgaimperl.la
+	libpurpleperl.la
 
-libgaimperl_la_LDFLAGS = -module -avoid-version
-libgaimperl_la_LIBADD = $(GLIB_LIBS)
-libgaimperl_la_SOURCES = libgaimperl.c
+libpurpleperl_la_LDFLAGS = -module -avoid-version
+libpurpleperl_la_LIBADD = $(GLIB_LIBS)
+libpurpleperl_la_SOURCES = libpurpleperl.c
 
 .libs/libperl_orig.a:
 	@mkdir -p .libs
@@ -55,8 +55,6 @@
         common/Conversation.xs \
         common/Debug.xs \
         common/FT.xs \
-        common/Purple.pm \
-        common/Purple.xs \
         common/ImgStore.xs \
         common/Log.xs \
         common/Makefile.PL.in \
@@ -69,6 +67,7 @@
         common/Privacy.xs \
         common/Proxy.xs \
         common/Prpl.xs \
+        common/Purple.pm \
         common/Request.xs \
         common/Roomlist.xs \
         common/SSLConn.xs \
@@ -90,7 +89,7 @@
 	Makefile.mingw \
 	common/Makefile.mingw \
 	$(common_sources) \
-	libgaimperl.c
+	libpurpleperl.c
 
 common/Makefile: common/Makefile.PL
 	@if test "x${top_srcdir}" != "x${top_builddir}"; then \
--- a/libpurple/plugins/perl/libgaimperl.c	Sat Mar 24 17:07:17 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-#include <gmodule.h>
-
-#ifdef  __SUNPRO_C
-#pragma init (my_init)
-void my_init(void);
-
-void my_init() {
-#else
-void __attribute__ ((constructor)) my_init(void);
-
-void __attribute__ ((constructor)) my_init() {
-#endif
-
-	/* Very evil hack...puts perl.so's symbols in the global table
-	 * but does not create a circular dependancy because g_module_open
-	 * will only open the library once. */
-	g_module_open("perl.so", 0);
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/plugins/perl/libpurpleperl.c	Sat Mar 24 17:51:05 2007 +0000
@@ -0,0 +1,18 @@
+#include <gmodule.h>
+
+#ifdef  __SUNPRO_C
+#pragma init (my_init)
+void my_init(void);
+
+void my_init() {
+#else
+void __attribute__ ((constructor)) my_init(void);
+
+void __attribute__ ((constructor)) my_init() {
+#endif
+
+	/* Very evil hack...puts perl.so's symbols in the global table
+	 * but does not create a circular dependancy because g_module_open
+	 * will only open the library once. */
+	g_module_open("perl.so", 0);
+}
--- a/libpurple/protocols/silc/Makefile.am	Sat Mar 24 17:07:17 2007 +0000
+++ b/libpurple/protocols/silc/Makefile.am	Sat Mar 24 17:51:05 2007 +0000
@@ -6,26 +6,26 @@
 
 AM_CFLAGS = $(st)
 
-libsilcgaim_la_LDFLAGS = -module -avoid-version
+libsilcpurple_la_LDFLAGS = -module -avoid-version
 
 if STATIC_SILC
 
 st = -DGAIM_STATIC_PRPL $(SILC_CFLAGS)
-noinst_LIBRARIES = libsilcgaim.a
+noinst_LIBRARIES = libsilcpurple.a
 pkg_LTLIBRARIES =
 
-libsilcgaim_a_SOURCES = $(SILCSOURCES)
-libsilcgaim_a_CFLAGS  = $(AM_CFLAGS)
-libsilcgaim_a_LIBADD  = $(SILC_LIBS)
+libsilcpurple_a_SOURCES = $(SILCSOURCES)
+libsilcpurple_a_CFLAGS  = $(AM_CFLAGS)
+libsilcpurple_a_LIBADD  = $(SILC_LIBS)
 
 else
 
 st = $(SILC_CFLAGS)
-pkg_LTLIBRARIES = libsilcgaim.la
+pkg_LTLIBRARIES = libsilcpurple.la
 noinst_LIBRARIES =
 
-libsilcgaim_la_SOURCES = $(SILCSOURCES)
-libsilcgaim_la_LIBADD  = $(GLIB_LIBS) $(SILC_LIBS)
+libsilcpurple_la_SOURCES = $(SILCSOURCES)
+libsilcpurple_la_LIBADD  = $(GLIB_LIBS) $(SILC_LIBS)
 
 endif
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/purple-client-example.c	Sat Mar 24 17:51:05 2007 +0000
@@ -0,0 +1,39 @@
+#define DBUS_API_SUBJECT_TO_CHANGE
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "purple-client.h"
+
+/*
+   This example demonstrates how to use libpurple-client to communicate
+   with purple.  The names and signatures of functions provided by
+   libpurple-client are the same as those in purple.  However, all
+   structures (such as PurpleAccount) are opaque, that is, you can only
+   use pointer to them.  In fact, these pointers DO NOT actually point
+   to anything, they are just integer identifiers of assigned to these
+   structures by purple.  So NEVER try to dereference these pointers.
+   Integer ids as disguised as pointers to provide type checking and
+   prevent mistakes such as passing an id of PurpleAccount when an id of
+   PurpleBuddy is expected.  According to glib manual, this technique is
+   portable.
+*/
+
+int main (int argc, char **argv)
+{
+	GList *alist, *node;
+
+	purple_init();
+
+	alist = purple_accounts_get_all();
+	for (node = alist; node != NULL; node = node->next)
+	{
+		PurpleAccount *account = (PurpleAccount*) node->data;
+		char *name = purple_account_get_username(account);
+		g_print("Name: %s\n", name);
+		g_free(name);
+	}
+	g_list_free(alist);
+
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/purple-client.c	Sat Mar 24 17:51:05 2007 +0000
@@ -0,0 +1,81 @@
+#define DBUS_API_SUBJECT_TO_CHANGE
+
+#include <dbus/dbus-glib.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "dbus-purple.h"
+#include "purple-client-bindings.h"
+
+static DBusGConnection *bus;
+static DBusGProxy *purple_proxy;
+
+static GList *garray_int_to_glist(GArray *array)
+{
+	GList *list = NULL;
+	int i;
+
+	for (i = 0; i < array->len; i++)
+		list = g_list_append(list, GINT_TO_POINTER(g_array_index(array,gint,i)));
+
+	g_array_free(array, TRUE);
+	return list;
+}
+
+static GSList *garray_int_to_gslist(GArray *array)
+{
+	GSList *list = NULL;
+	int i;
+
+	for (i = 0; i < array->len; i++)
+		list = g_slist_append(list, GINT_TO_POINTER(g_array_index(array,gint,i)));
+
+	g_array_free(array, TRUE);
+	return list;
+}
+
+#include "purple-client-bindings.c"
+
+static void lose(const char *fmt, ...) G_GNUC_NORETURN G_GNUC_PRINTF (1, 2);
+static void lose_gerror(const char *prefix, GError *error) G_GNUC_NORETURN;
+
+static void
+lose(const char *str, ...)
+{
+	va_list args;
+
+	va_start(args, str);
+
+	vfprintf(stderr, str, args);
+	fputc('\n', stderr);
+
+	va_end(args);
+
+	exit(1);
+}
+
+static void
+lose_gerror(const char *prefix, GError *error)
+{
+	lose("%s: %s", prefix, error->message);
+}
+
+void purple_init(void)
+{
+	GError *error = NULL;
+
+	g_type_init ();
+
+	bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
+	if (!bus)
+		lose_gerror ("Couldn't connect to session bus", error);
+
+	purple_proxy = dbus_g_proxy_new_for_name (bus,
+					DBUS_SERVICE_PURPLE,
+					DBUS_PATH_PURPLE,
+					DBUS_INTERFACE_PURPLE);
+
+	if (!purple_proxy)
+		lose_gerror ("Couldn't connect to the Purple Service", error);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/purple-notifications-example	Sat Mar 24 17:51:05 2007 +0000
@@ -0,0 +1,86 @@
+#!/usr/bin/env python
+
+# This is a simple gaim notification server.
+# It shows notifications when your buddy signs on or you get an IM message.
+#
+# This script requires Python 2.4 and PyGTK bindings
+#
+# Note that all function names are resolved dynamically, no
+# gaim-specific library is needed.
+
+import dbus
+import dbus.glib
+import dbus.decorators
+import gobject
+import os
+
+def ensureimconversation(conversation, account, name):
+    if conversation != 0:
+        return conversation
+    else:
+        # 1 = GAIM_CONV_IM 
+        return gaim.GaimConversationNew(1, account, name)
+
+def receivedimmsg(account, name, message, conversation, flags):
+    buddy = gaim.GaimFindBuddy(account, name)
+    if buddy != 0:
+        alias = gaim.GaimBuddyGetAlias(buddy)
+    else:
+        alias = name
+
+    text = "%s says %s" % (alias, message)
+    code = os.spawnlp(os.P_WAIT, "xmessage", "xmessage", "-buttons",
+                      "'So what?','Show me',Close,Abuse", text)
+
+    if code == 101:                     # so what?
+        pass
+    else:
+        conversation = ensureimconversation(conversation, account, name)
+
+    if code == 102:                     # show me
+        window = gaim.GaimConversationGetWindow(conversation)
+        gaim.GaimConvWindowRaise(window)
+
+    if code == 103:                     # close 
+        gaim.GaimConversationDestroy(conversation)
+
+    if code == 104:                     # abuse
+        im = gaim.GaimConversationGetImData(conversation)
+        gaim.GaimConvImSend(im, "Go away you f...")
+                                 
+        
+def buddysignedon(buddyid):
+    alias = gaim.GaimBuddyGetAlias(buddyid)
+    text = "%s is online" % alias
+
+    code = os.spawnlp(os.P_WAIT, "xmessage", "xmessage", "-buttons",
+                      "'So what?','Let's talk'", text)
+
+    if code == 101:                     # so what?
+        pass
+
+    if code == 102:                     # talk
+        name = gaim.GaimBuddyGetName(buddyid)
+        account = gaim.GaimBuddyGetAccount(buddyid)
+        gaim.GaimConversationNew(1, account, name)
+    
+
+bus = dbus.SessionBus()
+obj = bus.get_object("net.sf.gaim.GaimService", "/net/sf/gaim/GaimObject")
+gaim = dbus.Interface(obj, "net.sf.gaim.GaimInterface")
+
+bus.add_signal_receiver(receivedimmsg,
+                        dbus_interface = "net.sf.gaim.GaimInterface",
+                        signal_name = "ReceivedImMsg")
+
+bus.add_signal_receiver(buddysignedon,
+                        dbus_interface = "net.sf.gaim.GaimInterface",
+                        signal_name = "BuddySignedOn")
+
+print "This is a simple gaim notification server."
+print "It shows notifications when your buddy signs on or you get an IM message."
+
+loop = gobject.MainLoop()
+loop.run()
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/purple-remote	Sat Mar 24 17:51:05 2007 +0000
@@ -0,0 +1,215 @@
+#!/usr/bin/python
+
+import dbus
+import re
+import urllib
+import sys
+
+import xml.dom.minidom 
+
+xml.dom.minidom.Element.all   = xml.dom.minidom.Element.getElementsByTagName
+
+obj = dbus.SessionBus().get_object("net.sf.gaim.GaimService", "/net/sf/gaim/GaimObject")
+gaim = dbus.Interface(obj, "net.sf.gaim.GaimInterface")
+
+class CheckedObject:
+    def __init__(self, obj):
+        self.obj = obj
+
+    def __getattr__(self, attr):
+        return CheckedAttribute(self, attr)
+
+class CheckedAttribute:
+    def __init__(self, cobj, attr):
+        self.cobj = cobj
+        self.attr = attr
+        
+    def __call__(self, *args):
+        result = self.cobj.obj.__getattr__(self.attr)(*args)
+        if result == 0:
+            raise "Error: " + self.attr + " " + str(args) + " returned " + str(result)
+        return result
+            
+def show_help():
+    print """This program uses DBus to communicate with gaim.
+
+Usage:
+
+    %s "command1" "command2" ...
+
+Each command is of one of the three types:
+
+    [protocol:]commandname?param1=value1&param2=value2&...
+    FunctionName?param1=value1&param2=value2&...
+    FunctionName(value1,value2,...)
+
+The second and third form are provided for completeness but their use
+is not recommended; use gaim-send or gaim-send-async instead.  The
+second form uses introspection to find out the parameter names and
+their types, therefore it is rather slow.
+
+Examples of commands:
+
+    jabber:goim?screenname=testone@localhost&message=hi
+    jabber:gochat?room=TestRoom&server=conference.localhost
+    jabber:getinfo?screenname=testone@localhost
+    jabber:addbuddy?screenname=my friend
+
+    setstatus?status=away&message=don't disturb
+    quit
+
+    GaimAccountsFindConnected?name=&protocol=prpl-jabber
+    GaimAccountFindConnected(,prpl-jabber)
+""" % sys.argv[0]
+
+cgaim = CheckedObject(gaim)
+
+urlregexp = r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?"
+
+def extendlist(list, length, fill):
+    if len(list) < length:
+        return list + [fill] * (length - len(list))
+    else:
+        return list
+
+def convert(value):
+    try:
+        return int(value)
+    except:
+        return value
+
+def findaccount(accountname, protocolname):
+    try:
+        # prefer connected accounts
+        account = cgaim.GaimAccountsFindConnected(accountname, protocolname)
+        return account
+    except:
+        # try to get any account and connect it
+        account = cgaim.GaimAccountsFindAny(accountname, protocolname)
+        gaim.GaimAccountSetStatusVargs(account, "online", 1)
+        gaim.GaimAccountConnect(account)
+        return account
+    
+
+def execute(uri):
+    match = re.match(urlregexp, uri)
+    protocol = match.group(2)
+    if protocol == "aim" or protocol == "icq":
+        protocol = "oscar"
+    if protocol is not None:
+        protocol = "prpl-" + protocol
+    command = match.group(5)
+    paramstring = match.group(7)
+    params = {}
+    if paramstring is not None:
+        for param in paramstring.split("&"):
+            key, value = extendlist(param.split("=",1), 2, "")
+            params[key] = urllib.unquote(value)
+
+    accountname = params.get("account", "")
+
+    if command == "goim":
+        account = findaccount(accountname, protocol)
+        conversation = cgaim.GaimConversationNew(1, account, params["screenname"])
+        if "message" in params:
+            im = cgaim.GaimConversationGetImData(conversation)
+            gaim.GaimConvImSend(im, params["message"])
+        return None
+
+    elif command == "gochat":
+        account = findaccount(accountname, protocol)
+        connection = cgaim.GaimAccountGetConnection(account)
+        return gaim.ServJoinChat(connection, params)
+
+    elif command == "addbuddy":
+        account = findaccount(accountname, protocol)
+        return cgaim.GaimBlistRequestAddBuddy(account, params["screenname"],
+                                              params.get("group", ""), "")
+
+    elif command == "setstatus":
+        current = gaim.GaimSavedstatusGetCurrent()
+
+        if "status" in params:
+            status_id = params["status"]
+            status_type = gaim.GaimPrimitiveGetTypeFromId(status_id)
+        else:
+            status_type = gaim.GaimSavedstatusGetType(current)
+            status_id = gaim.GaimPrimitiveGetIdFromType(status_type)
+
+        if "message" in params:
+            message = params["message"];
+        else:
+            message = gaim.GaimSavedstatusGetMessage(current)
+
+        if "account" in params:
+            accounts = [cgaim.GaimAccountsFindAny(accountname, protocol)]
+
+            for account in accounts:
+                status = gaim.GaimAccountGetStatus(account, status_id)
+                type = gaim.GaimStatusGetType(status)
+                gaim.GaimSavedstatusSetSubstatus(current, account, type, message)
+                gaim.GaimSavedstatusActivateForAccount(current, account)
+        else:
+            accounts = gaim.GaimAccountsGetAllActive()
+            saved = gaim.GaimSavedstatusNew("", status_type)
+            gaim.GaimSavedstatusSetMessage(saved, message)
+            gaim.GaimSavedstatusActivate(saved)
+
+        return None
+
+    elif command == "getinfo":
+        account = findaccount(accountname, protocol)
+        connection = cgaim.GaimAccountGetConnection(account)
+        return gaim.ServGetInfo(connection, params["screenname"])
+
+    elif command == "quit":
+        return gaim.GaimCoreQuit()
+
+    elif command == "uri":
+        return None
+
+    else:
+        match = re.match(r"(\w+)\s*\(([^)]*)\)", command)
+        if match is not None:
+            name = match.group(1)
+            argstr = match.group(2)
+            if argstr == "":
+                args = []
+            else:
+                args = argstr.split(",")
+            fargs = []
+            for arg in args:
+                fargs.append(convert(arg.strip()))
+            return gaim.__getattr__(name)(*fargs)
+        else:
+            # introspect the object to get parameter names and types
+            # this is slow because the entire introspection info must be downloaded
+            data = dbus.Interface(obj, "org.freedesktop.DBus.Introspectable").\
+                   Introspect()
+            introspect = xml.dom.minidom.parseString(data).documentElement
+            for method in introspect.all("method"):
+                if command == method.getAttribute("name"):
+                    methodparams = []
+                    for arg in method.all("arg"):
+                        if arg.getAttribute("direction") == "in":
+                            value = params[arg.getAttribute("name")]
+                            type = arg.getAttribute("type")
+                            if type == "s":
+                                methodparams.append(value)
+                            elif type == "i":
+                                methodparams.append(int(value))
+                            else:
+                                raise "Don't know how to handle type \"%s\"" % type
+                    return gaim.__getattr__(command)(*methodparams)
+            show_help()
+            raise "Unknown command: %s" % command
+
+if len(sys.argv) == 1:
+    show_help()
+
+for arg in sys.argv[1:]:
+    output = execute(arg)
+
+    if (output != None):
+        print output
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/purple-send	Sat Mar 24 17:51:05 2007 +0000
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+METHOD_NAME=$1
+
+if test -z "$METHOD_NAME" 
+then
+    cat <<EOF 
+This program calls gaim API functions using DBus and prints the return value.
+If you are not interested in the return value, use gaim-send-async.
+
+Usage:
+
+   $0 method-name type1:parameter1 type2:parameter2 ...
+
+This shell script just invokes dbus-send, see man dbus-send for how 
+to specify the parameters.  
+
+Examples:
+
+   $0 GaimAccountsFindConnected string: string:prpl-jabber
+   $0 GaimAccountsGetAll
+   $0 GaimCoreQuit
+
+Use dbus-viewer to get the list of supported functions and their parameters.
+EOF
+    exit 1
+fi
+
+shift
+dbus-send --dest=net.sf.gaim.GaimService --print-reply --type=method_call /net/sf/gaim/GaimObject net.sf.gaim.GaimInterface.$METHOD_NAME "$@"
+
+echo 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/purple-send-async	Sat Mar 24 17:51:05 2007 +0000
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+METHOD_NAME=$1
+
+if test -z "$METHOD_NAME" 
+then
+    cat <<EOF 
+This program calls gaim API functions using DBus.  As opposed to gaim-send, 
+it does not print the return value.
+
+Usage:
+
+   $0 method-name type1:parameter1 type2:parameter2 ...
+
+This shell script just invokes dbus-send, see man dbus-send for how 
+to specify the parameters.  
+
+Examples:
+
+   $0 GaimCoreQuit
+
+Use dbus-viewer to get the list of supported functions and their parameters.
+EOF
+    exit 1
+fi
+
+shift
+dbus-send --dest=net.sf.gaim.GaimService --type=method_call /net/sf/gaim/GaimObject net.sf.gaim.GaimInterface.$METHOD_NAME "$@"
+
+echo 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/purple-uninstalled.pc.in	Sat Mar 24 17:51:05 2007 +0000
@@ -0,0 +1,13 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+datadir=@datadir@
+sysconfdir=@sysconfdir@
+
+Name: libpurple
+Description: libpurple is a GLib-based instant messenger library.
+Version: @VERSION@
+Requires: glib-2.0
+Cflags: -I${pc_top_builddir}/${pcfiledir}
+Libs: ${pc_top_builddir}/${pcfiledir}/libpurple.la
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/purple-url-handler	Sat Mar 24 17:51:05 2007 +0000
@@ -0,0 +1,285 @@
+#!/usr/bin/python
+
+import dbus
+import re
+import sys
+import time
+import urllib
+
+obj = dbus.SessionBus().get_object("net.sf.gaim.GaimService", "/net/sf/gaim/GaimObject")
+gaim = dbus.Interface(obj, "net.sf.gaim.GaimInterface")
+
+class CheckedObject:
+    def __init__(self, obj):
+        self.obj = obj
+
+    def __getattr__(self, attr):
+        return CheckedAttribute(self, attr)
+
+class CheckedAttribute:
+    def __init__(self, cobj, attr):
+        self.cobj = cobj
+        self.attr = attr
+
+    def __call__(self, *args):
+        result = self.cobj.obj.__getattr__(self.attr)(*args)
+        if result == 0:
+            raise "Error: " + self.attr + " " + str(args) + " returned " + str(result)
+        return result
+
+cgaim = CheckedObject(gaim)
+
+def extendlist(list, length, fill):
+    if len(list) < length:
+        return list + [fill] * (length - len(list))
+    else:
+        return list
+
+def convert(value):
+    try:
+        return int(value)
+    except:
+        return value
+
+def findaccount(protocolname, accountname=""):
+    try:
+        # prefer connected accounts
+        account = cgaim.GaimAccountsFindConnected(accountname, protocolname)
+        return account
+    except:
+        # try to get any account and connect it
+        account = cgaim.GaimAccountsFindAny(accountname, protocolname)
+        gaim.GaimAccountSetStatusVargs(account, "online", 1)
+        gaim.GaimAccountConnect(account)
+        return account
+
+def goim(account, screenname, message=None):
+    # XXX: 1 == GAIM_CONV_TYPE_IM
+    conversation = cgaim.GaimConversationNew(1, account, screenname)
+    if message:
+        gaim.GaimConvSendConfirm(conversation, message)
+
+def gochat(account, params, message=None):
+    connection = cgaim.GaimAccountGetConnection(account)
+    gaim.ServJoinChat(connection, params)
+
+    if message != None:
+    	for i in range(20):
+            # XXX: 2 == GAIM_CONV_TYPE_CHAT
+            conversation = gaim.GaimFindConversationWithAccount(2, params.get("channel", params.get("room")), account)
+            if conversation:
+                gaim.GaimConvSendConfirm(conversation, message)
+                break
+            else:
+                time.sleep(0.5)
+
+def addbuddy(account, screenname, group="", alias=""):
+    cgaim.GaimBlistRequestAddBuddy(account, screenname, group, alias)
+
+
+def aim(uri):
+    protocol = "prpl-oscar"
+    match = re.match(r"^(aim|icq):([^?]*)(\?(.*))", uri)
+    if not match:
+        print "Invalid aim URI: %s" % uri
+        return
+
+    command = urllib.unquote_plus(match.group(2))
+    paramstring = match.group(4)
+    params = {}
+    if paramstring:
+        for param in paramstring.split("&"):
+            key, value = extendlist(param.split("=", 1), 2, "")
+            params[key] = urllib.unquote_plus(value)
+    accountname = params.get("account", "")
+    screenname = params.get("screenname", "")
+
+    account = findaccount(protocol, accountname)
+
+    if command.lower() == "goim":
+        goim(account, screenname, params.get("message"))
+    elif command.lower() == "gochat":
+        gochat(account, params)
+    elif command.lower() == "addbuddy":
+        addbuddy(account, screenname, params.get("group", ""))
+
+def gg(uri):
+    protocol = "prpl-gg"
+    match = re.match(r"^gg:(.*)", uri)
+    if not match:
+        print "Invalid gg URI: %s" % uri
+        return
+
+    screenname = urllib.unquote_plus(match.group(1))
+    account = findaccount(protocol)
+    goim(account, screenname)
+
+def icq(uri):
+    aim(uri)
+
+def irc(uri):
+    protocol = "prpl-irc"
+    match = re.match(r"^irc:(//([^/]*)/)?([^?]*)(\?(.*))?", uri)
+    if not match:
+        print "Invalid irc URI: %s" % uri
+        return
+
+    server = urllib.unquote_plus(match.group(2)) or ""
+    target = match.group(3) or ""
+    query = match.group(5) or ""
+
+    modifiers = {}
+    if target:
+        for modifier in target.split(",")[1:]:
+            modifiers[modifier] = True
+
+    isnick = modifiers.has_key("isnick")
+
+    paramstring = match.group(5)
+    params = {}
+    if paramstring:
+        for param in paramstring.split("&"):
+            key, value = extendlist(param.split("=", 1), 2, "")
+            params[key] = urllib.unquote_plus(value)
+
+    account = findaccount(protocol)
+
+    if (target != ""):
+        if (isnick):
+            goim(account, urllib.unquote_plus(target.split(",")[0]), params.get("msg"))
+	else:
+            channel = urllib.unquote_plus(target.split(",")[0])
+            if channel[0] != "#":
+                channel = "#" + channel
+            gochat(account, {"server": server, "channel": channel, "password": params.get("key", "")}, params.get("msg"))
+
+def msnim(uri):
+    protocol = "prpl-msn"
+    match = re.match(r"^msnim:([^?]*)(\?(.*))", uri)
+    if not match:
+        print "Invalid msnim URI: %s" % uri
+        return
+
+    command = urllib.unquote_plus(match.group(1))
+    paramstring = match.group(3)
+    params = {}
+    if paramstring:
+        for param in paramstring.split("&"):
+            key, value = extendlist(param.split("=", 1), 2, "")
+            params[key] = urllib.unquote_plus(value)
+    screenname = params.get("contact", "")
+
+    account = findaccount(protocol)
+
+    if command.lower() == "chat":
+        goim(account, screenname)
+    elif command.lower() == "add":
+        addbuddy(account, screenname)
+
+def sip(uri):
+    protocol = "prpl-simple"
+    match = re.match(r"^sip:(.*)", uri)
+    if not match:
+        print "Invalid sip URI: %s" % uri
+        return
+
+    screenname = urllib.unquote_plus(match.group(1))
+    account = findaccount(protocol)
+    goim(account, screenname)
+
+def xmpp(uri):
+    protocol = "prpl-jabber"
+    match = re.match(r"^xmpp:((//)?([^/?#]*))?(/?([^?#]*))(\?([^;#]*)(;([^#]*))?)?(#(.*))?", uri)
+    if not match:
+        print "Invalid xmpp URI: %s" % uri
+        return
+
+    tmp = match.group(3)
+    if (tmp):
+        accountname = urllib.unquote_plus(tmp)
+    else:
+        accountname = ""
+
+    screenname = urllib.unquote_plus(match.group(5))
+
+    tmp = match.group(7)
+    if (tmp):
+        command = urllib.unquote_plus(tmp)
+    else:
+        command = ""
+
+    paramstring = match.group(9)
+    params = {}
+    if paramstring:
+        for param in paramstring.split(";"):
+            key, value = extendlist(param.split("=", 1), 2, "")
+            params[key] = urllib.unquote_plus(value)
+
+    account = findaccount(protocol, accountname)
+
+    if command.lower() == "message":
+        goim(account, screenname, params.get("body"))
+    elif command.lower() == "join":
+        room, server = screenname.split("@")
+        gochat(account, {"room": room, "server": server})
+    elif command.lower() == "roster":
+        addbuddy(account, screenname, params.get("group", ""), params.get("name", ""))
+    else:
+        goim(account, screenname)
+
+def ymsgr(uri):
+    protocol = "prpl-yahoo"
+    match = re.match(r"^ymsgr:([^?]*)(\?([^&]*)(&(.*))?)", uri)
+    if not match:
+        print "Invalid ymsgr URI: %s" % uri
+        return
+
+    command = urllib.unquote_plus(match.group(1))
+    screenname = urllib.unquote_plus(match.group(3))
+    paramstring = match.group(5)
+    params = {}
+    if paramstring:
+        for param in paramstring.split("&"):
+            key, value = extendlist(param.split("=", 1), 2, "")
+            params[key] = urllib.unquote_plus(value)
+
+    account = findaccount(protocol)
+
+    if command.lower() == "sendim":
+        goim(account, screenname, params.get("m"))
+    elif command.lower() == "chat":
+        gochat(account, {"room": screenname})
+    elif command.lower() == "addfriend":
+        addbuddy(account, screenname)
+
+
+def main(argv=sys.argv):
+    if len(argv) != 2:
+        print "Usage: %s URI" % argv[0]
+        print "Example: %s \"xmpp:romeo@montague.net?message\"" % argv[0]
+        return
+
+    uri = argv[1]
+    type = uri.split(":")[0]
+
+    if type == "aim":
+        aim(uri)
+    elif type == "gg":
+        gg(uri)
+    elif type == "icq":
+        icq(uri)
+    elif type == "irc":
+        irc(uri)
+    elif type == "msnim":
+        msnim(uri)
+    elif type == "sip":
+        sip(uri)
+    elif type == "xmpp":
+        xmpp(uri)
+    elif type == "ymsgr":
+        ymsgr(uri)
+    else:
+        print "Unkown protocol: %s" % type
+
+if __name__ == "__main__":
+    main()
--- a/libpurple/tests/Makefile.am	Sat Mar 24 17:07:17 2007 +0000
+++ b/libpurple/tests/Makefile.am	Sat Mar 24 17:51:05 2007 +0000
@@ -14,6 +14,7 @@
 check_libpurple_CFLAGS=\
         @CHECK_CFLAGS@ \
 		$(GLIB_CFLAGS) \
+		$(DEBUG_CFLAGS) \
 		-I.. \
 		-DBUILDDIR=\"$(top_builddir)\"
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin.spec.in	Sat Mar 24 17:51:05 2007 +0000
@@ -0,0 +1,495 @@
+# Older RPM doesn't define these by default
+%{!?perl_vendorlib: %define perl_vendorlib %(eval "`%{__perl} -V:installvendorlib`"; echo $installvendorlib)}
+%{!?perl_vendorarch: %define perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch)}
+%{!?perl_archlib: %define perl_archlib %(eval "`%{__perl} -V:installarchlib`"; echo $installarchlib)}
+
+# When not doing betas comment this out
+# NOTE: %defines in spec files are evaluated in comments so the correct
+#       way to comment it out is to replace the % with #
+#define beta 7
+
+%if 0%{?beta}
+%define pidginver %(echo "@VERSION@"|sed -e 's/dev//; s/beta.*//')
+%else
+%define pidginver @VERSION@
+%endif
+
+Summary:    A GTK+ based multiprotocol instant messaging client
+Name:       @PACKAGE@
+Version:    %pidginver
+Release:    0%{?beta:.beta%{beta}}
+Epoch:      0
+License:    GPL
+Group:      Applications/Internet
+URL:        http://pidgin.im/
+Packager:   %{packager}
+Source:     %{name}-@VERSION@.tar.bz2
+BuildRoot:  %{_tmppath}/%{name}-%{version}-root
+
+# Generic build requirements
+BuildRequires: libtool, pkgconfig, intltool, gettext, libxml2-devel
+%{?_with_avahi:BuildRequires: avahi-compat-howl-devel}
+%{!?_without_gtkspell:BuildRequires: gtkspell-devel}
+%{?_with_howl:BuildRequires: howl-devel}
+%{?_with_meanwhile:BuildRequires: meanwhile-devel}
+%{?_with_mono:BuildRequires: mono-devel}
+%{?_with_sasl:BuildRequires: cyrus-sasl-devel >= 2}
+%{?_with_silc:BuildRequires: /usr/include/silc/silcclient.h}
+%{?_with_tcl:BuildRequires: tcl, tk, /usr/include/tcl.h}
+%{!?_without_text:BuildRequires: ncurses-devel}
+
+%if "%{_vendor}" == "suse"
+# For SuSE:
+BuildRequires: gnutls-devel
+%{?_with_dbus:BuildRequires: dbus-1-devel >= 0.35}
+%{!?_without_gstreamer:BuildRequires: gstreamer010-devel >= 0.10}
+%else
+%{?_with_dbus:BuildRequires: dbus-devel >= 0.35}
+%{!?_without_gstreamer:BuildRequires: gstreamer-devel >= 0.10}
+%endif
+
+# Mandrake 10.1 and lower || Mandrake 10.2 (and higher?)
+%if "%{_vendor}" == "MandrakeSoft" || "%{_vendor}" == "Mandrakesoft" || "%{_vendor}" == "Mandriva"
+# For Mandrake/Mandriva:
+BuildRequires: libgtk+2.0_0-devel, libnss3-devel, perl-devel
+Obsoletes:  libgaim-remote0
+%else
+# For SuSE, Red Hat, Fedora and others:
+BuildRequires: gtk2-devel
+%if "%{_vendor}" != "suse"
+# For Red Hat, Fedora and others:
+# let's assume RH & FC1 are the only brain-dead distros missing the
+# perl-XML-Parser dependency on intltool and that other RH/FC releases
+# don't care if we specify it here
+BuildRequires: perl-XML-Parser
+BuildRequires: mozilla-nss-devel
+%endif
+%endif
+
+# For some reason perl isn't always automatically detected as a requirement :(
+Requires: perl
+# Gadu-Gadu support was split out temporarily (only as gaim)
+Provides: gaim-gadugadu = %{epoch}:%{version}-%{release}
+
+%package devel
+Summary:    Development headers, documentation, and libraries for Pidgin
+Group:      Applications/Internet
+Requires:   pkgconfig, pidgin = %{epoch}:%{version}
+
+%if 0%{?_with_howl:1} || 0%{?_with_avahi:1}
+%package bonjour
+Summary:    Bonjour plugin for Pidgin
+Group:      Applications/Internet
+Requires:   pidgin = %{epoch}:%{version}
+%endif
+
+%if 0%{?_with_meanwhile:1}
+%package meanwhile
+Summary:    Lotus Sametime plugin for Pidgin using the Meanwhile library
+Group:      Applications/Internet
+Requires:   pidgin = %{epoch}:%{version}
+%endif
+
+%if 0%{?_with_mono:1}
+%package mono
+Summary:    Mono .NET plugin support for Pidgin
+Group:      Applications/Internet
+Requires:   pidgin = %{epoch}:%{version}
+%endif
+
+%if 0%{?_with_silc:1}
+%package silc
+Summary:    SILC (Secure Internet Live Conferencing) plugin for Pidgin
+Group:      Applications/Internet
+Requires:   pidgin = %{epoch}:%{version}
+%endif
+
+%if 0%{?_with_tcl:1}
+%package tcl
+Summary:    Tcl scripting support for Pidgin
+Group:      Applications/Internet
+Requires:   pidgin = %{epoch}:%{version}
+%endif
+
+%if 0%{!?_without_text:1}
+%package -n finch
+Summary:    A text-based user interface for Pidgin
+Group:      Applications/Internet
+Requires:   pidgin = %{epoch}:%{version}
+%endif
+
+%description
+Pidgin allows you to talk to anyone using a variety of messaging
+protocols including AIM, MSN, Yahoo!, Jabber, Bonjour, Gadu-Gadu,
+ICQ, IRC, Novell Groupwise, QQ, Lotus Sametime, SILC, Simple and
+Zephyr.  These protocols are implemented using a modular, easy to
+use design.  To use a protocol, just add an account using the
+account editor.
+
+Pidgin supports many common features of other clients, as well as many
+unique features, such as perl scripting, TCL scripting and C plugins.
+
+Pidgin is not affiliated with or endorsed by America Online, Inc.,
+Microsoft Corporation, Yahoo! Inc., or ICQ Inc.
+
+%description devel
+The pidgin-devel package contains the header files, developer
+documentation, and libraries required for development of Pidgin scripts
+and plugins.
+
+%if 0%{?_with_howl:1} || 0%{?_with_avahi:1}
+%description bonjour
+Bonjour plugin for Pidgin.
+%endif
+
+%if 0%{?_with_meanwhile:1}
+%description meanwhile
+Lotus Sametime plugin for Pidgin using the Meanwhile library.
+%endif
+
+%if 0%{?_with_mono:1}
+%description mono
+Mono plugin loader for Pidgin.  This package will allow you to write or
+use Pidgin plugins written in the .NET programming language.
+%endif
+
+%if 0%{?_with_silc:1}
+%description silc
+SILC (Secure Internet Live Conferencing) plugin for Pidgin.
+%endif
+
+%if 0%{!?without_text:1}
+%description -n finch
+A text-based user interface for Pidgin.  This can be run from a
+standard text console or from a terminal within X Windows.  It
+uses ncurses and our homegrown gnt library for drawing windows
+and text.
+%endif
+
+%if 0%{?_with_tcl:1}
+%description tcl
+Tcl plugin loader for Pidgin.  This package will allow you to write or
+use Pidgin plugins written in the Tcl programming language.
+%endif
+
+%prep
+%setup -q -n %{name}-@VERSION@
+
+%build
+CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{_prefix} \
+                                    --bindir=%{_bindir} \
+                                    --datadir=%{_datadir} \
+                                    --includedir=%{_includedir} \
+                                    --libdir=%{_libdir} \
+                                    --mandir=%{_mandir} \
+                                    --sysconfdir=%{_sysconfdir} \
+                                    --disable-schemas-install \
+                                    %{!?_with_dbus:--disable-dbus} \
+                                    %{?_without_gstreamer:--disable-gstreamer} \
+                                    %{?_without_gtkspell:--disable-gtkspell} \
+                                    %{?_with_mono:--enable-mono} \
+                                    %{?_with_perlmakehack:--with-perl-lib=%{buildroot}%{_prefix}} \
+                                    %{!?_with_perlmakehack:--with-perl-lib=%{_prefix}} \
+                                    %{?_with_sasl:--enable-cyrus-sasl} \
+                                    %{?_with_silc:--with-silc-includes=%{_includedir}/silc} \
+                                    %{?_with_silc:--with-silc-libs=%{_libdir}/silc} \
+                                    %{!?_with_tcl:--disable-tcl} \
+                                    %{?_without_text:--disable-consoleui}
+
+make %{?_smp_mflags}
+
+%install
+rm -rf %{buildroot}
+%if 0%{?_with_perlmakehack:1}
+make prefix=%{buildroot}%{_prefix} bindir=%{buildroot}%{_bindir} \
+     datadir=%{buildroot}%{_datadir} includedir=%{buildroot}%{_includedir} \
+     libdir=%{buildroot}%{_libdir} mandir=%{buildroot}%{_mandir} \
+     sysconfdir=%{buildroot}%{_sysconfdir} \
+     install
+%else
+make DESTDIR=$RPM_BUILD_ROOT install
+%endif
+
+# Delete files that we don't want to put in any of the RPMs
+rm -f $RPM_BUILD_ROOT%{_libdir}/finch/*.la
+rm -f $RPM_BUILD_ROOT%{_libdir}/pidgin/*.la
+rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/*.la
+rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
+rm -f $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod
+find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} ';'
+find $RPM_BUILD_ROOT -type f -name '*.bs' -empty -exec rm -f {} ';'
+# do we want to ship the nullclient ?
+rm -f $RPM_BUILD_ROOT%{_bindir}/nullclient
+
+%if 0%{!?_with_howl:1} && 0%{!?_with_avahi:1}
+rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/libbonjour.so
+%endif
+
+%if 0%{!?_with_meanwhile:1}
+rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/libsametime.so
+%endif
+
+%if 0%{!?_with_mono:1}
+rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/mono.so
+rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/*.dll
+%endif
+
+%if 0%{!?_with_silc:1}
+rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/libsilcpurple.so
+%endif
+
+%if 0%{!?_with_tcl:1}
+rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/tcl.so
+%endif
+
+%if 0%{?_without_text:1}
+rm -f $RPM_BUILD_ROOT%{_mandir}/man1/finch.*
+rm -rf $RPM_BUILD_ROOT%{_bindir}/finch
+rm -f $RPM_BUILD_ROOT%{_libdir}/libgnt.so.*
+%endif
+
+%find_lang %{name}
+
+find $RPM_BUILD_ROOT%{_libdir}/pidgin $RPM_BUILD_ROOT%{_libdir}/libpurple -xtype f -print | \
+        sed "s@^$RPM_BUILD_ROOT@@g" | \
+        grep -v /libbonjour.so | \
+        grep -v /libsilcpurple.so | \
+        grep -v /libsametime.so | \
+        grep -v /mono.so | \
+        grep -v /tcl.so | \
+        grep -v ".dll$" | \
+        grep -v ".tcl$" > %{name}-%{version}-coreplugins
+
+# files -f file can only take one filename :(
+cat %{name}.lang >> %{name}-%{version}-coreplugins
+
+%clean
+rm -rf %{buildroot}
+
+%pre
+if [ "$1" -gt 1 -a -n "`which gconftool-2 2>/dev/null`" ]; then
+    export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
+    gconftool-2 --makefile-uninstall-rule \
+        %{_sysconfdir}/gconf/schemas/gaim.schemas >/dev/null || :
+    killall -HUP gconfd-2 || :
+fi
+
+%post
+if [ -n "`which gconftool-2 2>/dev/null`" ]; then
+    export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
+    gconftool-2 --makefile-install-rule \
+        %{_sysconfdir}/gconf/schemas/gaim.schemas > /dev/null || :
+    killall -HUP gconfd-2 || :
+fi
+/sbin/ldconfig
+
+%preun
+if [ "$1" -eq 0 -a -n "`which gconftool-2 2>/dev/null`" ]; then
+    export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
+    gconftool-2 --makefile-uninstall-rule \
+      %{_sysconfdir}/gconf/schemas/gaim.schemas > /dev/null || :
+    killall -HUP gconfd-2 || :
+fi
+
+%postun -p /sbin/ldconfig
+
+%files -f %{name}-%{version}-coreplugins
+%defattr(-, root, root)
+
+%doc AUTHORS
+%doc COPYING
+%doc COPYRIGHT
+%doc ChangeLog
+%doc NEWS
+%doc README
+%doc README.SVN
+%doc doc/FAQ
+%doc doc/the_penguin.txt
+%doc %{_mandir}/man1/pidgin.*
+%doc %{_mandir}/man3*/*
+
+%dir %{_libdir}/pidgin
+%dir %{_libdir}/libpurple
+%attr(755, root, root) %{perl_vendorarch}/Purple*
+%attr(755, root, root) %{perl_vendorarch}/auto/Purple
+
+%{_bindir}/pidgin
+%{_datadir}/pixmaps/*
+%dir %{_datadir}/sounds/pidgin
+%{_datadir}/sounds/pidgin/*
+%{_datadir}/applications/*
+%{_libdir}/libpurple.so.*
+%{_sysconfdir}/gconf/schemas/gaim.schemas
+
+%if 0%{?_with_dbus:1}
+%{_bindir}/purple-client-example
+%{_bindir}/purple-remote
+%{_bindir}/purple-send
+%{_bindir}/purple-send-async
+%{_bindir}/purple-url-handler
+%{_libdir}/libpurple-client.so.*
+%{_datadir}/dbus-1/services/gaim.service
+%doc README.dbus
+%doc libpurple/purple-notifications-example
+%endif
+
+%files devel
+%defattr(-, root, root)
+
+%doc ChangeLog.API
+%doc HACKING
+%doc PLUGIN_HOWTO
+%doc PROGRAMMING_NOTES
+
+%dir %{_includedir}/finch
+%dir %{_includedir}/gnt
+%dir %{_includedir}/libpurple
+%dir %{_includedir}/pidgin
+%{_includedir}/finch/*.h
+%{_includedir}/gnt/*.h
+%{_includedir}/libpurple/*.h
+%{_includedir}/pidgin/*.h
+%{_libdir}/libpurple.so
+%{_libdir}/libgnt.so
+%{_libdir}/pkgconfig/purple.pc
+%{_libdir}/pkgconfig/pidgin.pc
+%{_libdir}/pkgconfig/gnt.pc
+%{_datadir}/aclocal/gaim.m4
+%if 0%{?_with_dbus:1}
+%{_libdir}/libpurple-client.so
+%endif
+
+%if 0%{?_with_howl:1} || 0%{?_with_avahi:1}
+%files bonjour
+%defattr(-, root, root)
+
+%{_libdir}/libpurple/libbonjour.*
+%endif
+
+%if 0%{?_with_meanwhile:1}
+%files meanwhile
+%defattr(-, root, root)
+
+%{_libdir}/libpurple/libsametime.*
+%endif
+
+%if 0%{?_with_mono:1}
+%files mono
+%defattr(-, root, root)
+
+%{_libdir}/libpurple/mono.so
+%{_libdir}/libpurple/*.dll
+%endif
+
+%if 0%{?_with_silc:1}
+%files silc
+%defattr(-, root, root)
+
+%{_libdir}/libpurple/libsilcpurple.*
+%endif
+
+%if 0%{?_with_tcl:1}
+%files tcl
+%defattr(-, root, root)
+
+%{_libdir}/libpurple/tcl.so
+%endif
+
+%if 0%{!?_without_text:1}
+%files -n finch
+%defattr(-, root, root)
+
+%doc %{_mandir}/man1/finch.*
+%{_bindir}/finch
+%{_libdir}/finch/*.so
+%{_libdir}/libgnt.so.*
+%endif
+
+%changelog
+* Sat Mar 24 2007 Stu Tomlinson <stu@nosnilmot.com>
+- Update to reflect renaming to pidgin/libpurple
+
+* Sun Oct  1 2006 Stu Tomlinson <stu@nosnilmot.com>
+- We can build with internal gadu gadu again, so bring it back into the
+  main package
+- Deal with gconf schame uninstallation on package upgrade and removal
+
+* Sun Aug 20 2006 Stu Tomlinson <stu@nosnilmot.com>
+- Make the gstreamer-devel dependency overridable with '--without-gstreamer'
+  to allow building on older distributions without suitable gstreamer
+
+* Tue Aug 15 2006 Mark Doliner <thekingant@users.sourceforge.net>
+- Add a BuildRequire for gstreamer-devel
+- Remove the BuildRequires for audiofile-devel and libao-devel
+
+* Mon May 8 2006 Mark Doliner <thekingant@users.sourceforge.net>
+- Add --with avahi option to compile the gaim-bonjour package against
+  Avahi's Howl compatibility layer
+
+* Wed Mar 29 2006 Stu Tomlinson <stu@nosnilmot.com>
+- Source RPM uses tar.bz2 now to save space
+- Update BuildRequires for new intltool dependencies
+- Add a --with perlmakehack option to allow builds to succeed on RH9
+- Add a --with gadugadu to build (separate) gaim-gadugadu package
+
+* Sat Dec 17 2005 Stu Tomlinson <stu@nosnilmot.com>
+- Add support for beta versions so the subsequent releases are seen as newer
+  by RPM
+- Split of sametime support to gaim-meanwhile
+- Use make DESTDIR=... instead of overloading prefix etc. when installing
+- Default build to include cyrus-sasl support in Jabber
+- Add --with dbus to build with DBUS support
+
+* Sun Dec 04 2005 Christopher O'Brien <siege@preoccupied.net>
+- Added obsoletes gaim-meanwhile
+
+* Sun Oct 30 2005 Stu Tomlinson <stu@nosnilmot.com>
+- Add separate gaim-bonjour package if built with --with-howl
+- Add separate gaim-mono package if built with --with-mono
+- Exclude some unwanted perl files
+
+* Sat Aug 20 2005 Stu Tomlinson <stu@nosnilmot.com>
+- Include libgaimperl.so
+- Include gaim.m4 in gaim-devel
+
+* Thu Apr 28 2005 Stu Tomlinson <stu@nosnilmot.com>
+- Use perl_vendorlib & perl_archlib for better 64bit compat (Jeff Mahoney)
+- Clean up Requires, most should be auto-detected
+- Restore gtkspell-devel build requirement (and add --without gtkspell option)
+- Fix Tcl build requirements to work across more distros
+- Fix SILC build requirements to work across more distros
+
+* Mon Oct 11 2004 John Jolly <john.jolly@gmail.com>
+- Added if "%{_vendor}" == "suse" to handle GnuTLS libraries for SuSE
+
+* Sat Oct  2 2004 Stu Tomlinson <stu@nosnilmot.com>
+- If --with tcl or silc are not specified, make sure the plugins don't
+  exist to prevent RPM complaining about unpackaged files
+
+* Tue Jun 29 2004 Ethan Blanton <eblanton@cs.ohiou.edu>
+- Change Tcl to use --with tcl, the same as SILC, and build a gaim-tcl
+  package if specified.
+
+* Thu Jun 24 2004 Mark Doliner <thekingant@users.sourceforge.net>
+- Add --with silc rebuild option for compiling a separate gaim-silc
+  RPM containing the silc protocol plugin (Stu Tomlinson).
+
+* Wed Jun 23 2004 Ethan Blanton <eblanton@cs.ohiou.edu>
+- Moved gaim headers and a pkgconfig configuration file into the
+  gaim-devel RPM (Stu Tomlinson).
+
+* Thu Jan 15 2004 Ethan Blanton <eblanton@cs.ohiou.edu>
+- Removed the manual strip command, as it seems to be unwarranted if
+  the necessary programs are properly installed.  (For me, this was
+  elfutils.)
+
+* Sun Jul 20 2003 Bjoern Voigt <bjoern@cs.tu-berlin.de>
+- Added pkgconfig build dependency.
+- if "%{_vendor}" != "MandrakeSoft" now also works with rpm 3.x.
+- Added Gaim-specific directories to list of Gaim's files.
+
+* Wed Jul 16 2003 Ethan Blanton <eblanton@cs.ohiou.edu>
+- Complete spec file rewrite to take advantage of "new" RPM features
+  and make things prettier.
+- Use system-supplied %%{_prefix}, %%{_datadir}, etc. rather than
+  attempt to define our own.
--- a/pidgin/Makefile.am	Sat Mar 24 17:07:17 2007 +0000
+++ b/pidgin/Makefile.am	Sat Mar 24 17:51:05 2007 +0000
@@ -4,6 +4,7 @@
 		getopt1.c \
 		Makefile.mingw \
 		pidgin.pc.in \
+		pidgin-uninstalled.pc.in \
 		win32/IdleTracker/Makefile.mingw \
 		win32/IdleTracker/idletrack.c \
 		win32/IdleTracker/idletrack.h \
--- a/pidgin/gtkconv.c	Sat Mar 24 17:07:17 2007 +0000
+++ b/pidgin/gtkconv.c	Sat Mar 24 17:51:05 2007 +0000
@@ -3488,7 +3488,7 @@
 	g_object_unref(pixbuf);
 
 	if (flags && purple_conv_chat_is_user_ignored(chat, name)) {
-		filename = g_build_filename(DATADIR, "pixmaps", "purple", "status", "default", "ignored.png", NULL);
+		filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "status", "default", "ignored.png", NULL);
 		pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
 		g_free(filename);
 		scale2 = gdk_pixbuf_scale_simple(pixbuf, 15, 15, GDK_INTERP_BILINEAR);
--- a/pidgin/gtkdialogs.c	Sat Mar 24 17:07:17 2007 +0000
+++ b/pidgin/gtkdialogs.c	Sat Mar 24 17:51:05 2007 +0000
@@ -332,7 +332,7 @@
 	/* Generate a logo with a version number */
 	logo = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 	gtk_widget_realize(logo);
-	filename = g_build_filename(DATADIR, "pixmaps", "purple", "logo.png", NULL);
+	filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "logo.png", NULL);
 	pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
 	g_free(filename);
 	pidgin_logo_versionize(&pixbuf, logo);
--- a/pidgin/gtkdnd-hints.c	Sat Mar 24 17:07:17 2007 +0000
+++ b/pidgin/gtkdnd-hints.c	Sat Mar 24 17:51:05 2007 +0000
@@ -122,7 +122,7 @@
 	for (i = 0; hint_windows[i].filename != NULL; i++) {
 		gchar *fname;
 
-		fname = g_build_filename(DATADIR, "pixmaps", "purple",
+		fname = g_build_filename(DATADIR, "pixmaps", "pidgin",
 								 hint_windows[i].filename, NULL);
 
 		hint_windows[i].widget = dnd_hints_init_window(fname);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/pidgin-uninstalled.pc.in	Sat Mar 24 17:51:05 2007 +0000
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+datadir=@datadir@
+sysconfdir=@sysconfdir@
+
+Name: Pidgin
+Description: Pidgin is a GTK2-based instant messenger application.
+Version: @VERSION@
+Requires: gtk+-2.0 purple
+Cflags: -I${pc_top_builddir}/${pcfiledir}
--- a/pidgin/pidgin.pc.in	Sat Mar 24 17:07:17 2007 +0000
+++ b/pidgin/pidgin.pc.in	Sat Mar 24 17:51:05 2007 +0000
@@ -4,10 +4,10 @@
 includedir=@includedir@
 datadir=@datadir@
 sysconfdir=@sysconfdir@
- 
+
 Name: Pidgin
 Description: Pidgin is a GTK2-based instant messenger application.
 Version: @VERSION@
-Requires: glib-2.0 gtk+-2.0 purple
+Requires: gtk+-2.0 purple
 Cflags: -I${includedir}/pidgin
 
--- a/pidgin/pixmaps/buddy_icons/qq/Makefile.am	Sat Mar 24 17:07:17 2007 +0000
+++ b/pidgin/pixmaps/buddy_icons/qq/Makefile.am	Sat Mar 24 17:51:05 2007 +0000
@@ -100,6 +100,6 @@
 	qq_99.png \
 	qq_100.png
 
-qqbuddyiconspixdir = $(datadir)/pixmaps/gaim/buddy_icons/qq
+qqbuddyiconspixdir = $(datadir)/pixmaps/purple/buddy_icons/qq
 
 qqbuddyiconspix_DATA = $(EXTRA_DIST)
--- a/pidgin/pixmaps/emblems/16/scalable/Makefile.am	Sat Mar 24 17:07:17 2007 +0000
+++ b/pidgin/pixmaps/emblems/16/scalable/Makefile.am	Sat Mar 24 17:51:05 2007 +0000
@@ -1,9 +1,8 @@
-EXTRA_DIST = 	aol-client.svg \
+EXTRA_DIST =	aol-client.svg \
 		blocked.svg \
 		bot.svg \
 		external.svg \
 		female.svg \
-		founder.svg \
 		free-for-chat.svg \
 		game.svg \
 		male.svg \
--- a/pidgin/pixmaps/emotes/none/Makefile.am	Sat Mar 24 17:07:17 2007 +0000
+++ b/pidgin/pixmaps/emotes/none/Makefile.am	Sat Mar 24 17:51:05 2007 +0000
@@ -1,5 +1,5 @@
-gaimsmileypixdir = $(datadir)/pixmaps/pidgin/emotes/none
-gaimsmileypix_DATA = theme 
+pidginsmileypixdir = $(datadir)/pixmaps/pidgin/emotes/none
+pidginsmileypix_DATA = theme
 
-EXTRA_DIST = $(gaimsmileypix_DATA) \
+EXTRA_DIST = $(pidginsmileypix_DATA) \
 	Makefile.mingw
--- a/pidgin/pixmaps/status/default/Makefile.am	Sat Mar 24 17:07:17 2007 +0000
+++ b/pidgin/pixmaps/status/default/Makefile.am	Sat Mar 24 17:51:05 2007 +0000
@@ -42,6 +42,6 @@
 	yahoo.png \
 	zephyr.png
 
-gaimstatuspixdir = $(datadir)/pixmaps/gaim/status/default
+pidginstatuspixdir = $(datadir)/pixmaps/pidgin/status/default
 
-gaimstatuspix_DATA = $(EXTRA_DIST)
+pidginstatuspix_DATA = $(EXTRA_DIST)
--- a/pidgin/plugins/gevolution/Makefile.am	Sat Mar 24 17:07:17 2007 +0000
+++ b/pidgin/plugins/gevolution/Makefile.am	Sat Mar 24 17:51:05 2007 +0000
@@ -1,4 +1,4 @@
-plugindir = $(libdir)/gaim
+plugindir = $(libdir)/pidgin
 
 gevolution_la_LDFLAGS = -module -avoid-version