[gnome-disk-utility] Make GNOME Keyring usage optional
- From: David Zeuthen <davidz src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-disk-utility] Make GNOME Keyring usage optional
- Date: Tue, 12 Jan 2010 21:04:14 +0000 (UTC)
commit 795ab7fd14211737e149fc3e2ad242b2ebcc30b0
Author: David Zeuthen <davidz redhat com>
Date: Tue Jan 12 15:59:22 2010 -0500
Make GNOME Keyring usage optional
At least for the time being (currently libgnome-keyring-1 crashes for
me - looks like an internal error).
configure.ac | 24 ++++++++++++++++++++++--
src/gdu-gtk/gdu-gtk.c | 13 ++++++++++++-
src/gdu-gtk/gdu-gtk.h | 1 +
src/gdu/gdu-util.c | 37 ++++++++++++++++++++++++++++++++++++-
4 files changed, 71 insertions(+), 4 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 039270e..4e0ec91 100644
--- a/configure.ac
+++ b/configure.ac
@@ -144,7 +144,6 @@ PKG_CHECK_MODULES(GIO2, [gio-2.0 >= $GIO2_REQUIRED])
PKG_CHECK_MODULES(GIO_UNIX2, [gio-unix-2.0 >= $GIO2_REQUIRED])
PKG_CHECK_MODULES(GTHREAD2, [gthread-2.0 >= $GLIB2_REQUIRED])
PKG_CHECK_MODULES(DBUS_GLIB, [dbus-glib-1 >= $DBUS_GLIB_REQUIRED])
-PKG_CHECK_MODULES(GNOME_KEYRING, [gnome-keyring-1 >= $GNOME_KEYRING_REQUIRED])
PKG_CHECK_MODULES(GTK2, [gtk+-2.0 >= $GTK2_REQUIRED])
PKG_CHECK_MODULES(UNIQUE, [unique-1.0 >= $UNIQUE_REQUIRED])
PKG_CHECK_MODULES(LIBNOTIFY, [libnotify >= $LIBNOTIFY_REQUIRED])
@@ -154,6 +153,26 @@ PKG_CHECK_MODULES(LIBATASMART, [libatasmart >= 0.14])
PKG_CHECK_MODULES(AVAHI_UI, [avahi-ui >= $AVAHI_UI_REQUIRED])
# *************
+# GNOME Keyring
+# *************
+
+have_gnome_keyring=no
+AC_ARG_ENABLE(gnome-keyring, AS_HELP_STRING([--disable-gnome-keyring], [disable use of GNOME Keyring]))
+
+if test "x$enable_gnome_keyring" != "xno"; then
+ PKG_CHECK_MODULES(GNOME_KEYRING, gnome-keyring-1 >= $GNOME_KEYRING_REQUIRED,
+ [AC_DEFINE(HAVE_GNOME_KEYRING, 1, [Define if gnome-keyring is available])
+ have_gnome_keyring=yes], have_gnome_keyring=no)
+ if test "x$have_gnome_keyring" = xno -a "x$enable_gnome_keyring" = xyes; then
+ AC_MSG_ERROR([gnome-keyring support requested but libraries not found])
+ fi
+fi
+
+AC_SUBST(GNOME_KEYRING_LIBS)
+AC_SUBST(GNOME_KEYRING_CFLAGS)
+AM_CONDITIONAL(ENABLE_GNOME_KEYRING, [test "$have_gnome_keyring" = "yes"])
+
+# *************
# Documentation
# *************
@@ -163,7 +182,7 @@ if test x$SCROLLKEEPER_CONFIG = xno; then
fi
# ********************
-# Internationalisation
+# Internationalization
# ********************
IT_PROG_INTLTOOL([$INTLTOOL_REQUIRED])
@@ -249,4 +268,5 @@ echo "
Maintainer mode: ${USE_MAINTAINER_MODE}
Building api docs: ${enable_gtk_doc}
Nautilus extension: ${have_nautilus}
+ GNOME Keyring support: ${have_gnome_keyring}
"
diff --git a/src/gdu-gtk/gdu-gtk.c b/src/gdu-gtk/gdu-gtk.c
index c6bd4b6..cbca84b 100644
--- a/src/gdu-gtk/gdu-gtk.c
+++ b/src/gdu-gtk/gdu-gtk.c
@@ -24,9 +24,12 @@
#include <glib-object.h>
#include <string.h>
-#include <gnome-keyring.h>
#include <dbus/dbus-glib.h>
+#ifdef HAVE_GNOME_KEYRING
+#include <gnome-keyring.h>
+#endif
+
#include <gdu/gdu.h>
#include "gdu-gtk.h"
@@ -806,6 +809,7 @@ out:
return secret;
}
+#ifdef HAVE_GNOME_KEYRING
static GnomeKeyringPasswordSchema encrypted_device_password_schema = {
GNOME_KEYRING_ITEM_GENERIC_SECRET,
{
@@ -813,6 +817,7 @@ static GnomeKeyringPasswordSchema encrypted_device_password_schema = {
{ NULL, 0 }
}
};
+#endif
char *
gdu_util_dialog_ask_for_new_secret (GtkWidget *parent_window,
@@ -892,6 +897,7 @@ gdu_util_dialog_ask_for_secret (GtkWidget *parent_window,
}
if (!bypass_keyring) {
+#ifdef HAVE_GNOME_KEYRING
if (gnome_keyring_find_password_sync (&encrypted_device_password_schema,
&password,
"luks-device-uuid", uuid,
@@ -903,6 +909,7 @@ gdu_util_dialog_ask_for_secret (GtkWidget *parent_window,
gnome_keyring_free_password (password);
goto out;
}
+#endif
}
if (gdu_device_is_partition (device)) {
@@ -937,6 +944,7 @@ gdu_util_dialog_ask_for_secret (GtkWidget *parent_window,
if (asked_user != NULL)
*asked_user = TRUE;
+#ifdef HAVE_GNOME_KEYRING
if (secret != NULL && (save_in_keyring || save_in_keyring_session)) {
const char *keyring;
gchar *name;
@@ -958,6 +966,7 @@ gdu_util_dialog_ask_for_secret (GtkWidget *parent_window,
g_free (name);
}
+#endif
out:
if (device != NULL)
@@ -1030,6 +1039,7 @@ gdu_util_dialog_change_secret (GtkWidget *parent_window,
goto out;
}
+#ifdef HAVE_GNOME_KEYRING
if (!bypass_keyring) {
if (gnome_keyring_find_password_sync (&encrypted_device_password_schema,
&password,
@@ -1042,6 +1052,7 @@ gdu_util_dialog_change_secret (GtkWidget *parent_window,
gnome_keyring_free_password (password);
}
}
+#endif
if (gdu_device_is_partition (device)) {
char *s;
diff --git a/src/gdu-gtk/gdu-gtk.h b/src/gdu-gtk/gdu-gtk.h
index 65aef65..5e5d45f 100644
--- a/src/gdu-gtk/gdu-gtk.h
+++ b/src/gdu-gtk/gdu-gtk.h
@@ -54,6 +54,7 @@
#include <gdu-gtk/gdu-edit-linux-md-dialog.h>
#include <gdu-gtk/gdu-drive-benchmark-dialog.h>
#include <gdu-gtk/gdu-connect-to-server-dialog.h>
+#include <gdu-gtk/gdu-create-linux-lvm2-volume-dialog.h>
#undef __GDU_GTK_INSIDE_GDU_GTK_H
G_BEGIN_DECLS
diff --git a/src/gdu/gdu-util.c b/src/gdu/gdu-util.c
index 0a04d8b..e658cd3 100644
--- a/src/gdu/gdu-util.c
+++ b/src/gdu/gdu-util.c
@@ -24,9 +24,12 @@
#include <glib-object.h>
#include <string.h>
-#include <gnome-keyring.h>
#include <dbus/dbus-glib.h>
+#ifdef HAVE_GNOME_KEYRING
+#include <gnome-keyring.h>
+#endif
+
#include "gdu-util.h"
#include "gdu-pool.h"
#include "gdu-device.h"
@@ -680,6 +683,7 @@ gdu_util_get_default_part_type_for_scheme_and_fstype (const char *scheme, const
/* ---------------------------------------------------------------------------------------------------- */
+#ifdef HAVE_GNOME_KEYRING
static GnomeKeyringPasswordSchema encrypted_device_password_schema = {
GNOME_KEYRING_ITEM_GENERIC_SECRET,
{
@@ -841,6 +845,37 @@ out:
}
/* ---------------------------------------------------------------------------------------------------- */
+#else /* ifdef HAVE_GNOME_KEYRING */
+
+gboolean
+gdu_util_save_secret (GduDevice *device,
+ const char *secret,
+ gboolean save_in_keyring_session)
+{
+ return FALSE;
+}
+
+gboolean
+gdu_util_delete_secret (GduDevice *device)
+{
+ return FALSE;
+}
+
+gboolean
+gdu_util_have_secret (GduDevice *device)
+{
+ return FALSE;
+}
+
+gchar *
+gdu_util_get_secret (GduDevice *device)
+{
+ return NULL;
+}
+
+#endif
+
+/* ---------------------------------------------------------------------------------------------------- */
char *
gdu_util_get_speed_for_display (guint64 speed)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]