* Implements the FETCH command in IMAP.
* This is a good example of the protocol's gratuitous complexity.
*
- * Copyright (c) 2001-2009 by the citadel.org team
+ * Copyright (c) 2001-2011 by the citadel.org team
*
- * This program is free software; you can redistribute it and/or modify
+ * This program is open source software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
syslog(LOG_DEBUG,
"RFC822: headers=" SIZE_T_FMT
", text=" SIZE_T_FMT
- ", total=" SIZE_T_FMT "\n",
+ ", total=" SIZE_T_FMT,
headers_size, text_size, total_size);
if (!strcasecmp(whichfmt, "RFC822.SIZE")) {
char *cbid, void *cbuserdata)
{
char mimebuf2[SIZ];
- char *desired_section;
+ StrBuf *desired_section;
- desired_section = (char *)cbuserdata;
- syslog(LOG_DEBUG, "imap_load_part() looking for %s, found %s\n",
- desired_section,
- partnum
+ desired_section = (StrBuf *)cbuserdata;
+ syslog(LOG_DEBUG, "imap_load_part() looking for %s, found %s",
+ ChrPtr(desired_section),
+ partnum
);
- if (!strcasecmp(partnum, desired_section)) {
- iaputs(content, length);
+ if (!strcasecmp(partnum, ChrPtr(desired_section))) {
+ client_write(content, length);
}
snprintf(mimebuf2, sizeof mimebuf2, "%s.MIME", partnum);
- if (!strcasecmp(desired_section, mimebuf2)) {
- IAPuts("Content-type: ");
- _iaputs(cbtype);
+ if (!strcasecmp(ChrPtr(desired_section), mimebuf2)) {
+ client_write(HKEY("Content-type: "));
+ client_write(cbtype, strlen(cbtype));
if (!IsEmptyStr(cbcharset)) {
- IAPuts("; charset=\"");
- _iaputs(cbcharset);
- IAPuts("\"");
+ client_write(HKEY("; charset=\""));
+ client_write(cbcharset, strlen(cbcharset));
+ client_write(HKEY("\""));
}
if (!IsEmptyStr(name)) {
- IAPuts("; name=\"");
- _iaputs(name);
- IAPuts("\"");
+ client_write(HKEY("; name=\""));
+ client_write(name, strlen(name));
+ client_write(HKEY("\""));
}
- IAPuts("\r\n");
+ client_write(HKEY("\r\n"));
if (!IsEmptyStr(encoding)) {
- IAPuts("Content-Transfer-Encoding: ");
- _iaputs(encoding);
- IAPuts("\r\n");
+ client_write(HKEY("Content-Transfer-Encoding: "));
+ client_write(encoding, strlen(encoding));
+ client_write(HKEY("\r\n"));
}
if (!IsEmptyStr(encoding)) {
- IAPuts("Content-Disposition: ");
- _iaputs(disp);
+ client_write(HKEY("Content-Disposition: "));
+ client_write(disp, strlen(disp));
if (!IsEmptyStr(filename)) {
- IAPuts("; filename=\"");
- _iaputs(filename);
- IAPuts("\"");
+ client_write(HKEY("; filename=\""));
+ client_write(filename, strlen(filename));
+ client_write(HKEY("\""));
}
- IAPuts("\r\n");
+ client_write(HKEY("\r\n"));
}
- IAPrintf("Content-Length: %ld\r\n\r\n", (long)length);
+ cprintf("Content-Length: %ld\r\n\r\n", (long)length);
}
}
if (strchr(ChrPtr(section), '[') != NULL) {
StrBufStripAllBut(section, '[', ']');
}
- syslog(LOG_DEBUG, "Section is: [%s]\n",
+ syslog(LOG_DEBUG, "Section is: [%s]",
(StrLength(section) == 0) ? "(empty)" : ChrPtr(section)
);
is_partial = 1;
}
if ( (is_partial == 1) && (StrLength(partial) > 0) ) {
- syslog(LOG_DEBUG, "Partial is <%s>\n", ChrPtr(partial));
+ syslog(LOG_DEBUG, "Partial is <%s>", ChrPtr(partial));
}
if (Imap->cached_body == NULL) {
*/
else {
mime_parser(msg->cm_fields['M'], NULL,
- *imap_load_part, NULL, NULL,
- ChrPtr(section),
- 1
- );
+ *imap_load_part, NULL, NULL,
+ section,
+ 1
+ );
}
if (loading_body_now) {
/* debug output the parsed vector */
{
int i;
- syslog(LOG_DEBUG, "----- %ld params \n",
- Cmd->num_parms);
+ syslog(LOG_DEBUG, "----- %ld params", Cmd->num_parms);
for (i=0; i < Cmd->num_parms; i++) {
if (Cmd->Params[i].len != strlen(Cmd->Params[i].Key))
- syslog(LOG_DEBUG, "*********** %ld != %ld : %s\n",
+ syslog(LOG_DEBUG, "*********** %ld != %ld : %s",
Cmd->Params[i].len,
strlen(Cmd->Params[i].Key),
Cmd->Params[i].Key);
else
- syslog(LOG_DEBUG, "%ld : %s\n",
+ syslog(LOG_DEBUG, "%ld : %s",
Cmd->Params[i].len,
Cmd->Params[i].Key);
}}
int nArgs;
int nest = 0;
const char *pch, *end;
- long initial_len;
/* Convert all whitespace to ordinary space characters. */
pch = ChrPtr(Cmd->CmdBuf);
*/
nArgs = StrLength(Cmd->CmdBuf) / 10 + 10;
nArgs = CmdAdjust(Cmd, nArgs, 0);
- initial_len = StrLength(Cmd->CmdBuf);
Cmd->num_parms = 0;
Cmd->Params[Cmd->num_parms].Key = pch = ChrPtr(Cmd->CmdBuf);
end = Cmd->Params[Cmd->num_parms].Key + StrLength(Cmd->CmdBuf);
MakeStringOf(Cmd.CmdBuf, 4);
#if 0
- syslog(LOG_DEBUG, "-------%s--------\n", ChrPtr(Cmd.CmdBuf));
+ syslog(LOG_DEBUG, "-------%s--------", ChrPtr(Cmd.CmdBuf));
#endif
num_items = imap_extract_data_items(&Cmd);
if (num_items < 1) {