msgbase.c style cleanup
[citadel.git] / citadel / msgbase.c
index a4ef8b925cfd6fea7b820b25e14b4cde8d242af9..901d18673caa99c6b6408ab4555958a2292835e2 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Implements the message store.
  *
- * Copyright (c) 1987-2017 by the citadel.org team
+ * Copyright (c) 1987-2018 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 version 3.
@@ -55,23 +55,23 @@ char *msgkeys[91] = {
        NULL, 
        "from", /* A -> eAuthor       */
        NULL,   /* B -> eBig_message  */
-       NULL,   /* C -> eRemoteRoom   */
-       NULL,   /* D -> eDestination  */
+       NULL,   /* C -> eRemoteRoom   FIXME no more ignet */
+       NULL,   /* D -> eDestination  FIXME no more ignet */
        "exti", /* E -> eXclusivID    */
        "rfca", /* F -> erFc822Addr   */
        NULL,   /* G */
-       "hnod", /* H -> eHumanNode    */
+       "hnod", /* H -> eHumanNode    FIXME no more ignet */
        "msgn", /* I -> emessageId    */
        "jrnl", /* J -> eJournal      */
        "rep2", /* K -> eReplyTo      */
        "list", /* L -> eListID       */
        "text", /* M -> eMesageText   */
-       "node", /* N -> eNodeName     */
+       "node", /* N -> eNodeName     FIXME no more ignet */
        "room", /* O -> eOriginalRoom */
        "path", /* P -> eMessagePath  */
        NULL,   /* Q */
        "rcpt", /* R -> eRecipient    */
-       "spec", /* S -> eSpecialField */
+       "spec", /* S -> eSpecialField FIXME we might not be using this anymore */
        "time", /* T -> eTimestamp    */
        "subj", /* U -> eMsgSubject   */
        "nvto", /* V -> eenVelopeTo   */
@@ -147,22 +147,25 @@ eMsgField FieldOrder[]  = {
 
 static const long NDiskFields = sizeof(FieldOrder) / sizeof(eMsgField);
 
+
 int CM_IsEmpty(struct CtdlMessage *Msg, eMsgField which)
 {
-       return !((Msg->cm_fields[which] != NULL) &&
-                (Msg->cm_fields[which][0] != '\0'));
+       return !((Msg->cm_fields[which] != NULL) && (Msg->cm_fields[which][0] != '\0'));
 }
 
+
 void CM_SetField(struct CtdlMessage *Msg, eMsgField which, const char *buf, long length)
 {
-       if (Msg->cm_fields[which] != NULL)
+       if (Msg->cm_fields[which] != NULL) {
                free (Msg->cm_fields[which]);
+       }
        Msg->cm_fields[which] = malloc(length + 1);
        memcpy(Msg->cm_fields[which], buf, length);
        Msg->cm_fields[which][length] = '\0';
        Msg->cm_lengths[which] = length;
 }
 
+
 void CM_SetFieldLONG(struct CtdlMessage *Msg, eMsgField which, long lvalue)
 {
        char buf[128];
@@ -170,6 +173,8 @@ void CM_SetFieldLONG(struct CtdlMessage *Msg, eMsgField which, long lvalue)
        len = snprintf(buf, sizeof(buf), "%ld", lvalue);
        CM_SetField(Msg, which, buf, len);
 }
+
+
 void CM_CutFieldAt(struct CtdlMessage *Msg, eMsgField WhichToCut, long maxlen)
 {
        if (Msg->cm_fields[WhichToCut] == NULL)
@@ -182,6 +187,7 @@ void CM_CutFieldAt(struct CtdlMessage *Msg, eMsgField WhichToCut, long maxlen)
        }
 }
 
+
 void CM_FlushField(struct CtdlMessage *Msg, eMsgField which)
 {
        if (Msg->cm_fields[which] != NULL)
@@ -189,35 +195,37 @@ void CM_FlushField(struct CtdlMessage *Msg, eMsgField which)
        Msg->cm_fields[which] = NULL;
        Msg->cm_lengths[which] = 0;
 }
+
+
 void CM_Flush(struct CtdlMessage *Msg)
 {
        int i;
 
-       if (CM_IsValidMsg(Msg) == 0) 
+       if (CM_IsValidMsg(Msg) == 0) {
                return;
+       }
 
-       for (i = 0; i < 256; ++i)
-       {
+       for (i = 0; i < 256; ++i) {
                CM_FlushField(Msg, i);
        }
 }
 
+
 void CM_CopyField(struct CtdlMessage *Msg, eMsgField WhichToPutTo, eMsgField WhichtToCopy)
 {
        long len;
-       if (Msg->cm_fields[WhichToPutTo] != NULL)
+       if (Msg->cm_fields[WhichToPutTo] != NULL) {
                free (Msg->cm_fields[WhichToPutTo]);
+       }
 
-       if (Msg->cm_fields[WhichtToCopy] != NULL)
-       {
+       if (Msg->cm_fields[WhichtToCopy] != NULL) {
                len = Msg->cm_lengths[WhichtToCopy];
                Msg->cm_fields[WhichToPutTo] = malloc(len + 1);
                memcpy(Msg->cm_fields[WhichToPutTo], Msg->cm_fields[WhichtToCopy], len);
                Msg->cm_fields[WhichToPutTo][len] = '\0';
                Msg->cm_lengths[WhichToPutTo] = len;
        }
-       else
-       {
+       else {
                Msg->cm_fields[WhichToPutTo] = NULL;
                Msg->cm_lengths[WhichToPutTo] = 0;
        }
@@ -249,48 +257,53 @@ void CM_PrependToField(struct CtdlMessage *Msg, eMsgField which, const char *buf
        }
 }
 
+
 void CM_SetAsField(struct CtdlMessage *Msg, eMsgField which, char **buf, long length)
 {
-       if (Msg->cm_fields[which] != NULL)
+       if (Msg->cm_fields[which] != NULL) {
                free (Msg->cm_fields[which]);
+       }
 
        Msg->cm_fields[which] = *buf;
        *buf = NULL;
        Msg->cm_lengths[which] = length;
 }
 
+
 void CM_SetAsFieldSB(struct CtdlMessage *Msg, eMsgField which, StrBuf **buf)
 {
-       if (Msg->cm_fields[which] != NULL)
+       if (Msg->cm_fields[which] != NULL) {
                free (Msg->cm_fields[which]);
+       }
 
        Msg->cm_lengths[which] = StrLength(*buf);
        Msg->cm_fields[which] = SmashStrBuf(buf);
 }
 
+
 void CM_GetAsField(struct CtdlMessage *Msg, eMsgField which, char **ret, long *retlen)
 {
-       if (Msg->cm_fields[which] != NULL)
-       {
+       if (Msg->cm_fields[which] != NULL) {
                *retlen = Msg->cm_lengths[which];
                *ret = Msg->cm_fields[which];
                Msg->cm_fields[which] = NULL;
                Msg->cm_lengths[which] = 0;
        }
-       else
-       {
+       else {
                *ret = NULL;
                *retlen = 0;
        }
 }
 
+
 /*
  * Returns 1 if the supplied pointer points to a valid Citadel message.
  * If the pointer is NULL or the magic number check fails, returns 0.
  */
 int CM_IsValidMsg(struct CtdlMessage *msg) {
-       if (msg == NULL)
+       if (msg == NULL) {
                return 0;
+       }
        if ((msg->cm_magic) != CTDLMESSAGE_MAGIC) {
                syslog(LOG_WARNING, "msgbase: CM_IsValidMsg() self-check failed");
                return 0;
@@ -298,6 +311,7 @@ int CM_IsValidMsg(struct CtdlMessage *msg) {
        return 1;
 }
 
+
 void CM_FreeContents(struct CtdlMessage *msg)
 {
        int i;
@@ -310,13 +324,14 @@ void CM_FreeContents(struct CtdlMessage *msg)
 
        msg->cm_magic = 0;      /* just in case */
 }
+
+
 /*
  * 'Destructor' for struct CtdlMessage
  */
 void CM_Free(struct CtdlMessage *msg)
 {
-       if (CM_IsValidMsg(msg) == 0) 
-       {
+       if (CM_IsValidMsg(msg) == 0) {
                if (msg != NULL) free (msg);
                return;
        }
@@ -324,40 +339,42 @@ void CM_Free(struct CtdlMessage *msg)
        free(msg);
 }
 
+
 int CM_DupField(eMsgField i, struct CtdlMessage *OrgMsg, struct CtdlMessage *NewMsg)
 {
        long len;
        len = OrgMsg->cm_lengths[i];
        NewMsg->cm_fields[i] = malloc(len + 1);
-       if (NewMsg->cm_fields[i] == NULL)
+       if (NewMsg->cm_fields[i] == NULL) {
                return 0;
+       }
        memcpy(NewMsg->cm_fields[i], OrgMsg->cm_fields[i], len);
        NewMsg->cm_fields[i][len] = '\0';
        NewMsg->cm_lengths[i] = len;
        return 1;
 }
 
+
 struct CtdlMessage * CM_Duplicate(struct CtdlMessage *OrgMsg)
 {
        int i;
        struct CtdlMessage *NewMsg;
 
-       if (CM_IsValidMsg(OrgMsg) == 0) 
+       if (CM_IsValidMsg(OrgMsg) == 0) {
                return NULL;
+       }
        NewMsg = (struct CtdlMessage *)malloc(sizeof(struct CtdlMessage));
-       if (NewMsg == NULL)
+       if (NewMsg == NULL) {
                return NULL;
+       }
 
        memcpy(NewMsg, OrgMsg, sizeof(struct CtdlMessage));
 
        memset(&NewMsg->cm_fields, 0, sizeof(char*) * 256);
        
-       for (i = 0; i < 256; ++i)
-       {
-               if (OrgMsg->cm_fields[i] != NULL)
-               {
-                       if (!CM_DupField(i, OrgMsg, NewMsg))
-                       {
+       for (i = 0; i < 256; ++i) {
+               if (OrgMsg->cm_fields[i] != NULL) {
+                       if (!CM_DupField(i, OrgMsg, NewMsg)) {
                                CM_Free(NewMsg);
                                return NULL;
                        }
@@ -368,9 +385,6 @@ struct CtdlMessage * CM_Duplicate(struct CtdlMessage *OrgMsg)
 }
 
 
-
-
-
 /* Determine if a given message matches the fields in a message template.
  * Return 0 for a successful match.
  */
@@ -403,7 +417,6 @@ int CtdlMsgCmp(struct CtdlMessage *msg, struct CtdlMessage *template) {
 }
 
 
-
 /*
  * Retrieve the "seen" message list for the current room.
  */
@@ -413,14 +426,15 @@ void CtdlGetSeen(char *buf, int which_set) {
        /* Learn about the user and room in question */
        CtdlGetRelationship(&vbuf, &CC->user, &CC->room);
 
-       if (which_set == ctdlsetseen_seen)
+       if (which_set == ctdlsetseen_seen) {
                safestrncpy(buf, vbuf.v_seen, SIZ);
-       if (which_set == ctdlsetseen_answered)
+       }
+       if (which_set == ctdlsetseen_answered) {
                safestrncpy(buf, vbuf.v_answered, SIZ);
+       }
 }
 
 
-
 /*
  * Manipulate the "seen msgs" string (or other message set strings)
  */
@@ -432,7 +446,7 @@ void CtdlSetSeen(long *target_msgnums, int num_target_msgnums,
        int is_seen = 0;
        int was_seen = 0;
        long lo = (-1L);
-       long hi = (-1L); /// TODO: we just write here. y?
+       long hi = (-1L);
        visit vbuf;
        long *msglist;
        int num_msgs = 0;
@@ -538,7 +552,6 @@ void CtdlSetSeen(long *target_msgnums, int num_target_msgnums,
        FreeStrBuf(&lostr);
        FreeStrBuf(&histr);
 
-
        /* Now translate the array of booleans back into a sequence set */
        FlushStrBuf(vset);
        was_seen = 0;
@@ -843,12 +856,15 @@ int CtdlForEachMessage(int mode, long ref, char *search_string,
                            )
                            ) {
                                if ((mode == MSGS_NEW) && (CC->user.flags & US_LASTOLD) && (lastold > 0L) && (printed_lastold == 0) && (!is_seen)) {
-                                       if (CallBack)
+                                       if (CallBack) {
                                                CallBack(lastold, userdata);
+                                       }
                                        printed_lastold = 1;
                                        ++num_processed;
                                }
-                               if (CallBack) CallBack(thismsg, userdata);
+                               if (CallBack) {
+                                       CallBack(thismsg, userdata);
+                               }
                                ++num_processed;
                        }
                }
@@ -872,7 +888,6 @@ int CtdlForEachMessage(int mode, long ref, char *search_string,
 }
 
 
-
 /*
  * memfmout()  -  Citadel text formatter and paginator.
  *          Although the original purpose of this routine was to format
@@ -895,14 +910,12 @@ void memfmout(
        while (ch=*(mptr++), ch != 0) {
 
                if (ch == '\n') {
-                       if (client_write(outbuf, len) == -1)
-                       {
+                       if (client_write(outbuf, len) == -1) {
                                syslog(LOG_ERR, "msgbase: memfmout() aborting due to write failure");
                                return;
                        }
                        len = 0;
-                       if (client_write(nl, nllen) == -1)
-                       {
+                       if (client_write(nl, nllen) == -1) {
                                syslog(LOG_ERR, "msgbase: memfmout() aborting due to write failure");
                                return;
                        }
@@ -913,14 +926,12 @@ void memfmout(
                }
                else if (isspace(ch)) {
                        if (column > 72) {              /* Beyond 72 columns, break on the next space */
-                               if (client_write(outbuf, len) == -1)
-                               {
+                               if (client_write(outbuf, len) == -1) {
                                        syslog(LOG_ERR, "msgbase: memfmout() aborting due to write failure");
                                        return;
                                }
                                len = 0;
-                               if (client_write(nl, nllen) == -1)
-                               {
+                               if (client_write(nl, nllen) == -1) {
                                        syslog(LOG_ERR, "msgbase: memfmout() aborting due to write failure");
                                        return;
                                }
@@ -935,14 +946,12 @@ void memfmout(
                        outbuf[len++] = ch;
                        ++column;
                        if (column > 1000) {            /* Beyond 1000 columns, break anywhere */
-                               if (client_write(outbuf, len) == -1)
-                               {
+                               if (client_write(outbuf, len) == -1) {
                                        syslog(LOG_ERR, "msgbase: memfmout() aborting due to write failure");
                                        return;
                                }
                                len = 0;
-                               if (client_write(nl, nllen) == -1)
-                               {
+                               if (client_write(nl, nllen) == -1) {
                                        syslog(LOG_ERR, "msgbase: memfmout(): aborting due to write failure");
                                        return;
                                }
@@ -951,8 +960,7 @@ void memfmout(
                }
        }
        if (len) {
-               if (client_write(outbuf, len) == -1)
-               {
+               if (client_write(outbuf, len) == -1) {
                        syslog(LOG_ERR, "msgbase: memfmout() aborting due to write failure");
                        return;
                }
@@ -962,7 +970,6 @@ void memfmout(
 }
 
 
-
 /*
  * Callback function for mime parser that simply lists the part
  */
@@ -986,6 +993,7 @@ void list_this_part(char *name, char *filename, char *partnum, char *disp,
        }
 }
 
+
 /* 
  * Callback function for multipart prefix
  */
@@ -1005,6 +1013,7 @@ void list_this_pref(char *name, char *filename, char *partnum, char *disp,
        }
 }
 
+
 /* 
  * Callback function for multipart sufffix
  */
@@ -1066,7 +1075,6 @@ void mime_download(char *name, char *filename, char *partnum, char *disp,
 }
 
 
-
 /*
  * Callback function for mime parser that outputs a section all at once.
  * We can specify the desired section by part number *or* content-id.
@@ -1093,6 +1101,7 @@ void mime_spew_section(char *name, char *filename, char *partnum, char *disp,
        }
 }
 
+
 struct CtdlMessage *CtdlDeserializeMessage(long msgnum, int with_body, const char *Buffer, long Length)
 {
        struct CtdlMessage *ret = NULL;
@@ -1132,8 +1141,7 @@ struct CtdlMessage *CtdlDeserializeMessage(long msgnum, int with_body, const cha
                long len;
 
                /* work around possibly buggy messages: */
-               while (field_header == '\0')
-               {
+               while (field_header == '\0') {
                        if (mptr >= upper_bound) {
                                break;
                        }
@@ -1174,8 +1182,7 @@ struct CtdlMessage *CtdlFetchMessage(long msgnum, int with_body, int run_msg_hoo
                return NULL;
        }
 
-       if (dmsgtext->ptr[dmsgtext->len - 1] != '\0')
-       {
+       if (dmsgtext->ptr[dmsgtext->len - 1] != '\0') {
                syslog(LOG_ERR, "msgbase: CtdlFetchMessage(%ld, %d) Forcefully terminating message!!", msgnum, with_body);
                dmsgtext->ptr[dmsgtext->len - 1] = '\0';
        }
@@ -1214,7 +1221,6 @@ struct CtdlMessage *CtdlFetchMessage(long msgnum, int with_body, int run_msg_hoo
 }
 
 
-
 /*
  * Pre callback function for multipart/alternative
  *
@@ -1242,6 +1248,7 @@ void fixed_output_pre(char *name, char *filename, char *partnum, char *disp,
        }
 }
 
+
 /*
  * Post callback function for multipart/alternative
  */
@@ -1262,6 +1269,7 @@ void fixed_output_post(char *name, char *filename, char *partnum, char *disp,
        }
 }
 
+
 /*
  * Inline callback function for mime parser that wants to display text
  */
@@ -1328,6 +1336,7 @@ void fixed_output(char *name, char *filename, char *partnum, char *disp,
        }
 }
 
+
 /*
  * The client is elegant and sophisticated and wants to be choosy about
  * MIME content types, so figure out which multipart/alternative part
@@ -1349,11 +1358,6 @@ void choose_preferred(char *name, char *filename, char *partnum, char *disp,
        
        ma = (struct ma_info *)cbuserdata;
 
-       // NOTE: REMOVING THIS CONDITIONAL FIXES BUG 220
-       //       http://bugzilla.citadel.org/show_bug.cgi?id=220
-       // I don't know if there are any side effects!  Please TEST TEST TEST
-       //if (ma->is_ma > 0) {
-
        for (i=0; i<num_tokens(CC->preferred_formats, '|'); ++i) {
                extract_token(buf, CC->preferred_formats, i, '|', sizeof buf);
                if ( (!strcasecmp(buf, cbtype)) && (!ma->freeze) ) {
@@ -1366,6 +1370,7 @@ void choose_preferred(char *name, char *filename, char *partnum, char *disp,
        }
 }
 
+
 /*
  * Now that we've chosen our preferred part, output it.
  */
@@ -1531,7 +1536,6 @@ int check_cached_msglist(long msgnum) {
 }
 
 
-
 /*
  * Get a message off disk.  (returns om_* values found in msgbase.h)
  * 
@@ -1688,7 +1692,6 @@ int CtdlOutputMsg(long msg_num,           /* message number (local) to fetch */
 }
 
 
-
 void OutputCtdlMsgHeaders(
        struct CtdlMessage *TheMessage,
        int do_proto)           /* do Citadel protocol responses? */
@@ -1725,9 +1728,7 @@ void OutputCtdlMsgHeaders(
         * local Citadel network.
         */
        suppress_f = 0;
-       if (!CM_IsEmpty(TheMessage, eNodeName) &&
-           (haschar(TheMessage->cm_fields[eNodeName], '.') == 0))
-       {
+       if (!CM_IsEmpty(TheMessage, eNodeName) && (haschar(TheMessage->cm_fields[eNodeName], '.') == 0)) {
                suppress_f = 1;
        }
 
@@ -1753,17 +1754,16 @@ void OutputCtdlMsgHeaders(
                                }
                                /* Masquerade display name if needed */
                                else {
-                                       if (do_proto) cprintf("%s=%s\n",
-                                                             msgkeys[Field],
-                                                             TheMessage->cm_fields[Field]
-                                               );
+                                       if (do_proto) {
+                                               cprintf("%s=%s\n", msgkeys[Field], TheMessage->cm_fields[Field]);
+                                       }
                                }
                        }
                }
        }
-
 }
 
+
 void OutputRFC822MsgHeaders(
        struct CtdlMessage *TheMessage,
        int flags,              /* should the bessage be exported clean */
@@ -1817,27 +1817,20 @@ void OutputRFC822MsgHeaders(
                                subject_found = 1;
                                break;
                        case emessageId:
-                               safestrncpy(mid, mptr, sizeof_mid); /// TODO: detect @ here and copy @nodename in if not found.
+                               safestrncpy(mid, mptr, sizeof_mid);
                                break;
                        case erFc822Addr:
                                safestrncpy(fuser, mptr, sizeof_fuser);
-                       /* case eOriginalRoom:
-                          cprintf("X-Citadel-Room: %s%s",
-                          mptr, nl)
-                          break;
-                          ; */
                        case eNodeName:
                                safestrncpy(snode, mptr, sizeof_snode);
                                break;
                        case eRecipient:
-                               if (haschar(mptr, '@') == 0)
-                               {
+                               if (haschar(mptr, '@') == 0) {
                                        sanitize_truncated_recipient(mptr);
                                        cprintf("To: %s@%s", mptr, CtdlGetConfigStr("c_fqdn"));
                                        cprintf("%s", nl);
                                }
-                               else
-                               {
+                               else {
                                        if ((flags & QP_EADDR) != 0) {
                                                mptr = qp_encode_email_addrs(mptr);
                                        }
@@ -1847,8 +1840,7 @@ void OutputRFC822MsgHeaders(
                                }
                                break;
                        case eTimestamp:
-                               datestring(datestamp, sizeof datestamp,
-                                          atol(mptr), DATESTRING_RFC822);
+                               datestring(datestamp, sizeof datestamp, atol(mptr), DATESTRING_RFC822);
                                cprintf("Date: %s%s", datestamp, nl);
                                break;
                        case eWeferences:
@@ -1888,10 +1880,10 @@ void OutputRFC822MsgHeaders(
                        case eVltMsgNum:
                                /* these don't map to mime message headers. */
                                break;
-
                        }
-                       if (mptr != mpptr)
+                       if (mptr != mpptr) {
                                free (mptr);
+                       }
                }
        }
        if (subject_found == 0) {
@@ -1904,7 +1896,6 @@ void Dump_RFC822HeadersBody(
        struct CtdlMessage *TheMessage,
        int headers_only,       /* eschew the message body? */
        int flags,              /* should the bessage be exported clean? */
-
        const char *nl, int nlen)
 {
        cit_uint8_t prev_ch;
@@ -1918,7 +1909,6 @@ void Dump_RFC822HeadersBody(
 
        mptr = TheMessage->cm_fields[eMesageText];
 
-
        prev_ch = '\0';
        while (*mptr != '\0') {
                if (*mptr == '\r') {
@@ -1942,7 +1932,7 @@ void Dump_RFC822HeadersBody(
                            ((headers_only == HEADERS_ONLY) && (mptr < StartOfText)) ||
                            ((headers_only != HEADERS_NONE) && 
                             (headers_only != HEADERS_ONLY))
-                               ) {
+                       ) {
                                if (*mptr == '\n') {
                                        memcpy(&outbuf[outlen], nl, nllen);
                                        outlen += nllen;
@@ -1953,20 +1943,15 @@ void Dump_RFC822HeadersBody(
                                }
                        }
                }
-               if (flags & ESC_DOT)
-               {
-                       if ((prev_ch == '\n') && 
-                           (*mptr == '.') && 
-                           ((*(mptr+1) == '\r') || (*(mptr+1) == '\n')))
-                       {
+               if (flags & ESC_DOT) {
+                       if ((prev_ch == '\n') && (*mptr == '.') && ((*(mptr+1) == '\r') || (*(mptr+1) == '\n'))) {
                                outbuf[outlen++] = '.';
                        }
                        prev_ch = *mptr;
                }
                ++mptr;
                if (outlen > 1000) {
-                       if (client_write(outbuf, outlen) == -1)
-                       {
+                       if (client_write(outbuf, outlen) == -1) {
                                syslog(LOG_ERR, "msgbase: Dump_RFC822HeadersBody() aborting due to write failure");
                                return;
                        }
@@ -1983,7 +1968,6 @@ void Dump_RFC822HeadersBody(
 }
 
 
-
 /* If the format type on disk is 1 (fixed-format), then we want
  * everything to be output completely literally ... regardless of
  * what message transfer format is in use.
@@ -2026,20 +2010,18 @@ void DumpFormatFixed(
                                ch = '\r';
                        }
                }
-               /* if we reach the outer bounds of our buffer, 
-                  abort without respect what whe purge. */
-               if (xlline && 
-                   ((isspace(ch)) || 
-                    (buflen > SIZ - nllen - 2)))
+
+               /* if we reach the outer bounds of our buffer, abort without respect for what we purge. */
+               if (xlline && ((isspace(ch)) || (buflen > SIZ - nllen - 2))) {
                        ch = '\r';
+               }
 
                if (ch == '\r') {
                        memcpy (&buf[buflen], nl, nllen);
                        buflen += nllen;
                        buf[buflen] = '\0';
 
-                       if (client_write(buf, buflen) == -1)
-                       {
+                       if (client_write(buf, buflen) == -1) {
                                syslog(LOG_ERR, "msgbase: DumpFormatFixed() aborting due to write failure");
                                return;
                        }
@@ -2052,10 +2034,12 @@ void DumpFormatFixed(
                }
        }
        buf[buflen] = '\0';
-       if (!IsEmptyStr(buf))
+       if (!IsEmptyStr(buf)) {
                cprintf("%s%s", buf, nl);
+       }
 }
 
+
 /*
  * Get a message off disk.  (returns om_* values found in msgbase.h)
  */
@@ -2093,7 +2077,6 @@ int CtdlOutputPreLoadedMsg(
 
        if (!CM_IsValidMsg(TheMessage)) {
                syslog(LOG_ERR, "msgbase: error; invalid preloaded message for output");
-               cit_backtrace ();
                return(om_no_such_msg);
        }
 
@@ -2912,12 +2895,12 @@ long CtdlSubmitMsg(struct CtdlMessage *msg,     /* message to save */
        /* Decide where bounces need to be delivered */
        if ((recps != NULL) && (recps->bounce_to == NULL))
        {
-               if (CC->logged_in) 
-                       snprintf(bounce_to, sizeof bounce_to, "%s@%s",
-                                CC->user.fullname, CtdlGetConfigStr("c_nodename"));
-               else 
-                       snprintf(bounce_to, sizeof bounce_to, "%s@%s",
-                                msg->cm_fields[eAuthor], msg->cm_fields[eNodeName]);
+               if (CC->logged_in) {
+                       snprintf(bounce_to, sizeof bounce_to, "%s@%s", CC->user.fullname, CtdlGetConfigStr("c_nodename"));
+               }
+               else {
+                       snprintf(bounce_to, sizeof bounce_to, "%s@%s", msg->cm_fields[eAuthor], msg->cm_fields[eNodeName]);
+               }
                recps->bounce_to = bounce_to;
        }
                
@@ -3501,14 +3484,11 @@ int CtdlDeleteMessages(const char *room_name,           /* which room */
 }
 
 
-
-
 /*
  * GetMetaData()  -  Get the supplementary record for a message
  */
 void GetMetaData(struct MetaData *smibuf, long msgnum)
 {
-
        struct cdbdata *cdbsmi;
        long TheIndex;
 
@@ -3521,11 +3501,12 @@ void GetMetaData(struct MetaData *smibuf, long msgnum)
 
        cdbsmi = cdb_fetch(CDB_MSGMAIN, &TheIndex, sizeof(long));
        if (cdbsmi == NULL) {
-               return;         /* record not found; go with defaults */
+               return;                 /* record not found; leave it alone */
        }
        memcpy(smibuf, cdbsmi->ptr,
               ((cdbsmi->len > sizeof(struct MetaData)) ?
-               sizeof(struct MetaData) : cdbsmi->len));
+               sizeof(struct MetaData) : cdbsmi->len)
+       );
        cdb_free(cdbsmi);
        return;
 }
@@ -3543,10 +3524,11 @@ void PutMetaData(struct MetaData *smibuf)
 
        cdb_store(CDB_MSGMAIN,
                  &TheIndex, (int)sizeof(long),
-                 smibuf, (int)sizeof(struct MetaData));
-
+                 smibuf, (int)sizeof(struct MetaData)
+       );
 }
 
+
 /*
  * AdjRefCount  -  submit an adjustment to the reference count for a message.
  *                 (These are just queued -- we actually process them later.)
@@ -3597,14 +3579,13 @@ void AdjRefCount(long msgnum, int incr)
        return;
 }
 
+
 void AdjRefCountList(long *msgnum, long nmsg, int incr)
 {
        long i, the_size, offset;
        struct arcq *new_arcq;
        int rv = 0;
 
-       syslog(LOG_DEBUG, "msgbase: AdjRefCountList() msg %ld ref count delta %+d", nmsg, incr);
-
        begin_critical_section(S_SUPPMSGMAIN);
        if (arcfp == NULL) {
                arcfp = fopen(file_arcq, "ab+");
@@ -3625,6 +3606,7 @@ void AdjRefCountList(long *msgnum, long nmsg, int incr)
        the_size = sizeof(struct arcq) * nmsg;
        new_arcq = malloc(the_size);
        for (i = 0; i < nmsg; i++) {
+               syslog(LOG_DEBUG, "msgbase: AdjRefCountList() msg %ld ref count delta %+d", msgnum[i], incr);
                new_arcq[i].arcq_msgnum = msgnum[i];
                new_arcq[i].arcq_delta = incr;
        }
@@ -3701,7 +3683,6 @@ int TDAP_ProcessAdjRefCountQueue(void)
 }
 
 
-
 /*
  * TDAP_AdjRefCount  -  adjust the reference count for a message.
  *                      This one does it "for real" because it's called by
@@ -3712,7 +3693,6 @@ int TDAP_ProcessAdjRefCountQueue(void)
  */
 void TDAP_AdjRefCount(long msgnum, int incr)
 {
-
        struct MetaData smi;
        long delnum;
 
@@ -3725,9 +3705,7 @@ void TDAP_AdjRefCount(long msgnum, int incr)
        smi.meta_refcount += incr;
        PutMetaData(&smi);
        end_critical_section(S_SUPPMSGMAIN);
-       syslog(LOG_DEBUG, "msgbase: TDAP_AdjRefCount() msg %ld ref count delta %+d, is now %d",
-                  msgnum, incr, smi.meta_refcount
-               );
+       syslog(LOG_DEBUG, "msgbase: TDAP_AdjRefCount() msg %ld ref count delta %+d, is now %d", msgnum, incr, smi.meta_refcount);
 
        /* If the reference count is now zero, delete the message
         * (and its supplementary record as well).
@@ -3747,9 +3725,9 @@ void TDAP_AdjRefCount(long msgnum, int incr)
                delnum = (0L - msgnum);
                cdb_delete(CDB_MSGMAIN, &delnum, (int)sizeof(long));
        }
-
 }
 
+
 /*
  * Write a generic object to this room
  *
@@ -3758,12 +3736,12 @@ void TDAP_AdjRefCount(long msgnum, int incr)
  */
 void CtdlWriteObject(char *req_room,                   /* Room to stuff it in */
                     char *content_type,                /* MIME type of this object */
-                    char *raw_message,         /* Data to be written */
-                    off_t raw_length,          /* Size of raw_message */
+                    char *raw_message,                 /* Data to be written */
+                    off_t raw_length,                  /* Size of raw_message */
                     struct ctdluser *is_mailbox,       /* Mailbox room? */
                     int is_binary,                     /* Is encoding necessary? */
                     int is_unique,                     /* Del others of this type? */
-                    unsigned int flags         /* Internal save flags */
+                    unsigned int flags                 /* Internal save flags */
        )
 {
        struct ctdlroom qrbuf;
@@ -3821,9 +3799,7 @@ void CtdlWriteObject(char *req_room,                      /* Room to stuff it in */
 
        /* Create the requested room if we have to. */
        if (CtdlGetRoom(&qrbuf, roomname) != 0) {
-               CtdlCreateRoom(roomname, 
-                              ( (is_mailbox != NULL) ? 5 : 3 ),
-                              "", 0, 1, 0, VIEW_BBS);
+               CtdlCreateRoom(roomname, ( (is_mailbox != NULL) ? 5 : 3 ), "", 0, 1, 0, VIEW_BBS);
        }
        /* If the caller specified this object as unique, delete all
         * other objects of this type that are currently in the room.
@@ -3839,10 +3815,9 @@ void CtdlWriteObject(char *req_room,                     /* Room to stuff it in */
 }
 
 
-
-/*****************************************************************************/
-/*                      MODULE INITIALIZATION STUFF                          */
-/*****************************************************************************/
+/************************************************************************/
+/*                      MODULE INITIALIZATION                           */
+/************************************************************************/
 
 CTDL_MODULE_INIT(msgbase)
 {
@@ -3850,6 +3825,6 @@ CTDL_MODULE_INIT(msgbase)
                FillMsgKeyLookupTable();
        }
 
-        /* return our Subversion id for the Log */
+        /* return our module id for the log */
        return "msgbase";
 }