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;
+
+ if (!option (OPTUSEGPGAGENT) || !getenv ("GPG_AGENT_INFO"))
+ return 0;
+
+ if ((tty = ttyname(0)))
+ setenv ("GPG_TTY", tty, 0);
+
+ return 1;
}
char *pgp_keyid (pgp_key_t k)
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;
}
/* treat empty result as sign of failure */
- rewind (pgpout);
- if ((c = fgetc (pgpout)) == EOF) {
+ /* TODO: maybe on failure mutt should include the original undecoded text. */
+ if (pgpout) {
+ rewind (pgpout);
+ c = fgetc (pgpout);
+ ungetc (c, pgpout);
+ }
+ if (!clearsign && (!pgpout || c == EOF)) {
mutt_error _("Could not decrypt PGP message");
+ mutt_sleep (1);
pgp_void_passphrase ();
- rc = -1;
- goto out;
+ if (!(s->flags & M_DISPLAY)) {
+ rc = -1;
+ goto out;
+ }
}
- ungetc (c, pgpout);
}
/*