2004-11-01 [christoph] 0.9.12cvs137
authorChristoph Hohmann <reboot@gmx.ch>
Mon, 1 Nov 2004 13:43:25 +0000 (13:43 +0000)
committerChristoph Hohmann <reboot@gmx.ch>
Mon, 1 Nov 2004 13:43:25 +0000 (13:43 +0000)
* src/procmime.c
implement RFC2231's parameter encoding

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

index 1da7eb4f173f1cc21e9e4f757f75f2b611300843..f472a5e3b55755bc9708d2d224fb5247cf0b092a 100644 (file)
@@ -1,3 +1,8 @@
+2004-11-01 [christoph] 0.9.12cvs137
+
+       * src/procmime.c
+               implement RFC2231's parameter encoding
+
 2004-10-29 [colin]     0.9.12cvs136
 
        * src/common/utils.c
index 828953606295feaac2afd7c2f3319a215b9e2877..f7dc76c58cbbeb21f9f9cabe9059454e5027ffcc 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.147 -r 1.148 src/main.c; cvs diff -u -r 1.87 -r 1.88 src/procmime.c; cvs diff -u -r 1.7 -r 1.8 src/plugins/pgpmime/pgpmime.c; ) > 0.9.12cvs134.patchset
 ( cvs diff -u -r 0 -r 1 doc/src/rfc2231.txt; cvs diff -u -r 1.88 -r 1.89 src/procmime.c; cvs diff -u -r 1.4 -r 1.5 src/common/quoted-printable.c; cvs diff -u -r 1.55 -r 1.56 src/common/utils.c; cvs diff -u -r 1.32 -r 1.33 src/common/utils.h; ) > 0.9.12cvs135.patchset
 ( cvs diff -u -r 1.56 -r 1.57 src/common/utils.c; ) > 0.9.12cvs136.patchset
+( cvs diff -u -r 1.89 -r 1.90 src/procmime.c; ) > 0.9.12cvs137.patchset
index ec53337df1df24244b3a9e3919bd2062fe5723e8..d2b051dfe742cc49bead69716fba811f85451adb 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=9
 MICRO_VERSION=12
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=136
+EXTRA_VERSION=137
 EXTRA_RELEASE=
 
 if test \( $EXTRA_VERSION -eq 0 \) -o \( "x$EXTRA_RELEASE" != "x" \); then
index e04e8440cbd0559f97fd0a32da2872e292a54091..18f057ad3cda7cc30f9e2f2e884926e4254870ea 100644 (file)
@@ -1633,8 +1633,6 @@ static void write_parameters(gpointer key, gpointer value, gpointer user_data)
        FILE *fp = user_data;
        EncodeAs encas = ENC_AS_TOKEN;
 
-       fprintf(fp, "; %s=", param);
-
        for (valpos = val; *valpos != 0; valpos++) {
                if (!IS_ASCII(*valpos)) {
                        encas = ENC_AS_EXTENDED;
@@ -1672,16 +1670,27 @@ static void write_parameters(gpointer key, gpointer value, gpointer user_data)
 
        switch (encas) {
        case ENC_AS_TOKEN:
+               fprintf(fp, "; %s=", param);
                fprintf(fp, "%s", val);
                break;
 
        case ENC_AS_QUOTED_STRING:
+               fprintf(fp, "; %s=", param);
                fprintf(fp, "\"%s\"", val);
                break;
 
        case ENC_AS_EXTENDED:
-               /* FIXME: not yet handled */
-               fprintf(fp, "%s", val);
+               fprintf(fp, "; %s*=", param);
+               fprintf(fp, "%s''", conv_get_current_charset_str());
+               for (valpos = val; *valpos != '\0'; valpos++) {
+                       if (IS_ASCII(*valpos) && isalnum(*valpos))
+                               fprintf(fp, "%c", *valpos);
+                       else {
+                               gchar hexstr[3] = "XX";
+                               get_hex_str(hexstr, *valpos);
+                               fprintf(fp, "%%%s", hexstr);
+                       }
+               }
                break;
        }
 }