]> code.citadel.org Git - citadel.git/blobdiff - citadel/msgbase.c
* Added a GTSN (GeT list of SeeN messages) command
[citadel.git] / citadel / msgbase.c
index 7495257a3f23c1dbd364e298725faa68eedb38fc..819b98849825158bd02d44d33f1fae852f2f263b 100644 (file)
@@ -284,6 +284,21 @@ int CtdlMsgCmp(struct CtdlMessage *msg, struct CtdlMessage *template) {
 }
 
 
+
+/*
+ * Retrieve the "seen" message list for the current room.
+ */
+void CtdlGetSeen(char *buf) {
+       struct visit vbuf;
+
+       /* Learn about the user and room in question */
+       CtdlGetRelationship(&vbuf, &CC->usersupp, &CC->quickroom);
+
+       safestrncpy(buf, vbuf.v_seen, SIZ);
+}
+
+
+
 /*
  * Manipulate the "seen msgs" string.
  */
@@ -300,8 +315,6 @@ void CtdlSetSeen(long target_msgnum, int target_setting) {
        int num_msgs = 0;
 
        /* Learn about the user and room in question */
-       get_mm();
-       getuser(&CC->usersupp, CC->curr_user);
        CtdlGetRelationship(&vbuf, &CC->usersupp, &CC->quickroom);
 
        /* Load the message list */
@@ -895,26 +908,20 @@ void fixed_output(char *name, char *filename, char *partnum, char *disp,
        
                if ( (!strcasecmp(cbtype, "text/plain")) 
                   || (strlen(cbtype)==0) ) {
-                       wlen = length;
                        wptr = content;
-                       while (wlen--) {
-                               ch = *wptr++;
-                               /**********
-                               if (ch==10) cprintf("\r\n");
-                               else cprintf("%c", ch);
-                                **********/
-                               cprintf("%c", ch);
+                       if (length > 0) {
+                               client_write(wptr, length);
+                               if (wptr[length-1] != '\n') {
+                                       cprintf("\n");
+                               }
                        }
-                       if (ch != '\n') cprintf("\n");
                }
                else if (!strcasecmp(cbtype, "text/html")) {
                        ptr = html_to_ascii(content, 80, 0);
                        wlen = strlen(ptr);
-                       wptr = ptr;
-                       while (wlen--) {
-                               ch = *wptr++;
-                               if (ch==10) cprintf("\r\n");
-                               else cprintf("%c", ch);
+                       client_write(ptr, wlen);
+                       if (ptr[wlen-1] != '\n') {
+                               cprintf("\n");
                        }
                        phree(ptr);
                }
@@ -1906,6 +1913,7 @@ long CtdlSubmitMsg(struct CtdlMessage *msg,       /* message to save */
                if (getuser(&userbuf, recipient) == 0) {
                        MailboxName(actual_rm, sizeof actual_rm, &userbuf, MAILROOM);
                        CtdlSaveMsgPointerInRoom(actual_rm, newmsgid, 0);
+                       BumpNewMailCounter(userbuf.usernum);
                }
                else {
                        lprintf(9, "No user <%s>\n", recipient);