char tempfile[_POSIX_PATH_MAX];
FILE *fp = NULL;
struct ImapHeader h;
- struct Buffer *b = NULL;
+ struct Buffer *b = NULL, *hdr_list = NULL;
static const char *const want_headers =
"DATE FROM SENDER SUBJECT TO CC MESSAGE-ID REFERENCES CONTENT-TYPE "
"CONTENT-DESCRIPTION IN-REPLY-TO REPLY-TO LINES LIST-POST X-LABEL "
if (!adata || (adata->mailbox != m))
return -1;
+ hdr_list = mutt_buffer_pool_get();
+ mutt_buffer_strcpy(hdr_list, want_headers);
+ if (C_ImapHeaders)
+ {
+ mutt_buffer_addch(hdr_list, ' ');
+ mutt_buffer_addstr(hdr_list, C_ImapHeaders);
+ }
+#ifdef USE_AUTOCRYPT
+ if (C_Autocrypt)
+ {
+ mutt_buffer_addch(hdr_list, ' ');
+ mutt_buffer_addstr(hdr_list, "AUTOCRYPT");
+ }
+#endif
+
if (adata->capabilities & IMAP_CAP_IMAP4REV1)
{
- mutt_str_asprintf(&hdrreq, "BODY.PEEK[HEADER.FIELDS (%s%s%s)]", want_headers,
- C_ImapHeaders ? " " : "", NONULL(C_ImapHeaders));
+ mutt_str_asprintf(&hdrreq, "BODY.PEEK[HEADER.FIELDS (%s)]", mutt_b2s(hdr_list));
}
else if (adata->capabilities & IMAP_CAP_IMAP4)
{
- mutt_str_asprintf(&hdrreq, "RFC822.HEADER.LINES (%s%s%s)", want_headers,
- C_ImapHeaders ? " " : "", NONULL(C_ImapHeaders));
+ mutt_str_asprintf(&hdrreq, "RFC822.HEADER.LINES (%s)", mutt_b2s(hdr_list));
}
else
{ /* Unable to fetch headers for lower versions */
goto bail;
}
+ mutt_buffer_pool_release(&hdr_list);
+
/* instead of downloading all headers and then parsing them, we parse them
* as they come in. */
mutt_mktemp(tempfile, sizeof(tempfile));
retval = 0;
bail:
+ mutt_buffer_pool_release(&hdr_list);
mutt_buffer_pool_release(&b);
mutt_file_fclose(&fp);
FREE(&hdrreq);