]> granicus.if.org Git - mutt/commitdiff
Move setting of GPG_TTY to mutt_init(). (see #3948)
authorKevin McCarthy <kevin@8t8.us>
Wed, 7 Jun 2017 01:38:46 +0000 (18:38 -0700)
committerKevin McCarthy <kevin@8t8.us>
Wed, 7 Jun 2017 01:38:46 +0000 (18:38 -0700)
This allows other programs mutt runs to use the ncurses pinentry if needed.

init.c
pgp.c

diff --git a/init.c b/init.c
index f15a3719c5738520ba0f60555a263d3fe3497495..43102378daa37e5cf39262ac59068a7d32be5259 100644 (file)
--- a/init.c
+++ b/init.c
@@ -3317,6 +3317,7 @@ void mutt_init (int skip_sys_rc, LIST *commands)
   char *domain = NULL;
   int i, need_pause = 0;
   BUFFER err;
+  char *tty;
 
   mutt_buffer_init (&err);
   err.dsize = STRING;
@@ -3510,6 +3511,20 @@ void mutt_init (int skip_sys_rc, LIST *commands)
     unset_option (OPTSUSPEND);
 #endif
 
+  /* GPG_TTY is used by the ncurses pinentry program for GPG.  GPG is
+   * sometimes also used to decrypt passwords in programs launched by
+   * mutt, such as using msmtp as $sendmail, so we set it here as
+   * opposed to inside pgp.c
+   *
+   * We also call setenv() because send_msg() is not converted to use
+   * the mutt envlist.
+   */
+  if ((tty = ttyname(0)))
+  {
+    setenv("GPG_TTY", tty, 0);
+    mutt_envlist_set ("GPG_TTY", tty, 0);
+  }
+
   mutt_init_history ();
 
   /* RFC2368, "4. Unsafe headers"
diff --git a/pgp.c b/pgp.c
index 653905f04111f5fb5301abd62bfbddbee7de3c2e..5c17e94a48c7dde06da93b77246db6a76a06f340 100644 (file)
--- a/pgp.c
+++ b/pgp.c
@@ -105,21 +105,13 @@ void pgp_forget_passphrase (void)
   mutt_message _("PGP passphrase forgotten.");
 }
 
+/* This function used to do more: check GPG_AGENT_INFO,
+ * set GPG_TTY.  GPG_AGENT_INFO is no longer exported, and GPG_TTY
+ * is now set in mutt_init().
+ */
 int pgp_use_gpg_agent (void)
 {
-  char *tty;
-
-  /* GnuPG 2.1 no longer exports GPG_AGENT_INFO */
-  if (!option (OPTUSEGPGAGENT))
-    return 0;
-
-  if ((tty = ttyname(0)))
-  {
-    setenv("GPG_TTY", tty, 0);
-    mutt_envlist_set ("GPG_TTY", tty, 0);
-  }
-
-  return 1;
+  return option (OPTUSEGPGAGENT);
 }
 
 static pgp_key_t _pgp_parent(pgp_key_t k)