map_fetch_body() pass StrBuf* into the mimeparser instead of char*, so we fix one...
[citadel.git] / citadel / modules / imap / imap_fetch.c
index fa6cc0c8492ed57c20fca25af0385110b9ecce06..aa9a3dfc0a147eb5f08800ed9a9a1fca4d3a153d 100644 (file)
@@ -2,9 +2,9 @@
  * 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.
@@ -243,7 +243,7 @@ void imap_fetch_rfc822(long msgnum, const char *whichfmt) {
        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")) {
@@ -285,51 +285,51 @@ void imap_load_part(char *name, char *filename, char *partnum, char *disp,
                    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);
        }
 }
 
@@ -671,7 +671,7 @@ void imap_fetch_body(long msgnum, ConstStr item, int is_peek) {
        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)
        );
 
@@ -705,7 +705,7 @@ void imap_fetch_body(long msgnum, ConstStr item, int is_peek) {
                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) {
@@ -754,10 +754,10 @@ void imap_fetch_body(long msgnum, ConstStr item, int is_peek) {
         */
        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) {
@@ -1133,17 +1133,16 @@ void imap_do_fetch(citimap_command *Cmd) {
 /* 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);
        }}
@@ -1259,7 +1258,6 @@ int imap_extract_data_items(citimap_command *Cmd)
        int nArgs;
        int nest = 0;
        const char *pch, *end;
-       long initial_len;
 
        /* Convert all whitespace to ordinary space characters. */
        pch = ChrPtr(Cmd->CmdBuf);
@@ -1294,7 +1292,6 @@ int imap_extract_data_items(citimap_command *Cmd)
         */
        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);
@@ -1468,7 +1465,7 @@ void imap_uidfetch(int num_parms, ConstStr *Params) {
 
        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) {