2005-02-14 [colin] 1.0.1cvs6
authorColin Leroy <colin@colino.net>
Mon, 14 Feb 2005 20:03:49 +0000 (20:03 +0000)
committerColin Leroy <colin@colino.net>
Mon, 14 Feb 2005 20:03:49 +0000 (20:03 +0000)
* src/compose.c
* src/procmime.c
Use quoted-printable instead of 7bit or 8bit
to encode "^From " and avoid mail corruption
on the MTA, as specified by RFC 3156. Thanks
Hoa for the hint.

ChangeLog.claws
PATCHSETS
configure.ac
src/compose.c
src/procmime.c

index 44c5926..073a6eb 100644 (file)
@@ -1,3 +1,12 @@
+2005-02-14 [colin]     1.0.1cvs6
+
+       * src/compose.c
+       * src/procmime.c
+               Use quoted-printable instead of 7bit or 8bit
+               to encode "^From " and avoid mail corruption 
+               on the MTA, as specified by RFC 3156. Thanks
+               Hoa for the hint.
+
 2005-02-12 [colin]     1.0.1cvs5
 
        * src/filtering.c
index 08d5007..bc3f5c4 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 
 ( cvs diff -u -r 1.473 -r 1.474 src/compose.c; ) > 1.0.1cvs4.patchset
 ( cvs diff -u -r 1.71 -r 1.72 src/filtering.c; ) > 1.0.1cvs5.patchset
+( cvs diff -u -r 1.474 -r 1.475 src/compose.c; cvs diff -u -r 1.103 -r 1.104 src/procmime.c; ) > 1.0.1cvs6.patchset
index 1914a67..e2326f2 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=0
 MICRO_VERSION=1
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=5
+EXTRA_VERSION=6
 EXTRA_RELEASE=
 
 if test \( $EXTRA_VERSION -eq 0 \) -o \( "x$EXTRA_RELEASE" != "x" \); then
index b4d0ae1..4c7a3cf 100644 (file)
@@ -3427,6 +3427,7 @@ static gint compose_write_to_file(Compose *compose, FILE *fp, gint action)
 
                if (action == COMPOSE_WRITE_FOR_SEND) {
                        buf = conv_codeset_strdup(chars, src_codeset, out_codeset);
+                       
                        if (!buf) {
                                AlertValue aval;
                                gchar *msg;
@@ -3455,6 +3456,13 @@ static gint compose_write_to_file(Compose *compose, FILE *fp, gint action)
        }
        g_free(chars);
 
+       if (encoding == ENC_8BIT || encoding == ENC_7BIT) {
+               if (!strncmp(buf, "From ", strlen("From ")) ||
+                   strstr(buf, "\nFrom ") != NULL) {
+                       encoding = ENC_QUOTED_PRINTABLE;
+               }
+       }
+
        mimetext = procmime_mimeinfo_new();
        mimetext->content = MIMECONTENT_MEM;
        mimetext->data.mem = buf;
index 64910e1..0ed8a07 100644 (file)
@@ -480,7 +480,16 @@ gboolean procmime_encode_content(MimeInfo *mimeinfo, EncodingType encoding)
 
                while (fgets(inbuf, sizeof(inbuf), infp) != NULL) {
                        qp_encode_line(outbuf, inbuf);
-                       fputs(outbuf, outfp);
+
+                       if (!strncmp("From ", outbuf, strlen("From "))) {
+                               gchar *tmpbuf = outbuf;
+                               
+                               tmpbuf += strlen("From ");
+                               
+                               fputs("=46rom ", outfp);
+                               fputs(tmpbuf, outfp);
+                       } else 
+                               fputs(outbuf, outfp);
                }
        } else {
                gchar buf[BUFFSIZE];