]> code.citadel.org Git - citadel.git/blobdiff - webcit/messages.c
* get synced with citadels mime_parser
[citadel.git] / webcit / messages.c
index 76a9757eaa002c6db450852517a89c7d51e10bb7..96fe8cbe36136909859bb5171f57a751ecc69226 100644 (file)
@@ -127,7 +127,18 @@ void utf8ify_rfc822_string(char *buf) {
                        ibuflen = CtdlDecodeBase64(ibuf, istr, strlen(istr));
                }
                else if (!strcasecmp(encoding, "Q")) {  /**< quoted-printable */
-                       ibuflen = CtdlDecodeQuotedPrintable(ibuf, istr, strlen(istr));
+                       size_t len;
+                       long pos;
+                       
+                       len = strlen(istr);
+                       pos = 0;
+                       while (pos < len)
+                       {
+                               if (istr[pos] == '_') istr[pos] = ' ';
+                               pos++;
+                       }
+
+                       ibuflen = CtdlDecodeQuotedPrintable(ibuf, istr, len);
                }
                else {
                        strcpy(ibuf, istr);             /**< unknown encoding */
@@ -966,7 +977,7 @@ void read_message(long msgnum, int printable_view, char *section) {
        wprintf("</tr></table>\n");
 
        /** Begin body */
-       wprintf("<table border=0 width=100%% bgcolor=\"#FFFFFF\" "
+       wprintf("<table class=\"messages_background\" "
                "cellpadding=1 cellspacing=0><tr><td>");
 
        /**
@@ -2068,7 +2079,7 @@ int summcmp_rdate(const void *s1, const void *s2) {
  */
 void readloop(char *oper)
 {
-       char cmd[SIZ];
+       char cmd[256];
        char buf[SIZ];
        char old_msgs[SIZ];
        int a, b;
@@ -2140,23 +2151,39 @@ void readloop(char *oper)
        else if (!strcmp(oper, "readold")) {
                strcpy(cmd, "MSGS OLD");
        }
+       else if (!strcmp(oper, "do_search")) {
+               sprintf(cmd, "MSGS SEARCH|%s", bstr("query"));
+       }
        else {
                strcpy(cmd, "MSGS ALL");
        }
 
        if ((WC->wc_view == VIEW_MAILBOX) && (maxmsgs > 1)) {
                is_summary = 1;
-               strcpy(cmd, "MSGS ALL");
+               if (!strcmp(oper, "do_search")) {
+                       sprintf(cmd, "MSGS SEARCH|%s", bstr("query"));
+               }
+               else {
+                       strcpy(cmd, "MSGS ALL");
+               }
        }
 
        if ((WC->wc_view == VIEW_ADDRESSBOOK) && (maxmsgs > 1)) {
                is_addressbook = 1;
-               strcpy(cmd, "MSGS ALL");
+               if (!strcmp(oper, "do_search")) {
+                       sprintf(cmd, "MSGS SEARCH|%s", bstr("query"));
+               }
+               else {
+                       strcpy(cmd, "MSGS ALL");
+               }
                maxmsgs = 9999999;
        }
 
-       if (is_summary) {
-               strcpy(cmd, "MSGS ALL|||1");    /**< fetch header summary */
+       if (is_summary) {                       /**< fetch header summary */
+               snprintf(cmd, sizeof cmd, "MSGS %s|%s||1",
+                       (!strcmp(oper, "do_search") ? "SEARCH" : "ALL"),
+                       (!strcmp(oper, "do_search") ? bstr("query") : "")
+               );
                startmsg = 1;
                maxmsgs = 9999999;
        }
@@ -2202,7 +2229,7 @@ void readloop(char *oper)
        if (nummsgs == 0) {
 
                if ((!is_tasks) && (!is_calendar) && (!is_notes) && (!is_addressbook)) {
-                       wprintf("<em>");
+                       wprintf("<div align=\"center\"><br /><em>");
                        if (!strcmp(oper, "readnew")) {
                                wprintf(_("No new messages."));
                        } else if (!strcmp(oper, "readold")) {
@@ -2210,7 +2237,7 @@ void readloop(char *oper)
                        } else {
                                wprintf(_("No messages here."));
                        }
-                       wprintf("</em>\n");
+                       wprintf("</em><br /></div>\n");
                }
 
                goto DONE;
@@ -2556,6 +2583,7 @@ void post_mime_to_server(void) {
 
        /** RFC2045 requires this, and some clients look for it... */
        serv_puts("MIME-Version: 1.0");
+       serv_puts("X-Mailer: " SERVER);
 
        /** If there are attachments, we have to do multipart/mixed */
        if (WC->first_attachment != NULL) {
@@ -2591,7 +2619,7 @@ void post_mime_to_server(void) {
                        encoded_length = ((att->length * 150) / 100);
                        encoded = malloc(encoded_length);
                        if (encoded == NULL) break;
-                       CtdlEncodeBase64(encoded, att->data, att->length);
+                       CtdlEncodeBase64(encoded, att->data, att->length, 1);
 
                        serv_printf("--%s", boundary);
                        serv_printf("Content-type: %s", att->content_type);
@@ -2819,7 +2847,7 @@ void display_enter(void)
        wprintf("</div>\n");
        wprintf("<div id=\"content\">\n"
                "<div class=\"fix_scrollbar_bug\">"
-               "<table width=100%% border=0 bgcolor=\"#ffffff\"><tr><td>");
+               "<table class=\"messages_background\"><tr><td>");
 
        /** Now check our actual recipients if there are any */
        if (recipient_required) {