[evolution-data-server/gnome-3-8] CamelGpgContext: Be aware of gpg2
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/gnome-3-8] CamelGpgContext: Be aware of gpg2
- Date: Thu, 18 Jul 2013 09:39:44 +0000 (UTC)
commit 2fd105370ad128126e60c233522bfd3a064423db
Author: Milan Crha <mcrha redhat com>
Date: Thu Jul 18 11:34:42 2013 +0200
CamelGpgContext: Be aware of gpg2
There can be installed only gpg2, without old gpg executable, but
CamelGpgContext was not aware of that and simply failed to do any
gpg operation due to missing gpg executable.
This was reported as: https://bugzilla.redhat.com/show_bug.cgi?id=985599
camel/camel-gpg-context.c | 31 +++++++++++++++++++++++++++++--
1 files changed, 29 insertions(+), 2 deletions(-)
---
diff --git a/camel/camel-gpg-context.c b/camel/camel-gpg-context.c
index 200bc21..d6b7177 100644
--- a/camel/camel-gpg-context.c
+++ b/camel/camel-gpg-context.c
@@ -439,6 +439,33 @@ gpg_ctx_free (struct _GpgCtx *gpg)
g_free (gpg);
}
+static const gchar *
+gpg_ctx_get_executable_name (void)
+{
+ static gint index = -1;
+ const gchar *names[] = {
+ "gpg",
+ "gpg2",
+ NULL
+ };
+
+ if (index == -1) {
+ for (index = 0; names[index]; index++) {
+ gchar *path = g_find_program_in_path (names[index]);
+
+ if (path) {
+ g_free (path);
+ break;
+ }
+ }
+
+ if (!names[index])
+ index = 0;
+ }
+
+ return names[index];
+}
+
#ifndef G_OS_WIN32
static const gchar *
@@ -477,7 +504,7 @@ gpg_ctx_get_argv (struct _GpgCtx *gpg,
gint i;
argv = g_ptr_array_new ();
- g_ptr_array_add (argv, (guint8 *) "gpg");
+ g_ptr_array_add (argv, (guint8 *) gpg_ctx_get_executable_name ());
g_ptr_array_add (argv, (guint8 *) "--verbose");
g_ptr_array_add (argv, (guint8 *) "--no-secmem-warning");
@@ -623,7 +650,7 @@ gpg_ctx_op_start (struct _GpgCtx *gpg,
}
/* run gpg */
- execvp ("gpg", (gchar **) argv->pdata);
+ execvp (gpg_ctx_get_executable_name (), (gchar **) argv->pdata);
_exit (255);
} else if (gpg->pid < 0) {
g_ptr_array_free (argv, TRUE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]