CLI: set up infrastructure to make path to gpg configurable.

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.
This commit is contained in:
David Bremner 2014-12-09 21:01:10 +01:00
parent aed5ec4350
commit 21ecd7369a
4 changed files with 10 additions and 7 deletions

View file

@ -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");
}

View file

@ -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 {

View file

@ -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;

View file

@ -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
};