X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=imap%2Fmessage.c;h=cc339b71d0f40af1fe8d7cbee670f6ec98a14bce;hp=1f634afb3fe009b99c401ccee39af62a7d0afdb3;hb=598ddfd9e5e0ea3fd368878e4bf8227014e478d5;hpb=f288d1771c814e6104da83e6f0f1761a40de1224 diff --git a/imap/message.c b/imap/message.c index 1f634af..cc339b7 100644 --- a/imap/message.c +++ b/imap/message.c @@ -13,16 +13,12 @@ #include #include +#include +#include #include "mutt.h" #include "imap_private.h" #include "message.h" -#include "mx.h" -#include "hcache.h" - -#ifdef HAVE_PGP -#include "pgp.h" -#endif static void flush_buffer (char *buf, size_t * len, CONNECTION * conn); static int msg_fetch_header (CONTEXT * ctx, IMAP_HEADER * h, char *buf, @@ -54,11 +50,11 @@ int imap_read_headers (IMAP_DATA * idata, int msgbegin, int msgend) int rc, mfhrc, oldmsgcount; int fetchlast = 0; const char *want_headers = - "DATE FROM SUBJECT TO CC MESSAGE-ID REFERENCES CONTENT-TYPE CONTENT-DESCRIPTION IN-REPLY-TO REPLY-TO LINES string_list_t-POST X-LABEL"; + "DATE FROM SUBJECT TO CC MESSAGE-ID REFERENCES CONTENT-TYPE CONTENT-DESCRIPTION IN-REPLY-TO REPLY-TO LINES LIST-POST X-LABEL"; #ifdef USE_HCACHE - void *hc = NULL; - unsigned long *uid_validity = NULL; + hcache_t *hc = NULL; + long *uid_validity = NULL; char uid_buf[64]; #endif /* USE_HCACHE */ @@ -83,13 +79,13 @@ int imap_read_headers (IMAP_DATA * idata, int msgbegin, int msgend) /* instead of downloading all headers and then parsing them, we parse them * as they come in. */ - mutt_mktemp (tempfile); - if (!(fp = safe_fopen (tempfile, "w+"))) { - mutt_error (_("Could not create temporary file %s"), tempfile); - mutt_sleep (2); + fp = m_tempfile(tempfile, sizeof(tempfile), NONULL(MCore.tmpdir), NULL); + if (!fp) { + mutt_error(_("Could not create temporary file")); + mutt_sleep(2); return -1; } - unlink (tempfile); + unlink(tempfile); /* make sure context has room to hold the mailbox */ while ((msgend) >= idata->ctx->hdrmax) @@ -132,11 +128,10 @@ int imap_read_headers (IMAP_DATA * idata, int msgbegin, int msgend) fputs ("\n\n", fp); sprintf (uid_buf, "/%u", h.data->uid); /* XXX --tg 21:41 04-07-11 */ - uid_validity = - (unsigned long *) mutt_hcache_fetch (hc, uid_buf, &imap_hcache_keylen); + uid_validity = mutt_hcache_fetch (hc, uid_buf, &imap_hcache_keylen); if (uid_validity != NULL && *uid_validity == idata->uid_validity) { - ctx->hdrs[msgno] = mutt_hcache_restore((unsigned char *) uid_validity, 0); + ctx->hdrs[msgno] = mutt_hcache_restore(uid_validity, 0); ctx->hdrs[msgno]->index = h.sid - 1; /* messages which have not been expunged are ACTIVE (borrowed from mh * folders) */ @@ -163,8 +158,8 @@ int imap_read_headers (IMAP_DATA * idata, int msgbegin, int msgend) if ((mfhrc < -1) || ((rc != IMAP_CMD_CONTINUE) && (rc != IMAP_CMD_OK))) { imap_free_header_data((void *)&h.data); - fclose (fp); - mutt_hcache_close (hc); + m_fclose(&fp); + mutt_hcache_close (&hc); return -1; } } @@ -262,9 +257,9 @@ int imap_read_headers (IMAP_DATA * idata, int msgbegin, int msgend) if ((mfhrc < -1) || ((rc != IMAP_CMD_CONTINUE) && (rc != IMAP_CMD_OK))) { imap_free_header_data ((void *)&h.data); - fclose (fp); + m_fclose(&fp); #ifdef USE_HCACHE - mutt_hcache_close (hc); + mutt_hcache_close (&hc); #endif /* USE_HCACHE */ return -1; } @@ -280,10 +275,10 @@ int imap_read_headers (IMAP_DATA * idata, int msgbegin, int msgend) } #ifdef USE_HCACHE - mutt_hcache_close (hc); + mutt_hcache_close (&hc); #endif /* USE_HCACHE */ - fclose (fp); + m_fclose(&fp); if (ctx->msgcount > oldmsgcount) mx_update_context (ctx, ctx->msgcount - oldmsgcount); @@ -376,12 +371,11 @@ int imap_fetch_message (MESSAGE * msg, CONTEXT * ctx, int msgno) mutt_message _("Fetching message..."); cache->uid = HEADER_DATA (h)->uid; - mutt_mktemp (path); - cache->path = m_strdup(path); - if (!(msg->fp = safe_fopen (path, "w+"))) { - p_delete(&cache->path); + msg->fp = m_tempfile(path, sizeof(path), NONULL(MCore.tmpdir), NULL); + if (!msg->fp) { return -1; } + cache->path = m_strdup(path); /* mark this header as currently inactive so the command handler won't * also try to update it. HACK until all this code can be moved into the @@ -500,7 +494,7 @@ int imap_fetch_message (MESSAGE * msg, CONTEXT * ctx, int msgno) return 0; bail: - safe_fclose (&msg->fp); + m_fclose(&msg->fp); if (cache->path) { unlink (cache->path); p_delete(&cache->path); @@ -575,7 +569,7 @@ int imap_append_message (CONTEXT * ctx, MESSAGE * msg) pc = imap_next_word (pc); mutt_error ("%s", pc); mutt_sleep (1); - fclose (fp); + m_fclose(&fp); goto fail; } @@ -596,7 +590,7 @@ int imap_append_message (CONTEXT * ctx, MESSAGE * msg) flush_buffer (buf, &len, idata->conn); mutt_socket_write (idata->conn, "\r\n"); - fclose (fp); + m_fclose(&fp); do rc = imap_cmd_step (idata); @@ -970,7 +964,7 @@ static int msg_has_flag (string_list_t * flag_list, const char *flag) /* msg_parse_fetch: handle headers returned from header fetch */ static int msg_parse_fetch (IMAP_HEADER * h, char *s) { - char tmp[SHORT_STRING]; + char tmp[STRING]; char *ptmp; if (!s)