X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=mx.c;h=a63b28f30e9fb3ed45236bd8537df99b8dcef6b3;hp=760b1dc38050e8e3caccfc4e1037eeec465f4aa3;hb=b9566dc203971a396d1336cf2295efc73b678782;hpb=3cb53df6efcb6b137bbab53c16da4eddbc5a1b2b diff --git a/mx.c b/mx.c index 760b1dc..a63b28f 100644 --- a/mx.c +++ b/mx.c @@ -33,15 +33,11 @@ #include "sidebar.h" #include "compress.h" -#ifdef USE_IMAP -#include "imap/imap.h" -#include "imap/mx_imap.h" -#endif +#include +#include -#ifdef USE_POP -#include "pop/pop.h" -#include "pop/mx_pop.h" -#endif +#include +#include #ifdef USE_NNTP #include "nntp/nntp.h" @@ -52,7 +48,7 @@ #include "dotlock.h" #endif -#include "mutt_crypt.h" +#include #include "lib/list.h" #include "lib/debug.h" @@ -389,13 +385,9 @@ static int mx_open_mailbox_append (CONTEXT * ctx, int flags) ctx->append = 1; -#ifdef USE_IMAP - if (mx_get_magic (ctx->path) == M_IMAP) return imap_open_mailbox_append (ctx); -#endif - if (stat (ctx->path, &sb) == 0) { ctx->magic = mx_get_magic (ctx->path); @@ -600,7 +592,7 @@ void mx_fastclose_mailbox (CONTEXT * ctx) hash_destroy (&ctx->id_hash, NULL); mutt_clear_threads (ctx); for (i = 0; i < ctx->msgcount; i++) - mutt_free_header (&ctx->hdrs[i]); + header_delete(&ctx->hdrs[i]); p_delete(&ctx->hdrs); p_delete(&ctx->v2r); @@ -760,10 +752,8 @@ static int _mx_close_mailbox (CONTEXT * ctx, int *index_hint) } } -#ifdef USE_IMAP /* IMAP servers manage the OLD flag themselves */ if (ctx->magic != M_IMAP) -#endif if (option (OPTMARKOLD)) { for (i = 0; i < ctx->msgcount; i++) { if (!ctx->hdrs[i]->deleted && !ctx->hdrs[i]->old) @@ -774,7 +764,6 @@ static int _mx_close_mailbox (CONTEXT * ctx, int *index_hint) if (move_messages) { mutt_message (_("Moving read messages to %s..."), mbox); -#ifdef USE_IMAP /* try to use server-side copy first */ i = 1; @@ -797,7 +786,6 @@ static int _mx_close_mailbox (CONTEXT * ctx, int *index_hint) return -1; } else /* use regular append-copy mode */ -#endif { if (mx_open_mailbox (mbox, M_APPEND, &f) == NULL) { ctx->closing = 0; @@ -838,7 +826,6 @@ static int _mx_close_mailbox (CONTEXT * ctx, int *index_hint) return -1; } -#ifdef USE_IMAP /* allow IMAP to preserve the deleted flag across sessions */ if (ctx->magic == M_IMAP) { if ((check = imap_sync_mailbox (ctx, purge, index_hint)) != 0) { @@ -847,7 +834,6 @@ static int _mx_close_mailbox (CONTEXT * ctx, int *index_hint) } } else -#endif { if (!purge) { for (i = 0; i < ctx->msgcount; i++) @@ -961,7 +947,7 @@ void mx_update_tables (CONTEXT * ctx, int committing) if (ctx->id_hash && ctx->hdrs[i]->env->message_id) hash_delete (ctx->id_hash, ctx->hdrs[i]->env->message_id, ctx->hdrs[i], NULL); - mutt_free_header (&ctx->hdrs[i]); + header_delete(&ctx->hdrs[i]); } } #undef this_body @@ -1019,10 +1005,8 @@ static int _mx_sync_mailbox (CONTEXT * ctx, int *index_hint) else if (purge == M_NO) { if (!ctx->changed) return 0; /* nothing to do! */ -#ifdef USE_IMAP /* let IMAP servers hold on to D flags */ if (ctx->magic != M_IMAP) -#endif { for (i = 0; i < ctx->msgcount; i++) ctx->hdrs[i]->deleted = 0; @@ -1043,19 +1027,15 @@ static int _mx_sync_mailbox (CONTEXT * ctx, int *index_hint) return -1; } -#ifdef USE_IMAP if (ctx->magic == M_IMAP) rc = imap_sync_mailbox (ctx, purge, index_hint); else -#endif rc = sync_mailbox (ctx, index_hint); if (rc == 0) { -#ifdef USE_IMAP if (ctx->magic == M_IMAP && !purge) mutt_message (_("Mailbox checkpointed.")); else -#endif mutt_message (_("%d kept, %d deleted."), msgcount - deleted, deleted); mutt_sleep (0); @@ -1076,10 +1056,8 @@ static int _mx_sync_mailbox (CONTEXT * ctx, int *index_hint) * at least with the new threading code. */ if (purge || (ctx->magic != M_MAILDIR && ctx->magic != M_MH)) { -#ifdef USE_IMAP /* IMAP does this automatically after handling EXPUNGE */ if (ctx->magic != M_IMAP) -#endif { mx_update_tables (ctx, 1); mutt_sort_headers (ctx, 1); /* rethread from scratch */ @@ -1198,23 +1176,19 @@ MESSAGE *mx_open_message (CONTEXT * ctx, int msgno) } break; -#ifdef USE_IMAP case M_IMAP: { if (imap_fetch_message (msg, ctx, msgno) != 0) p_delete(&msg); break; } -#endif /* USE_IMAP */ -#ifdef USE_POP case M_POP: { if (pop_fetch_message (msg, ctx, msgno) != 0) p_delete(&msg); break; } -#endif /* USE_POP */ #ifdef USE_NNTP case M_NNTP: @@ -1251,12 +1225,8 @@ int mx_close_message (MESSAGE ** msg) int r = 0; if ((*msg)->magic == M_MH || (*msg)->magic == M_MAILDIR -#ifdef USE_IMAP || (*msg)->magic == M_IMAP -#endif -#ifdef USE_POP || (*msg)->magic == M_POP -#endif #ifdef USE_NNTP || (*msg)->magic == M_NNTP #endif @@ -1399,12 +1369,8 @@ void mx_init (void) { list_push_back (&MailboxFormats, (void*) mmdf_reg_mx ()); list_push_back (&MailboxFormats, (void*) mh_reg_mx ()); list_push_back (&MailboxFormats, (void*) maildir_reg_mx ()); -#ifdef USE_IMAP list_push_back (&MailboxFormats, (void*) imap_reg_mx ()); -#endif -#ifdef USE_POP list_push_back (&MailboxFormats, (void*) pop_reg_mx ()); -#endif #ifdef USE_NNTP list_push_back (&MailboxFormats, (void*) nntp_reg_mx ()); #endif @@ -1439,11 +1405,7 @@ int mx_rebuild_cache (void) { for (i = 0; i < Incoming->length; i++) { b = (BUFFY*) Incoming->data[i]; magic = mx_get_magic (b->path); - if (magic != M_MAILDIR && magic != M_MH -#ifdef USE_IMAP - && magic != M_IMAP -#endif - ) + if (magic != M_MAILDIR && magic != M_MH && magic != M_IMAP) continue; sidebar_set_current (b->path); sidebar_draw (CurrentMenu); @@ -1461,3 +1423,27 @@ int mx_rebuild_cache (void) { return (0); #endif } + +void mutt_parse_mime_message (CONTEXT * ctx, HEADER * cur) +{ + MESSAGE *msg; + int flags = 0; + + do { + if (cur->content->type != TYPEMESSAGE + && cur->content->type != TYPEMULTIPART) + break; /* nothing to do */ + + if (cur->content->parts) + break; /* The message was parsed earlier. */ + + if ((msg = mx_open_message (ctx, cur->msgno))) { + mutt_parse_part (msg->fp, cur->content); + + cur->security = crypt_query (cur->content); + + mx_close_message (&msg); + } + } while (0); + mutt_count_body_parts (cur, flags | M_PARTS_RECOUNT); +}