* fixed some hickups in the urlencode function.
authorWilfried Göesgens <willi@citadel.org>
Sat, 5 Apr 2008 18:23:11 +0000 (18:23 +0000)
committerWilfried Göesgens <willi@citadel.org>
Sat, 5 Apr 2008 18:23:11 +0000 (18:23 +0000)
webcit/messages.c
webcit/webcit.c

index 7afaa1641eb33fd0c46b4063eacc38c6db74f6ac..4178a91a018006d30e932fd6401d293925c2fdc2 100644 (file)
@@ -300,14 +300,15 @@ int webcit_rfc2047encode(char *target, int maxlen, char *source, long SourceLen)
 
        if (!need_to_encode) {
                memcpy (target, source, SourceLen);
+               target[SourceLen] = '\0';
                return SourceLen;
        }
        
        if (sizeof (headerStr + SourceLen + 2) > maxlen)
                return -1;
        memcpy (target, headerStr, sizeof (headerStr));
-       len = sizeof (headerStr);
-       for (i=0; (i < SourceLen) && (len < maxlen) ; ++i) {
+       len = sizeof (headerStr) - 1;
+       for (i=0; (i < SourceLen) && (len + 3< maxlen) ; ++i) {
                ch = (unsigned char) source[i];
                if ((ch < 32) || (ch > 126) || (ch == 61)) {
                        sprintf(&target[len], "=%02X", ch);
@@ -1677,7 +1678,7 @@ void pullquote_message(long msgnum, int forward_attachments, int include_headers
                        strcat(buf, "\n");
                        msgescputs(buf);
                }
-       }
+       }//// TODO: charset? utf8?
 
        /** Unknown weirdness ... don't know how to handle this content type */
        else {
@@ -3109,15 +3110,17 @@ void post_message(void)
                } 
                lprintf(9, "Converted: %s\n", references);
 
-               if (GetHash(WCC->urlstrings, HKEY("subject"), &U)) {
-                       u = (urlcontent*) U;
+               if (havebstr("subject")) {
+                       char *Subj;
+                       size_t SLen;
                        /*
                         * make enough room for the encoded string; 
                         * plus the QP header 
                         */
-                       len = u->url_data_size * 3 + 32;
+                       Subj = xbstr("subject", &SLen);
+                       len = SLen * 3 + 32;
                        encoded_subject = malloc (len);
-                       len = webcit_rfc2047encode(encoded_subject, len, u->url_data, u->url_data_size);
+                       len = webcit_rfc2047encode(encoded_subject, len, Subj, SLen);
                        if (len < 0) {
                                free (encoded_subject);
                                return;
index dd6955d68ee834eb9a0119a41a19e13918f962a6..120d3169d2dec1b176915651501a34387a0aac5c 100644 (file)
@@ -1152,7 +1152,7 @@ void upload_handler(char *name, char *filename, char *partnum, char *disp,
                u->url_data[length] = 0;
                Put(WC->urlstrings, u->url_key, strlen(u->url_key), u, free_url);
 
-               /* lprintf(9, "Key: <%s>  Data: <%s>\n", u->url_key, u->url_data); */
+/*             lprintf(9, "Key: <%s> len: [%ld] Data: <%s>\n", u->url_key, u->url_data_size, u->url_data);*/
        }
 
        /** Uploaded files */