X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=crypt.cpkg;h=704777577b3a141f6d25ed12441d95c5244156ad;hp=819adae4b8a4a8ff29257200f96cb42132ec7b54;hb=16be8d10413bbcf822577afd4019d65aba7459e0;hpb=91acd32003fb8eb9b3b05b35c1aa32a6c07aad43 diff --git a/crypt.cpkg b/crypt.cpkg index 819adae..7047775 100644 --- a/crypt.cpkg +++ b/crypt.cpkg @@ -16,7 +16,7 @@ #include #include -#include +#include #include #include #include @@ -197,7 +197,7 @@ static void convert_to_7bit (BODY * a) if (a->type == TYPEMULTIPART) { a->encoding = ENC7BIT; convert_to_7bit(a->parts); - } else if (a->type == TYPEMESSAGE && tok == MIME_DELIVERY_STATUS) { + } else if (a->type == TYPEMESSAGE && tok != MIME_DELIVERY_STATUS) { if (a->encoding != ENC7BIT) mutt_message_to_7bit(a, NULL); } else if (a->encoding == ENC8BIT) { @@ -219,7 +219,7 @@ static void print_utf8 (FILE * fp, const char *buf, ssize_t len) char *tstr; tstr = p_dupstr(buf, len); - mutt_convert_string(&tstr, "utf-8", MCharset.charset, M_ICONV_HOOK_FROM); + mutt_convert_string(&tstr, "utf-8", mod_cset.charset, M_ICONV_HOOK_FROM); fputs(tstr, fp); p_delete(&tstr); } @@ -475,7 +475,7 @@ static char *data_object_to_tempfile(gpgme_data_t data, FILE **ret_fp) FILE *fp; ssize_t nread = 0; - fp = m_tempfile(tempfile, sizeof(tempfile), NONULL(MCore.tmpdir), NULL); + fp = m_tempfile(tempfile, sizeof(tempfile), NONULL(mod_core.tmpdir), NULL); if (!fp) { mutt_perror (_("Can't create temporary file")); return NULL; @@ -690,7 +690,7 @@ static void print_time(time_t t, STATE *s) char p[STRING]; setlocale(LC_TIME, ""); -#ifdef HAVE_LANGINFO_D_T_FMT +#ifdef D_T_FMT strftime(p, sizeof(p), nl_langinfo(D_T_FMT), localtime(&t)); #else strftime(p, sizeof(p), "%c", localtime(&t)); @@ -1217,7 +1217,6 @@ static int crypt_verify_one(BODY *sigbdy, STATE *s, FILE *fp, int is_smime) state_attach_puts (_("[-- Begin signature information --]\n"), s); err = gpgme_op_verify (ctx, signature, message, NULL); - mutt_need_hard_redraw (); if (err) { char buf[200]; @@ -1580,7 +1579,7 @@ pgp_check_traditional_one_body(FILE *fp, BODY *b, int tagged_only) if (tagged_only && !b->tagged) return 0; - tempfd = m_tempfd(tempfile, sizeof(tempfile), NONULL(MCore.tmpdir), NULL); + tempfd = m_tempfd(tempfile, sizeof(tempfile), NONULL(mod_core.tmpdir), NULL); if (mutt_decode_save_attachment (fp, b, tempfd, 0) != 0) { unlink (tempfile); return 0; @@ -1658,7 +1657,7 @@ static void copy_clearsigned(gpgme_data_t data, STATE * s, char *charset) unlink (fname); p_delete(&fname); - fc = fgetconv_open (fp, charset, MCharset.charset, M_ICONV_HOOK_FROM); + fc = fgetconv_open (fp, charset, mod_cset.charset, M_ICONV_HOOK_FROM); for (complete = 1, armor_header = 1; fgetconvs (buf, sizeof (buf), fc) != NULL; @@ -1874,7 +1873,7 @@ int crypt_pgp_application_pgp_handler(BODY *m, STATE *s) int c; rewind (pgpout); - fc = fgetconv_open (pgpout, "utf-8", MCharset.charset, 0); + fc = fgetconv_open (pgpout, "utf-8", mod_cset.charset, 0); while ((c = fgetconv (fc)) != EOF) { state_putc (c, s); if (c == '\n' && s->prefix) @@ -1939,7 +1938,7 @@ int crypt_pgp_encrypted_handler (BODY * a, STATE * s) /* Move forward to the application/pgp-encrypted body. */ a = a->next; - fpout = m_tempfile(tempfile, sizeof(tempfile), NONULL(MCore.tmpdir), NULL); + fpout = m_tempfile(tempfile, sizeof(tempfile), NONULL(mod_core.tmpdir), NULL); if (!fpout) { if (s->flags & M_DISPLAY) state_attach_puts (_("[-- Error: could not create temporary file! " @@ -1999,7 +1998,7 @@ int crypt_smime_application_smime_handler (BODY * a, STATE * s) int rc = 0; a->warnsig = 0; - fpout = m_tempfile(tempfile, sizeof(tempfile), NONULL(MCore.tmpdir), NULL); + fpout = m_tempfile(tempfile, sizeof(tempfile), NONULL(mod_core.tmpdir), NULL); if (!fpout) { if (s->flags & M_DISPLAY) state_attach_puts (_("[-- Error: could not create temporary file! " @@ -2269,8 +2268,8 @@ static void crypt_entry (char *s, ssize_t l, MUTTMENU * menu, int num) entry.key = cryptkey_table[num]; entry.num = num + 1; - m_strformat(s, l, COLS - SW, mod_crypt.pgp_entry_format, crypt_entry_fmt, - &entry, option(OPTARROWCURSOR) ? M_FORMAT_ARROWCURSOR : 0); + m_strformat(s, l, getmaxx(main_w), mod_crypt.pgp_entry_format, + crypt_entry_fmt, &entry, 0); } /* Compare two addresses and the keyid to be used for sorting. */ @@ -2680,7 +2679,7 @@ static void print_key_info (gpgme_key_t key, FILE * fp) tt = key->subkeys->timestamp; tm = localtime (&tt); -#ifdef HAVE_LANGINFO_D_T_FMT +#ifdef D_T_FMT strftime (shortbuf, sizeof shortbuf, nl_langinfo (D_T_FMT), tm); #else strftime (shortbuf, sizeof shortbuf, "%c", tm); @@ -2692,7 +2691,7 @@ static void print_key_info (gpgme_key_t key, FILE * fp) tt = key->subkeys->expires; tm = localtime (&tt); -#ifdef HAVE_LANGINFO_D_T_FMT +#ifdef D_T_FMT strftime (shortbuf, sizeof shortbuf, nl_langinfo (D_T_FMT), tm); #else strftime (shortbuf, sizeof shortbuf, "%c", tm); @@ -2803,7 +2802,7 @@ static void print_key_info (gpgme_key_t key, FILE * fp) tt = subkey->timestamp; tm = localtime (&tt); -#ifdef HAVE_LANGINFO_D_T_FMT +#ifdef D_T_FMT strftime (shortbuf, sizeof shortbuf, nl_langinfo (D_T_FMT), tm); #else strftime (shortbuf, sizeof shortbuf, "%c", tm); @@ -2815,7 +2814,7 @@ static void print_key_info (gpgme_key_t key, FILE * fp) tt = subkey->expires; tm = localtime (&tt); -#ifdef HAVE_LANGINFO_D_T_FMT +#ifdef D_T_FMT strftime (shortbuf, sizeof shortbuf, nl_langinfo (D_T_FMT), tm); #else strftime (shortbuf, sizeof shortbuf, "%c", tm); @@ -2870,7 +2869,7 @@ static void verify_key (cryptkey_t * key) gpgme_key_t k = NULL; int maxdepth = 100; - fp = m_tempfile (tempfile, sizeof(tempfile), NONULL(MCore.tmpdir), NULL); + fp = m_tempfile (tempfile, sizeof(tempfile), NONULL(mod_core.tmpdir), NULL); if (!fp) { mutt_perror (_("Can't create temporary file")); return; @@ -3036,7 +3035,7 @@ static cryptkey_t *crypt_select_key (cryptkey_t * keys, cryptkey_t **cryptkey_table; MUTTMENU *menu; int i, done = 0; - char helpstr[STRING], buf[LONG_STRING]; + char buf[LONG_STRING]; cryptkey_t *k; int (*f) (const void *, const void *); int menu_to_use = 0; @@ -3090,23 +3089,10 @@ static cryptkey_t *crypt_select_key (cryptkey_t * keys, else if (app & APPLICATION_SMIME) menu_to_use = MENU_KEY_SELECT_SMIME; - helpstr[0] = 0; - mutt_make_help (buf, sizeof (buf), _("Exit "), menu_to_use, OP_EXIT); - m_strcat(helpstr, sizeof(helpstr), buf); - mutt_make_help (buf, sizeof (buf), _("Select "), menu_to_use, - OP_GENERIC_SELECT_ENTRY); - m_strcat(helpstr, sizeof(helpstr), buf); - mutt_make_help (buf, sizeof (buf), _("Check key "), - menu_to_use, OP_VERIFY_KEY); - m_strcat(helpstr, sizeof(helpstr), buf); - mutt_make_help (buf, sizeof (buf), _("Help"), menu_to_use, OP_HELP); - m_strcat(helpstr, sizeof(helpstr), buf); - menu = mutt_new_menu (); menu->max = i; menu->make_entry = crypt_entry; menu->menu = menu_to_use; - menu->help = helpstr; menu->data = cryptkey_table; { @@ -4042,4 +4028,44 @@ int mutt_signed_handler(BODY *a, STATE *s) return (rc); } +static int _mutt_check_traditional_pgp (HEADER * h, int *redraw) +{ + MESSAGE *msg; + int rv = 0; + + h->security |= PGP_TRADITIONAL_CHECKED; + + mutt_parse_mime_message (Context, h); + if ((msg = mx_open_message (Context, h->msgno)) == NULL) + return 0; + if (crypt_pgp_check_traditional (msg->fp, h->content, 0)) { + h->security = crypt_query (h->content); + *redraw |= REDRAW_FULL; + rv = 1; + } + + h->security |= PGP_TRADITIONAL_CHECKED; + mx_close_message (&msg); + return rv; +} + +int mutt_check_traditional_pgp (HEADER * h, int *redraw) +{ + int i; + int rv = 0; + + if (h && !(h->security & PGP_TRADITIONAL_CHECKED)) + rv = _mutt_check_traditional_pgp (h, redraw); + else { + for (i = 0; i < Context->vcount; i++) + if (Context->hdrs[Context->v2r[i]]->tagged && + !(Context->hdrs[Context->v2r[i]]-> + security & PGP_TRADITIONAL_CHECKED)) + rv = + _mutt_check_traditional_pgp (Context->hdrs[Context->v2r[i]], redraw) + || rv; + } + return rv; +} + /* vim:set ft=c: */