2005-08-19 [colin] 1.9.13cvs42
authorColin Leroy <colin@colino.net>
Fri, 19 Aug 2005 17:55:50 +0000 (17:55 +0000)
committerColin Leroy <colin@colino.net>
Fri, 19 Aug 2005 17:55:50 +0000 (17:55 +0000)
* src/compose.c
* src/procmime.c
Workaround for broken MUAs: encode
Content-type: name: as ASCII and
Content-Disposition: filename: as
per rfc2231
* src/prefs_account.c
Fix invisible-ness of SMTP SSL prefs
in NNTP accounts

ChangeLog-gtk2.claws
PATCHSETS
configure.ac
src/compose.c
src/prefs_account.c
src/procmime.c

index 988f1e9160b46e7dcfdb1f816fbdd1141bda1ff9..7f971324b3852758ba5a893343032439ef1fdcf0 100644 (file)
@@ -1,3 +1,15 @@
+2005-08-19 [colin]     1.9.13cvs42
+
+       * src/compose.c
+       * src/procmime.c
+               Workaround for broken MUAs: encode 
+               Content-type: name: as ASCII and 
+               Content-Disposition: filename: as
+               per rfc2231
+       * src/prefs_account.c
+               Fix invisible-ness of SMTP SSL prefs
+               in NNTP accounts
+
 2005-08-19 [paul]      1.9.13cvs41
 
        * src/compose.c
index 73c62430e287f732c4db5677d0876b39e960b547..a3b0ff0406909fa89871f0fa8058c1f93391cfaf 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.654.2.765 -r 1.654.2.766 configure.ac;  cvs diff -u -r 1.14.2.8 -r 1.14.2.9 src/editaddress.c;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/gedit-print.c;  cvs diff -u -r 1.6.10.3 -r 1.6.10.4 src/mutt.c;  cvs diff -u -r 1.1.4.3 -r 1.1.4.4 src/etpan/etpan-log.c;  cvs diff -u -r 1.1.4.15 -r 1.1.4.16 src/etpan/imap-thread.c;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/gtk/gtksourceprintjob.c;  ) > 1.9.13cvs39.patchset
 ( cvs diff -u -r 1.204.2.51 -r 1.204.2.52 src/prefs_common.c;  cvs diff -u -r 1.103.2.24 -r 1.103.2.25 src/prefs_common.h;  cvs diff -u -r 1.22.2.11 -r 1.22.2.12 src/quote_fmt_parse.y;  cvs diff -u -r 1.395.2.114 -r 1.395.2.115 src/summaryview.c;  cvs diff -u -r 1.13.2.7 -r 1.13.2.8 src/plugins/clamav/clamav_plugin.c;  cvs diff -u -r 1.12.2.4 -r 1.12.2.5 src/plugins/dillo_viewer/dillo_viewer.c;  cvs diff -u -r 1.9.2.3 -r 1.9.2.4 src/plugins/mathml_viewer/mathml_viewer.c;  cvs diff -u -r 1.1.2.4 -r 1.1.2.5 src/plugins/pgpcore/sgpgme.c;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpinline/pgpinline.c;  cvs diff -u -r 1.1.2.21 -r 1.1.2.22 src/plugins/pgpmime/pgpmime.c;  ) > 1.9.13cvs40.patchset
 ( cvs diff -u -r 1.382.2.152 -r 1.382.2.153 src/compose.c;  cvs diff -u -r 1.204.2.52 -r 1.204.2.53 src/prefs_common.c;  cvs diff -u -r 1.103.2.25 -r 1.103.2.26 src/prefs_common.h;  cvs diff -u -r 1.1.2.6 -r 1.1.2.7 src/prefs_wrapping.c;  ) > 1.9.13cvs41.patchset
+( cvs diff -u -r 1.382.2.153 -r 1.382.2.154 src/compose.c;  cvs diff -u -r 1.49.2.54 -r 1.49.2.55 src/procmime.c;  cvs diff -u -r 1.105.2.31 -r 1.105.2.32 src/prefs_account.c;  ) > 1.9.13cvs42.patchset
index 8a7708a68e7d9099959f7704327b8cf3c8e68cc9..e25d6ea90f425a2f5cb4af176d5143b1036ae81f 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=9
 MICRO_VERSION=13
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=41
+EXTRA_VERSION=42
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
index eb69c00b7e6eea477bcabdc4d5334574fd390445..b784869dc9d51248c764ddd5c6f9a691e0ec56ae 100644 (file)
@@ -2603,7 +2603,9 @@ static void compose_attach_parts(Compose *compose, MsgInfo *msginfo)
                        gchar *content_type;
 
                        content_type = procmime_get_content_type_str(child->type, child->subtype);
-                       partname = procmime_mimeinfo_get_parameter(child, "name");
+                       partname = procmime_mimeinfo_get_parameter(child, "filename");
+                       if (partname == NULL)
+                               partname = procmime_mimeinfo_get_parameter(child, "name");
                        if (partname == NULL)
                                partname = "";
                        compose_attach_append(compose, outfile, 
index 139a8d766977a1bd2f71c51f7134c9bc884e0f45..6ddf366d579a59870b9d2f122ec7fc0d2b4db66d 100644 (file)
@@ -2749,7 +2749,7 @@ static void prefs_account_protocol_activated(GtkMenuItem *menuitem)
                gtk_widget_hide(ssl.pop_frame);
                gtk_widget_hide(ssl.imap_frame);
                gtk_widget_show(ssl.nntp_frame);
-               gtk_widget_hide(ssl.send_frame);
+               gtk_widget_show(ssl.send_frame);
 #endif
                gtk_widget_hide(advanced.popport_hbox);
                gtk_widget_hide(advanced.imapport_hbox);
index 9a98522795f47668d84e0e05ee47f3f9765455fc..4f7e38452c70ebaa11913d84c7a75defee189768 100644 (file)
@@ -1846,24 +1846,26 @@ typedef enum {
     ENC_AS_TOKEN,
     ENC_AS_QUOTED_STRING,
     ENC_AS_EXTENDED,
+    ENC_TO_ASCII,
 } EncodeAs;
 
 typedef struct _ParametersData {
        FILE *fp;
        guint len;
+       guint ascii_only;
 } ParametersData;
 
 static void write_parameters(gpointer key, gpointer value, gpointer user_data)
 {
        gchar *param = key;
-       gchar *val = value, *valpos;
+       gchar *val = value, *valpos, *tmp;
        ParametersData *pdata = (ParametersData *)user_data;
        GString *buf = g_string_new("");
 
        EncodeAs encas = ENC_AS_TOKEN;
 
        for (valpos = val; *valpos != 0; valpos++) {
-               if (!IS_ASCII(*valpos)) {
+               if (!IS_ASCII(*valpos) || *valpos == '"') {
                        encas = ENC_AS_EXTENDED;
                        break;
                }
@@ -1886,7 +1888,7 @@ static void write_parameters(gpointer key, gpointer value, gpointer user_data)
                case ';':
                case ':':
                case '\\':
-               case '"':
+               case '\'':
                case '/':
                case '[':
                case ']':
@@ -1896,12 +1898,26 @@ static void write_parameters(gpointer key, gpointer value, gpointer user_data)
                        continue;
                }
        }
+       
+       if (encas == ENC_AS_EXTENDED && pdata->ascii_only == TRUE) 
+               encas = ENC_TO_ASCII;
 
        switch (encas) {
        case ENC_AS_TOKEN:
                g_string_append_printf(buf, "%s=%s", param, val);
                break;
 
+       case ENC_TO_ASCII:
+               tmp = g_strdup(val);
+               g_strcanon(tmp, 
+                       " ()<>@,';:\\/[]?=.0123456789"
+                       "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+                       "abcdefghijklmnopqrstuvwxyz",
+                       '_');
+               g_string_append_printf(buf, "%s=\"%s\"", param, tmp);
+               g_free(tmp);
+               break;
+
        case ENC_AS_QUOTED_STRING:
                g_string_append_printf(buf, "%s=\"%s\"", param, val);
                break;
@@ -1922,7 +1938,7 @@ static void write_parameters(gpointer key, gpointer value, gpointer user_data)
                                g_string_append_printf(buf, "%%%s", hexstr);
                        }
                }
-               break;
+               break;          
        }
        
        if (buf->str && strlen(buf->str)) {
@@ -1944,6 +1960,7 @@ void procmime_write_mime_header(MimeInfo *mimeinfo, FILE *fp)
        debug_print("procmime_write_mime_header\n");
        
        pdata->fp = fp;
+       pdata->ascii_only = FALSE;
 
        for (type_table = mime_type_table; type_table->str != NULL; type_table++)
                if (mimeinfo->type == type_table->type) {
@@ -1951,6 +1968,7 @@ void procmime_write_mime_header(MimeInfo *mimeinfo, FILE *fp)
                                "Content-Type: %s/%s", type_table->str, mimeinfo->subtype);
                        fprintf(fp, "%s", buf);
                        pdata->len = strlen(buf);
+                       pdata->ascii_only = TRUE;
                        g_free(buf);
                        break;
                }
@@ -1983,6 +2001,8 @@ void procmime_write_mime_header(MimeInfo *mimeinfo, FILE *fp)
                g_free(buf);
 
                pdata->fp = fp;
+               pdata->ascii_only = FALSE;
+
                g_hash_table_foreach(mimeinfo->dispositionparameters, write_parameters, pdata);
                g_free(pdata);
                fprintf(fp, "\n");