]> code.citadel.org Git - citadel.git/blobdiff - webcit/serv_func.c
WebCit now detects whether the Citadel server has Sieve support
[citadel.git] / webcit / serv_func.c
index 248a788761b1bb5e95837f0d072e1c49b0145222..589bc6540bb53086d733541752d471a025ed5b47 100644 (file)
@@ -89,6 +89,12 @@ void get_serv_info(char *browser_host, char *user_agent)
                case 15:
                        serv_info.serv_newuser_disabled = atoi(buf);
                        break;
+               case 16:
+                       safestrncpy(serv_info.serv_default_cal_zone, buf, sizeof serv_info.serv_default_cal_zone);
+                       break;
+               case 19:
+                       serv_info.serv_supports_sieve = atoi(buf);
+                       break;
                }
                ++a;
        }
@@ -195,7 +201,7 @@ void pullquote_fmout(void) {
 void text_to_server(char *ptr)
 {
        char buf[256];
-       int ch, a, pos;
+       int ch, a, pos, len;
 
        pos = 0;
        buf[0] = 0;
@@ -203,9 +209,11 @@ void text_to_server(char *ptr)
        while (ptr[pos] != 0) {
                ch = ptr[pos++];
                if (ch == 10) {
-                       while ( (isspace(buf[strlen(buf) - 1]))
-                         && (strlen(buf) > 1) )
-                               buf[strlen(buf) - 1] = 0;
+                       len = strlen(buf);
+                       while ( (isspace(buf[len - 1]))
+                               && (buf[0] !=  '\0') 
+                               && (buf[1] !=  '\0') )
+                               buf[--len] = 0;
                        serv_puts(buf);
                        buf[0] = 0;
                        if (ptr[pos] != 0) strcat(buf, " ");
@@ -254,12 +262,12 @@ void text_to_server_qp(char *ptr)
                        /* hard line break */
                        if (output_len > 0) {
                                if (isspace(buf[output_len-1])) {
-                                       sprintf(&buf[output_len-1], "=%02X", buf[output_len-1]);
+                                       sprintf((char *)&buf[output_len-1], "=%02X", buf[output_len-1]);
                                        output_len += 2;
                                }
                        }
                        buf[output_len++] = 0;
-                       serv_puts(buf);
+                       serv_puts((char *)buf);
                        output_len = 0;
                }
                else if (ch == 9) {
@@ -272,19 +280,19 @@ void text_to_server_qp(char *ptr)
                        buf[output_len++] = ch;
                }
                else {
-                       sprintf(&buf[output_len], "=%02X", ch);
+                       sprintf((char *)&buf[output_len], "=%02X", ch);
                        output_len += 3;
                }
                
                if (output_len > 72) {
                        /* soft line break */
                        if (isspace(buf[output_len-1])) {
-                               sprintf(&buf[output_len-1], "=%02X", buf[output_len-1]);
+                               sprintf((char *)&buf[output_len-1], "=%02X", buf[output_len-1]);
                                output_len += 2;
                        }
                        buf[output_len++] = '=';
                        buf[output_len++] = 0;
-                       serv_puts(buf);
+                       serv_puts((char *)buf);
                        output_len = 0;
                }
        }
@@ -292,11 +300,11 @@ void text_to_server_qp(char *ptr)
        /* end of data - transmit anything that's left */
        if (output_len > 0) {
                if (isspace(buf[output_len-1])) {
-                       sprintf(&buf[output_len-1], "=%02X", buf[output_len-1]);
+                       sprintf((char *)&buf[output_len-1], "=%02X", buf[output_len-1]);
                        output_len += 2;
                }
                buf[output_len++] = 0;
-               serv_puts(buf);
+               serv_puts((char *)buf);
                output_len = 0;
        }
 }