From 2ab33ba0b7d1fce4e368485fec28704dbaea875b Mon Sep 17 00:00:00 2001 From: David Bremner Date: Mon, 9 Mar 2015 21:51:22 +0100 Subject: [PATCH] [Patch v2 1/2] CLI: set up infrastructure to make path to gpg configurable. --- 57/4812f7ffc54b61e6cef287cf76299d574d5402 | 148 ++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 57/4812f7ffc54b61e6cef287cf76299d574d5402 diff --git a/57/4812f7ffc54b61e6cef287cf76299d574d5402 b/57/4812f7ffc54b61e6cef287cf76299d574d5402 new file mode 100644 index 000000000..d62f4e7ee --- /dev/null +++ b/57/4812f7ffc54b61e6cef287cf76299d574d5402 @@ -0,0 +1,148 @@ +Return-Path: +X-Original-To: notmuch@notmuchmail.org +Delivered-To: notmuch@notmuchmail.org +Received: from localhost (localhost [127.0.0.1]) + by olra.theworths.org (Postfix) with ESMTP id 35DC7431FBD + for ; Mon, 9 Mar 2015 13:53:46 -0700 (PDT) +X-Virus-Scanned: Debian amavisd-new at olra.theworths.org +X-Spam-Flag: NO +X-Spam-Score: 2.438 +X-Spam-Level: ** +X-Spam-Status: No, score=2.438 tagged_above=-999 required=5 + tests=[DNS_FROM_AHBL_RHSBL=2.438] autolearn=disabled +Received: from olra.theworths.org ([127.0.0.1]) + by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id xDgkuGY3z0qJ for ; + Mon, 9 Mar 2015 13:53:43 -0700 (PDT) +Received: from mx.xen14.node3324.gplhost.com (gitolite.debian.net + [87.98.215.224]) + (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) + (No client certificate requested) + by olra.theworths.org (Postfix) with ESMTPS id E6BFA431FBC + for ; Mon, 9 Mar 2015 13:53:42 -0700 (PDT) +Received: from remotemail by mx.xen14.node3324.gplhost.com with local (Exim + 4.80) (envelope-from ) + id 1YV4eL-00063c-Hs; Mon, 09 Mar 2015 20:51:41 +0000 +Received: (nullmailer pid 22313 invoked by uid 1000); Mon, 09 Mar 2015 + 20:51:28 -0000 +From: David Bremner +To: Jani Nikula , David Bremner , + notmuch@notmuchmail.org +Subject: [Patch v2 1/2] CLI: set up infrastructure to make path to gpg + configurable. +Date: Mon, 9 Mar 2015 21:51:22 +0100 +Message-Id: <1425934283-22269-1-git-send-email-david@tethera.net> +X-Mailer: git-send-email 2.1.4 +In-Reply-To: <87fv9givdr.fsf@nikula.org> +References: <87fv9givdr.fsf@nikula.org> +X-BeenThere: notmuch@notmuchmail.org +X-Mailman-Version: 2.1.13 +Precedence: list +List-Id: "Use and development of the notmuch mail system." + +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +X-List-Received-Date: Mon, 09 Mar 2015 20:53:46 -0000 + +GMIME takes a path to gpg, but we hardcode that path. In this commit +we set up argument passing and option storage to allow this path to +specified in the top level notmuch command. +--- + crypto.c | 10 +++++----- + notmuch-client.h | 1 + + notmuch-reply.c | 3 ++- + notmuch-show.c | 3 ++- + 4 files changed, 10 insertions(+), 7 deletions(-) + +diff --git a/crypto.c b/crypto.c +index 6f4a6db..026640f 100644 +--- a/crypto.c ++++ b/crypto.c +@@ -24,12 +24,12 @@ + + /* Create a GPG context (GMime 2.6) */ + static notmuch_crypto_context_t * +-create_gpg_context (void) ++create_gpg_context (const char *gpgpath) + { + notmuch_crypto_context_t *gpgctx; + + /* TODO: GMimePasswordRequestFunc */ +- gpgctx = g_mime_gpg_context_new (NULL, "gpg"); ++ gpgctx = g_mime_gpg_context_new (NULL, gpgpath ? gpgpath : "gpg"); + if (! gpgctx) + return NULL; + +@@ -43,13 +43,13 @@ create_gpg_context (void) + + /* Create a GPG context (GMime 2.4) */ + static notmuch_crypto_context_t * +-create_gpg_context (void) ++create_gpg_context (const char* gpgpath) + { + GMimeSession *session; + notmuch_crypto_context_t *gpgctx; + + session = g_object_new (g_mime_session_get_type (), NULL); +- gpgctx = g_mime_gpg_context_new (session, "gpg"); ++ gpgctx = g_mime_gpg_context_new (session, gpgpath ? gpgpath : "gpg"); + g_object_unref (session); + + if (! gpgctx) +@@ -83,7 +83,7 @@ notmuch_crypto_get_context (notmuch_crypto_t *crypto, const char *protocol) + if (strcasecmp (protocol, "application/pgp-signature") == 0 || + strcasecmp (protocol, "application/pgp-encrypted") == 0) { + if (! crypto->gpgctx) { +- crypto->gpgctx = create_gpg_context (); ++ crypto->gpgctx = create_gpg_context (crypto->gpgpath); + if (! crypto->gpgctx) + fprintf (stderr, "Failed to construct gpg context.\n"); + } +diff --git a/notmuch-client.h b/notmuch-client.h +index 5e0d475..c25c4ea 100644 +--- a/notmuch-client.h ++++ b/notmuch-client.h +@@ -80,6 +80,7 @@ typedef struct notmuch_crypto { + notmuch_crypto_context_t* gpgctx; + notmuch_bool_t verify; + notmuch_bool_t decrypt; ++ const char *gpgpath; + } notmuch_crypto_t; + + typedef struct notmuch_show_params { +diff --git a/notmuch-reply.c b/notmuch-reply.c +index 7c1c809..e18370f 100644 +--- a/notmuch-reply.c ++++ b/notmuch-reply.c +@@ -769,7 +769,8 @@ notmuch_reply_command (notmuch_config_t *config, int argc, char *argv[]) + .part = -1, + .crypto = { + .verify = FALSE, +- .decrypt = FALSE ++ .decrypt = FALSE, ++ .gpgpath = NULL + } + }; + int format = FORMAT_DEFAULT; +diff --git a/notmuch-show.c b/notmuch-show.c +index d416fbd..d292f29 100644 +--- a/notmuch-show.c ++++ b/notmuch-show.c +@@ -1082,7 +1082,8 @@ notmuch_show_command (notmuch_config_t *config, int argc, char *argv[]) + .output_body = TRUE, + .crypto = { + .verify = FALSE, +- .decrypt = FALSE ++ .decrypt = FALSE, ++ .gpgpath = NULL + }, + .include_html = FALSE + }; +-- +2.1.4 + -- 2.26.2