diff options
Diffstat (limited to 'net-im/pidgin/files')
-rw-r--r-- | net-im/pidgin/files/pidgin-2.7.2-ldflags.patch | 25 | ||||
-rw-r--r-- | net-im/pidgin/files/pidgin-gnome-keyring.patch | 175 |
2 files changed, 200 insertions, 0 deletions
diff --git a/net-im/pidgin/files/pidgin-2.7.2-ldflags.patch b/net-im/pidgin/files/pidgin-2.7.2-ldflags.patch new file mode 100644 index 0000000..1a4cd7a --- /dev/null +++ b/net-im/pidgin/files/pidgin-2.7.2-ldflags.patch @@ -0,0 +1,25 @@ +Index: pidgin-2.7.2/libpurple/plugins/perl/common/Makefile.PL.in +=================================================================== +--- pidgin-2.7.2.orig/libpurple/plugins/perl/common/Makefile.PL.in ++++ pidgin-2.7.2/libpurple/plugins/perl/common/Makefile.PL.in +@@ -10,6 +10,7 @@ WriteMakefile( + (ABSTRACT_FROM => '@srcdir@/Purple.pm', # finds $ABSTRACT + AUTHOR => 'Purple <http://pidgin.im/>') : ()), + 'DEFINE' => '@DEBUG_CFLAGS@', ++ 'dynamic_lib' => { 'OTHERLDFLAGS' => '@LDFLAGS@' }, + 'INC' => '-I. -I@srcdir@ -I@top_srcdir@ -I@top_srcdir@/libpurple @GLIB_CFLAGS@', + 'OBJECT' => '$(O_FILES)', # link all the C files too + # 'OPTIMIZE' => '-g', # For debugging +Index: pidgin-2.7.2/pidgin/plugins/perl/common/Makefile.PL.in +=================================================================== +--- pidgin-2.7.2.orig/pidgin/plugins/perl/common/Makefile.PL.in ++++ pidgin-2.7.2/pidgin/plugins/perl/common/Makefile.PL.in +@@ -8,7 +8,7 @@ WriteMakefile( + ($] >= 5.005 ? ## Add these new keywords supported since 5.005 + ('ABSTRACT_FROM' => '@srcdir@/Pidgin.pm', # finds $ABSTRACT + 'AUTHOR' => 'Pidgin <http://pidgin.im/>') : ()), +- 'DEFINE' => '@DEBUG_CFLAGS@', ++ 'DEFINE' => '@DEBUG_CFLAGS@ @LDFLAGS@', + 'INC' => '-I. -I@srcdir@ -I@top_srcdir@ -I@top_srcdir@/libpurple -I@top_srcdir@/pidgin @GTK_CFLAGS@', + 'OBJECT' => '$(O_FILES)', # link all the C files too + 'TYPEMAPS' => ["@top_srcdir@/libpurple/plugins/perl/common/typemap"], diff --git a/net-im/pidgin/files/pidgin-gnome-keyring.patch b/net-im/pidgin/files/pidgin-gnome-keyring.patch new file mode 100644 index 0000000..8fe92ef --- /dev/null +++ b/net-im/pidgin/files/pidgin-gnome-keyring.patch @@ -0,0 +1,175 @@ +Index: pidgin-2.6.3/configure.ac +=================================================================== +--- pidgin-2.6.3.orig/configure.ac ++++ pidgin-2.6.3/configure.ac +@@ -1799,6 +1799,20 @@ if test "x$enable_nss" != "xno"; then + [AC_HELP_STRING([--with-nss-libs=PREFIX], [specify location of Mozilla nss3 libs.])], + [with_nss_libs="$withval"]) + ++dnl ####################################################################### ++dnl # Check for gnome-keyring ++dnl #--enable-gnome-keyring=(yes|no) ++dnl ####################################################################### ++AC_ARG_ENABLE(gnome-keyring, ++ AC_HELP_STRING([--enable-gnome-keyring], ++ [use gnome keyring for storing password [default=no]]),, ++ enable_gnome_keyring=no) ++if test "x$enable_gnome_keyring" = "xyes"; then ++ PKG_CHECK_MODULES(PURPLE_KEYRING, ++ gnome-keyring-1, ++ AC_DEFINE(PURPLE_ENABLE_KEYRING, [], [Set if we should use gnome-keyring])) ++fi ++ + + if test -n "$with_nspr_includes" || test -n "$with_nspr_libs" || \ + test -n "$with_nss_includes" || test -n "$with_nss_libs" || +Index: pidgin-2.6.3/libpurple/Makefile.am +=================================================================== +--- pidgin-2.6.3.orig/libpurple/Makefile.am ++++ pidgin-2.6.3/libpurple/Makefile.am +@@ -291,6 +291,7 @@ libpurple_la_LIBADD = \ + $(GLIB_LIBS) \ + $(LIBXML_LIBS) \ + $(NETWORKMANAGER_LIBS) \ ++ $(PURPLE_KEYRING_LIBS) \ + $(INTLLIBS) \ + $(FARSIGHT_LIBS) \ + $(GSTREAMER_LIBS) \ +@@ -306,6 +307,7 @@ AM_CPPFLAGS = \ + $(GLIB_CFLAGS) \ + $(DEBUG_CFLAGS) \ + $(DBUS_CFLAGS) \ ++ $(PURPLE_KEYRING_CFLAGS) \ + $(LIBXML_CFLAGS) \ + $(FARSIGHT_CFLAGS) \ + $(GSTREAMER_CFLAGS) \ +Index: pidgin-2.6.3/libpurple/account.c +=================================================================== +--- pidgin-2.6.3.orig/libpurple/account.c ++++ pidgin-2.6.3/libpurple/account.c +@@ -49,6 +49,13 @@ typedef struct + #define PURPLE_ACCOUNT_GET_PRIVATE(account) \ + ((PurpleAccountPrivate *) (account->priv)) + ++#ifdef PURPLE_ENABLE_KEYRING ++#include <gnome-keyring.h> ++ ++static char * purple_account_get_password_from_keyring (const char *_prpl, const char *_user); ++static gboolean purple_account_set_password_in_keyring (const char *_prpl, const char *_user, const char *password); ++#endif ++ + /* TODO: Should use PurpleValue instead of this? What about "ui"? */ + typedef struct + { +@@ -378,8 +385,13 @@ account_to_xmlnode(PurpleAccount *accoun + if (purple_account_get_remember_password(account) && + ((tmp = purple_account_get_password(account)) != NULL)) + { ++#ifdef PURPLE_ENABLE_KEYRING ++ purple_account_set_password_in_keyring( purple_account_get_protocol_id(account), ++ purple_account_get_username(account), tmp); ++#else + child = xmlnode_new_child(node, "password"); + xmlnode_insert_data(child, tmp, -1); ++#endif + } + + if ((tmp = purple_account_get_alias(account)) != NULL) +@@ -828,17 +840,30 @@ parse_account(xmlnode *node) + } + + ret = purple_account_new(name, _purple_oscar_convert(name, protocol_id)); /* XXX: */ +- g_free(name); +- g_free(protocol_id); +- +- /* Read the password */ +- child = xmlnode_get_child(node, "password"); +- if ((child != NULL) && ((data = xmlnode_get_data(child)) != NULL)) ++ gboolean got_pwd = FALSE; ++#ifdef PURPLE_ENABLE_KEYRING ++ data = purple_account_get_password_from_keyring(protocol_id, name); ++ if (data) + { ++ got_pwd = TRUE; + purple_account_set_remember_password(ret, TRUE); + purple_account_set_password(ret, data); + g_free(data); + } ++#endif ++ if (!got_pwd) ++ { ++ /* Read the password */ ++ child = xmlnode_get_child(node, "password"); ++ if ((child != NULL) && ((data = xmlnode_get_data(child)) != NULL)) ++ { ++ purple_account_set_remember_password(ret, TRUE); ++ purple_account_set_password(ret, data); ++ g_free(data); ++ } ++ } ++ g_free(name); ++ g_free(protocol_id); + + /* Read the alias */ + child = xmlnode_get_child(node, "alias"); +@@ -2873,3 +2898,60 @@ purple_accounts_uninit(void) + purple_signals_disconnect_by_handle(handle); + purple_signals_unregister_by_instance(handle); + } ++ ++#ifdef PURPLE_ENABLE_KEYRING ++static char * ++purple_account_get_password_from_keyring(const char *_prpl, const char *_user) ++{ ++ GnomeKeyringNetworkPasswordData *found_item; ++ GnomeKeyringResult result; ++ GList *matches; ++ char *password; ++ ++ matches = NULL; ++ ++ result = gnome_keyring_find_network_password_sync ( ++ _user, /* user */ ++ NULL, /* domain */ ++ "gaim.local", /* server */ ++ NULL, /* object */ ++ _prpl, /* protocol */ ++ NULL, /* authtype */ ++ 1863, /* port */ ++ &matches); ++ ++ if (result != GNOME_KEYRING_RESULT_OK) ++ return NULL; ++ ++ g_assert (matches != NULL && matches->data != NULL); ++ ++ found_item = (GnomeKeyringNetworkPasswordData *) matches->data; ++ ++ password = g_strdup (found_item->password); ++ ++ gnome_keyring_network_password_list_free (matches); ++ ++ return password; ++} ++ ++static gboolean ++purple_account_set_password_in_keyring (const char *_prpl, const char *_user, const char *_password) ++{ ++ GnomeKeyringResult result; ++ guint32 item_id; ++ ++ result = gnome_keyring_set_network_password_sync ( ++ NULL, /* default keyring */ ++ _user, /* user */ ++ NULL, /* domain */ ++ "gaim.local", /* server */ ++ NULL, /* object */ ++ _prpl, /* protocol */ ++ NULL, /* authtype */ ++ 1863, /* port */ ++ _password, /* password */ ++ &item_id); ++ ++ return result == GNOME_KEYRING_RESULT_OK; ++} ++#endif |