Removed some leftover dependencies on message fields which no longer exist
[citadel.git] / citadel / modules / imap / imap_misc.c
index 3665264554ddc574840d88acef5e64017c857a31..6e68b6cbe7915fc3c4daf2d857677bc58d22269c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1987-2015 by the citadel.org team
+ * Copyright (c) 1987-2020 by the citadel.org team
  *
  * 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
@@ -160,26 +160,24 @@ int imap_do_copy(const char *destination_folder) {
  * are both globally unique and persistent across a room-to-room copy, we
  * can get this done quite easily.
  */
-void imap_output_copyuid_response(void) {
-       citimap *Imap = IMAP;
+void imap_output_copyuid_response(citimap *Imap) {
        int i;
-       int num_output = 0;
-  
+       StrBuf *MsgsCopied = NewStrBuf();
+
        for (i = 0; i < Imap->num_msgs; ++i) {
                if (Imap->flags[i] & IMAP_SELECTED) {
-                       ++num_output;
-                       if (num_output == 1) {
-                               IAPuts("[COPYUID ");
-                       }
-                       else if (num_output > 1) {
-                               IAPuts(",");
+                       if (StrLength(MsgsCopied) > 0) {
+                               StrBufAppendBufPlain(MsgsCopied, HKEY(","), 0);
                        }
-                       IAPrintf("%ld", Imap->msgids[i]);
+                       StrBufAppendPrintf(MsgsCopied, "%ld", Imap->msgids[i]);
                }
        }
-       if (num_output > 0) {
-               IAPuts("] ");
+
+       if (StrLength(MsgsCopied) > 0) {
+               IAPrintf("[COPYUID %ld %s %s] ", GLOBAL_UIDVALIDITY_VALUE, ChrPtr(MsgsCopied), ChrPtr(MsgsCopied));
        }
+
+       FreeStrBuf(&MsgsCopied);
 }
 
 
@@ -205,7 +203,7 @@ void imap_copy(int num_parms, ConstStr *Params) {
        ret = imap_do_copy(Params[3].Key);
        if (!ret) {
                IAPrintf("%s OK ", Params[0].Key);
-               imap_output_copyuid_response();
+               imap_output_copyuid_response(IMAP);
                IAPuts("COPY completed\r\n");
        }
        else {
@@ -233,7 +231,7 @@ void imap_uidcopy(int num_parms, ConstStr *Params) {
 
        if (imap_do_copy(Params[4].Key) == 0) {
                IAPrintf("%s OK ", Params[0].Key);
-               imap_output_copyuid_response();
+               imap_output_copyuid_response(IMAP);
                IAPuts("UID COPY completed\r\n");
        }
        else {
@@ -277,7 +275,6 @@ void imap_do_append_flags(long new_msgnum, char *new_message_flags) {
  * This function is called by the main command loop.
  */
 void imap_append(int num_parms, ConstStr *Params) {
-       struct CitContext *CCC = CC;
        long literal_length;
        struct CtdlMessage *msg = NULL;
        long new_msgnum = (-1L);
@@ -351,10 +348,10 @@ void imap_append(int num_parms, ConstStr *Params) {
        client_getln(dummy, sizeof dummy);
 
        /* Convert RFC822 newlines (CRLF) to Unix newlines (LF) */
-       IMAPM_syslog(LOG_DEBUG, "Converting CRLF to LF");
+       syslog(LOG_DEBUG, "Converting CRLF to LF");
        StrBufToUnixLF(Imap->TransmittedMessage);
 
-       IMAPM_syslog(LOG_DEBUG, "Converting message format");
+       syslog(LOG_DEBUG, "Converting message format");
        msg = convert_internet_message_buf(&Imap->TransmittedMessage);
 
        ret = imap_grabroom(roomname, Params[2].Key, 1);
@@ -368,19 +365,17 @@ void imap_append(int num_parms, ConstStr *Params) {
         * folder is selected, save its name so we can return there!!!!!)
         */
        if (Imap->selected) {
-               strcpy(savedroom, CCC->room.QRname);
+               strcpy(savedroom, CC->room.QRname);
        }
        CtdlUserGoto(roomname, 0, 0, &msgs, &new, NULL, NULL);
 
        /* If the user is locally authenticated, FORCE the From: header to
         * show up as the real sender.  (Configurable setting)
         */
-       if (CCC->logged_in) {
-               if ( ((CCC->room.QRflags & QR_MAILBOX) == 0) && (CtdlGetConfigInt("c_imap_keep_from") == 0))
+       if (CC->logged_in) {
+               if ( ((CC->room.QRflags & QR_MAILBOX) == 0) && (CtdlGetConfigInt("c_imap_keep_from") == 0))
                {
-                       CM_SetField(msg, eAuthor, CCC->user.fullname, strlen(CCC->user.fullname));
-                       CM_SetField(msg, eNodeName, CtdlGetConfigStr("c_nodename"), strlen(CtdlGetConfigStr("c_nodename")));
-                       CM_SetField(msg, eHumanNode, CtdlGetConfigStr("c_humannode"), strlen(CtdlGetConfigStr("c_humannode")));
+                       CM_SetField(msg, eAuthor, CC->user.fullname, strlen(CC->user.fullname));
                }
        }