X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-crypt%2Fcrypt-gpgme.c;h=d17abb8ec7bc11c3e63c7f9c51296b2eb9600359;hp=aac1f1054808865fa58fd6a4816f736503633d56;hb=d795d156dff537b76d8e59df5653f199ad06e5b4;hpb=b64de2dbabed6d8776dfb6f048401dc6f67ec79e diff --git a/lib-crypt/crypt-gpgme.c b/lib-crypt/crypt-gpgme.c index aac1f10..d17abb8 100644 --- a/lib-crypt/crypt-gpgme.c +++ b/lib-crypt/crypt-gpgme.c @@ -14,16 +14,6 @@ #include -#ifdef HAVE_LOCALE_H -# include -#endif -#ifdef HAVE_LANGINFO_D_T_FMT -# include -#endif -#ifdef HAVE_SYS_RESOURCE_H -# include -#endif - #include #include @@ -3871,13 +3861,13 @@ int crypt_smime_verify_sender (HEADER * h) return ret; } -static void invoke_import(const char *fname, int smime) +void crypt_invoke_import(FILE *stream, int smime) { gpgme_ctx_t ctx = create_gpgme_context(smime); gpgme_data_t data; gpgme_error_t err; - err = gpgme_data_new_from_file(&data, fname, 1); + err = gpgme_data_new_from_stream(&data, stream); if (err) { mutt_error (_("error allocating data object: %s\n"), gpgme_strerror (err)); gpgme_release(ctx); @@ -3897,38 +3887,24 @@ static void invoke_import(const char *fname, int smime) return; } -void crypt_pgp_invoke_import(const char *fname) -{ - invoke_import(fname, 0); -} - -void crypt_smime_invoke_import(const char *fname) -{ - invoke_import(fname, 1); -} - -static void pgp_extract_keys_from_attachment (FILE * fp, BODY * top) +static void pgp_extract_keys_from_attachment(FILE * fp, BODY * top) { - STATE s; - FILE *tempfp; - char tempfname[_POSIX_PATH_MAX]; + STATE s; + FILE *tmpfp = tmpfile(); - tempfp = m_tempfile(tempfname, sizeof(tempfname), NONULL(MCore.tmpdir), NULL); - if (tempfp == NULL) { - mutt_perror (_("Can't create temporary file")); - return; - } - - p_clear(&s, 1); - - s.fpin = fp; - s.fpout = tempfp; + if (tmpfp == NULL) { + mutt_perror (_("Can't create temporary file")); + return; + } - mutt_body_handler (top, &s); + p_clear(&s, 1); + s.fpin = fp; + s.fpout = tmpfp; + mutt_body_handler(top, &s); - m_fclose(&tempfp); - crypt_pgp_invoke_import(tempfname); - mutt_unlink (tempfname); + rewind(tmpfp); + crypt_invoke_import(tmpfp, 0); + m_fclose(&tmpfp); } void crypt_pgp_extract_keys_from_attachment_list(FILE * fp, int tag, BODY * top)