X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=pgp.c;h=74f73a925961259a34f799dbf5f32faf30cf06c3;hb=9f2abc10bfcd2cbefd7dd040b7509b2942a7c425;hp=b5eac0e80cfeef01f05f302e3f3da6f89d0eda65;hpb=73677f50e434a5c17a0d2c444dc2559c6540170b;p=apps%2Fmadmutt.git diff --git a/pgp.c b/pgp.c index b5eac0e..74f73a9 100644 --- a/pgp.c +++ b/pgp.c @@ -103,10 +103,19 @@ void pgp_forget_passphrase (void) mutt_message _("PGP passphrase forgotten."); } -int pgp_use_gpg_agent (void) -{ - return option (OPTUSEGPGAGENT) && getenv ("GPG_TTY") - && getenv ("GPG_AGENT_INFO"); +int pgp_use_gpg_agent (void) { + char *tty, *ttybuf; + + if (!option (OPTUSEGPGAGENT) || !getenv ("GPG_AGENT_INFO")) + return 0; + + if ((tty = ttyname(0)) && + ((ttybuf = mem_malloc (sizeof("GPG_TTY") + strlen(tty) + 1)))) { + snprintf (ttybuf, sizeof (ttybuf), "GPG_TTY=%s", tty); + putenv (ttybuf); + } + + return 1; } char *pgp_keyid (pgp_key_t k) @@ -228,7 +237,7 @@ static void pgp_copy_clearsigned (FILE * fpin, STATE * s, char *charset) int pgp_application_pgp_handler (BODY * m, STATE * s) { int needpass = -1, pgp_keyblock = 0; - int c; + int c = 1; int clearsign = 0, rv, rc; long start_pos = 0; long bytes, last_pos, offset; @@ -374,7 +383,7 @@ int pgp_application_pgp_handler (BODY * m, STATE * s) c = fgetc (pgpout); ungetc (c, pgpout); } - if (!cleansign && (!pgpout || c == EOF)) { + if (!clearsign && (!pgpout || c == EOF)) { mutt_error _("Could not decrypt PGP message"); mutt_sleep (1); pgp_void_passphrase ();