]> code.citadel.org Git - citadel.git/blobdiff - citadel/msgbase.c
removed all references to sprintf from several files (not all files yet)
[citadel.git] / citadel / msgbase.c
index 6194f9a364d6d00dff054640eb831a4e6362923b..0cd11884316994fa95a8731c3e023b80d8642d61 100644 (file)
 extern struct config config;
 long config_msgnum;
 
+
+/* 
+ * This really belongs in serv_network.c, but I don't know how to export
+ * symbols between modules.
+ */
+struct FilterList *filterlist = NULL;
+
+
 /*
  * These are the four-character field headers we use when outputting
  * messages in Citadel format (as opposed to RFC822 format).
@@ -1157,7 +1165,7 @@ int CtdlOutputPreLoadedMsg(struct CtdlMessage *TheMessage,
                                else if (i == 'R')
                                        cprintf("To: %s%s", mptr, nl);
                                else if (i == 'T') {
-                                       datestring(datestamp, atol(mptr),
+                                       datestring(datestamp, sizeof datestamp, atol(mptr),
                                                DATESTRING_RFC822 );
                                        cprintf("Date: %s%s", datestamp, nl);
                                }
@@ -2024,10 +2032,18 @@ char *CtdlReadMessageBody(char *terminator,     /* token signalling EOT */
 
        if (exist == NULL) {
                m = mallok(4096);
+               m[0] = 0;
+               buffer_len = 4096;
+               message_len = 0;
        }
        else {
-               m = reallok(exist, strlen(exist) + 4096);
-               if (m == NULL) phree(exist);
+               message_len = strlen(exist);
+               buffer_len = message_len + 4096;
+               m = reallok(exist, buffer_len);
+               if (m == NULL) {
+                       phree(exist);
+                       return m;
+               }
        }
 
        /* flush the input if we have nowhere to store it */
@@ -2036,12 +2052,6 @@ char *CtdlReadMessageBody(char *terminator,      /* token signalling EOT */
                return(NULL);
        }
 
-       /* otherwise read it into memory */
-       else {
-               buffer_len = 4096;
-               m[0] = 0;
-               message_len = 0;
-       }
        /* read in the lines of message text one by one */
        while ( (client_gets(buf)>0) && strcmp(buf, terminator) ) {
 
@@ -2412,7 +2422,13 @@ void cmd_ent0(char *entargs)
        }
        CC->cs_flags |= CS_POSTING;
 
-       if (CC->quickroom.QRflags & QR_MAILBOX) {
+       /* In the Mail> room we have to behave a little differently --
+        * make sure the user has specified at least one recipient.  Then
+        * validate the recipient(s).
+        */
+       if ( (CC->quickroom.QRflags & QR_MAILBOX)
+          && (!strcasecmp(&CC->quickroom.QRname[11], MAILROOM)) ) {
+
                if (CC->usersupp.axlevel < 2) {
                        strcpy(recp, "sysop");
                }