#include <ctype.h>
#include <string.h>
#include <limits.h>
+#include <libcitadel.h>
#include "citadel.h"
#include "server.h"
#include "sysdep_decls.h"
#include "policy.h"
#include "database.h"
#include "msgbase.h"
-#include "tools.h"
#include "internet_addressing.h"
-#include "mime_parser.h"
#include "serv_imap.h"
#include "imap_tools.h"
#include "imap_fetch.h"
#include "genstamp.h"
+#include "ctdl_module.h"
CC->redirect_len = 0;
CC->redirect_alloc = SIZ;
CtdlOutputMsg(msgnum, MT_RFC822,
- (need_body ? HEADERS_ALL : HEADERS_ONLY),
- 0, 1, NULL);
+ (need_body ? HEADERS_ALL : HEADERS_FAST),
+ 0, 1, NULL, 0);
if (!need_body) cprintf("\r\n"); /* extra trailing newline */
IMAP->cached_rfc822_data = CC->redirect_buffer;
IMAP->cached_rfc822_len = CC->redirect_len;
text_size = 0;
}
- lprintf(CTDL_DEBUG,
+ CtdlLogPrintf(CTDL_DEBUG,
"RFC822: headers=" SIZE_T_FMT
", text=" SIZE_T_FMT
", total=" SIZE_T_FMT "\n",
*/
void imap_load_part(char *name, char *filename, char *partnum, char *disp,
void *content, char *cbtype, char *cbcharset, size_t length, char *encoding,
- void *cbuserdata)
+ char *cbid, void *cbuserdata)
{
char mbuf2[SIZ];
char *desired_section;
ptr = CC->redirect_buffer;
ok = 0;
- while ( (done_headers == 0) && (ptr = memreadline(ptr, buf, sizeof buf), *ptr != 0) ) {
+ do {
+ ptr = memreadline(ptr, buf, sizeof buf);
if (!isspace(buf[0])) {
ok = 0;
if (doing_headers == 0) ok = 1;
if (IsEmptyStr(buf)) done_headers = 1;
if (buf[0]=='\r') done_headers = 1;
if (buf[0]=='\n') done_headers = 1;
- }
+ if (*ptr == 0) done_headers = 1;
+ } while (!done_headers);
strcat(boiled_headers, "\r\n");
if (strchr(section, '[') != NULL) {
stripallbut(section, '[', ']');
}
- lprintf(CTDL_DEBUG, "Section is: %s%s\n",
+ CtdlLogPrintf(CTDL_DEBUG, "Section is: %s%s\n",
section,
IsEmptyStr(section) ? "(empty)" : "");
is_partial = 1;
}
if (is_partial == 0) strcpy(partial, "");
- /* if (!IsEmptyStr(partial)) lprintf(CTDL_DEBUG, "Partial is %s\n", partial); */
+ /* if (!IsEmptyStr(partial)) CtdlLogPrintf(CTDL_DEBUG, "Partial is %s\n", partial); */
if (IMAP->cached_body == NULL) {
CC->redirect_buffer = malloc(SIZ);
}
else if ( (!strcmp(section, "1")) && (msg->cm_format_type != 4) ) {
- CtdlOutputPreLoadedMsg(msg, MT_RFC822, HEADERS_NONE, 0, 1);
+ CtdlOutputPreLoadedMsg(msg, MT_RFC822, HEADERS_NONE, 0, 1, 0);
}
else if (!strcmp(section, "")) {
- CtdlOutputPreLoadedMsg(msg, MT_RFC822, HEADERS_ALL, 0, 1);
+ CtdlOutputPreLoadedMsg(msg, MT_RFC822, HEADERS_ALL, 0, 1, 0);
}
/*
* fields, strip it down.
*/
else if (!strncasecmp(section, "HEADER", 6)) {
- CtdlOutputPreLoadedMsg(msg, MT_RFC822, HEADERS_ONLY, 0, 1);
+ CtdlOutputPreLoadedMsg(msg, MT_RFC822, HEADERS_FAST, 0, 1, 0);
imap_strip_headers(section);
}
* Strip it down if the client asked for everything _except_ headers.
*/
else if (!strncasecmp(section, "TEXT", 4)) {
- CtdlOutputPreLoadedMsg(msg, MT_RFC822, HEADERS_NONE, 0, 1);
+ CtdlOutputPreLoadedMsg(msg, MT_RFC822, HEADERS_NONE, 0, 1, 0);
}
/*
void imap_fetch_bodystructure_pre(
char *name, char *filename, char *partnum, char *disp,
void *content, char *cbtype, char *cbcharset, size_t length, char *encoding,
- void *cbuserdata
+ char *cbid, void *cbuserdata
) {
cprintf("(");
void imap_fetch_bodystructure_post(
char *name, char *filename, char *partnum, char *disp,
void *content, char *cbtype, char *cbcharset, size_t length, char *encoding,
- void *cbuserdata
+ char *cbid, void *cbuserdata
) {
char subtype[128];
void imap_fetch_bodystructure_part(
char *name, char *filename, char *partnum, char *disp,
void *content, char *cbtype, char *cbcharset, size_t length, char *encoding,
- void *cbuserdata
+ char *cbid, void *cbuserdata
) {
int have_cbtype = 0;
CC->redirect_buffer = malloc(SIZ);
CC->redirect_len = 0;
CC->redirect_alloc = SIZ;
- CtdlOutputPreLoadedMsg(msg, MT_RFC822, 0, 0, 1);
+ CtdlOutputPreLoadedMsg(msg, MT_RFC822, 0, 0, 1, 0);
rfc822 = CC->redirect_buffer;
rfc822_len = CC->redirect_len;
CC->redirect_buffer = NULL;
CC->redirect_alloc = 0;
ptr = rfc822;
- while (ptr = memreadline(ptr, buf, sizeof buf), *ptr != 0) {
+ do {
+ ptr = memreadline(ptr, buf, sizeof buf);
++lines;
if ((IsEmptyStr(buf)) && (rfc822_body == NULL)) {
rfc822_body = ptr;
}
- }
+ } while (*ptr != 0);
rfc822_headers_len = rfc822_body - rfc822;
rfc822_body_len = rfc822_len - rfc822_headers_len;