0.9.7claws7
authorChristoph Hohmann <reboot@gmx.ch>
Sat, 29 Nov 2003 13:33:45 +0000 (13:33 +0000)
committerChristoph Hohmann <reboot@gmx.ch>
Sat, 29 Nov 2003 13:33:45 +0000 (13:33 +0000)
* src/procmime.[ch]
* src/mimeview.c
        o unknown disposition types should be handled as
          attachment (RFC2183)
        o missing headers should not default to inline
          (would make "Save All" useless when disposition header
           is not set by the sending mailer)
        o remove old MimeInfo data and cleanup

ChangeLog.claws
configure.ac
src/mimeview.c
src/procmime.c
src/procmime.h

index b395acaec99bb7b9ad4f613a3a57970c7cd72cab..d29adfc119d3f8ea8272f356be64ef8a338adbda 100644 (file)
@@ -1,3 +1,14 @@
+2003-11-29 [christoph] 0.9.7claws7
+
+       * src/procmime.[ch]
+       * src/mimeview.c
+               o unknown disposition types should be handled as
+                 attachment (RFC2183)
+               o missing headers should not default to inline
+                 (would make "Save All" useless when disposition header
+                  is not set by the sending mailer)
+               o remove old MimeInfo data and cleanup
+
 2003-11-29 [luke]      0.9.7claws6
 
         * src/procmime.[ch]
index 1c075d10f8cafb17c03ccca03d6aa597ecb4656c..81b75dea0c21d87b5f9e897ec294e5ffeee69dd7 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=9
 MICRO_VERSION=7
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=6
+EXTRA_VERSION=7
 if test $EXTRA_VERSION -eq 0; then
     VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}claws
 else
index ab6c89fea1da8423688d880bc6f987b7c56df9e6..4d1f3d008c0e70a255ea9afd990bacd3083c9634 100644 (file)
@@ -399,11 +399,10 @@ static const gchar *get_part_name(MimeInfo *partinfo)
        const gchar *name;
 
        name = procmime_mimeinfo_get_parameter(partinfo, "filename");
-       if (name == NULL) {
+       if (name == NULL)
                name = procmime_mimeinfo_get_parameter(partinfo, "name");
-               if (name == NULL)
-                       name = "";
-       }
+       if (name == NULL)
+               name = "";
 
        return name;
 }
@@ -434,9 +433,9 @@ static GtkCTreeNode *mimeview_append_part(MimeView *mimeview,
        str[COL_MIMETYPE] = content_type;
        str[COL_SIZE] = to_human_readable(partinfo->length);
        if (prefs_common.attach_desc)
-               str[COL_NAME] = get_part_description(partinfo);
+               str[COL_NAME] = (gchar *) get_part_description(partinfo);
        else
-               str[COL_NAME] = get_part_name(partinfo);
+               str[COL_NAME] = (gchar *) get_part_name(partinfo);
 
        node = gtk_ctree_insert_node(ctree, parent, NULL, str, 0,
                                     NULL, NULL, NULL, NULL,
@@ -762,7 +761,7 @@ static void mimeview_start_drag(GtkWidget *widget, gint button,
        g_return_if_fail(mimeview != NULL);
 
        partinfo = mimeview_get_selected_part(mimeview);
-       if (partinfo->filename == NULL && partinfo->name == NULL) return;
+       if (partinfo->disposition == DISPOSITIONTYPE_INLINE) return;
 
        context = gtk_drag_begin(widget, mimeview->target_list,
                                 GDK_ACTION_COPY, button, event);
@@ -933,10 +932,8 @@ static void mimeview_drag_data_get(GtkWidget           *widget,
 
        partinfo = mimeview_get_selected_part(mimeview);
        if (!partinfo) return;
-       if (!partinfo->filename && !partinfo->name) return;
 
-       filename = partinfo->filename ? partinfo->filename : partinfo->name;
-       filename = g_basename(filename);
+       filename = g_basename(get_part_name(partinfo));
        if (*filename == '\0') return;
 
        filename = g_strconcat(get_mime_tmp_dir(), G_DIR_SEPARATOR_S,
@@ -993,7 +990,7 @@ static void mimeview_save_all(MimeView *mimeview)
        while (attachment != NULL) {
                if (attachment->type != MIMETYPE_MESSAGE &&
                    attachment->type != MIMETYPE_MULTIPART &&
-                   attachment->disposition == DISPOSITIONTYPE_ATTACHMENT) {
+                   attachment->disposition != DISPOSITIONTYPE_INLINE) {
                        static guint subst_cnt = 1;
                        gchar *attachdir;
                        gchar *attachname = g_strdup(get_part_name(attachment));
index 59224d3a1ae4f41d471778f3c233784b78f3a696..c2814d699b0e1de84401a2bce76b7bc7b6f923de 100644 (file)
@@ -56,6 +56,7 @@ MimeInfo *procmime_mimeinfo_new(void)
        mimeinfo = g_new0(MimeInfo, 1);
        mimeinfo->type          = MIMETYPE_UNKNOWN;
        mimeinfo->encoding_type = ENC_UNKNOWN;
+       mimeinfo->disposition   = DISPOSITIONTYPE_UNKNOWN;
 
        mimeinfo->parameters = g_hash_table_new(g_str_hash, g_str_equal);
        mimeinfo->node       = g_node_new(mimeinfo);
@@ -75,8 +76,6 @@ static gboolean free_func(GNode *node, gpointer data)
 {
        MimeInfo *mimeinfo = (MimeInfo *) node->data;
 
-       g_free(mimeinfo->encoding);
-       g_free(mimeinfo->name);
        if(mimeinfo->tmpfile)
                unlink(mimeinfo->filename);
        g_free(mimeinfo->filename);
@@ -677,8 +676,14 @@ gchar *procmime_get_tmp_file_name(MimeInfo *mimeinfo)
        if ((mimeinfo->type == MIMETYPE_TEXT) && !g_strcasecmp(mimeinfo->subtype, "html"))
                base = "mimetmp.html";
        else {
-               base = mimeinfo->name ? mimeinfo->name : "mimetmp";
-               base = g_basename(base);
+               const gchar *basetmp;
+
+               basetmp = procmime_mimeinfo_get_parameter(mimeinfo, "filename");
+               if (basetmp == NULL)
+                       basetmp = procmime_mimeinfo_get_parameter(mimeinfo, "name");
+               if (basetmp == NULL)
+                       basetmp = "mimetmp";
+               base = g_basename(basetmp);
                if (*base == '\0') base = "mimetmp";
                Xstrdup_a(base, base, return NULL);
                subst_for_filename(base);
@@ -1139,7 +1144,7 @@ static void procmime_parse_content_disposition(const gchar *content_disposition,
        else if (!g_strcasecmp(str, "attachment"))
                mimeinfo->disposition = DISPOSITIONTYPE_ATTACHMENT;
        else
-               mimeinfo->disposition = DISPOSITIONTYPE_UNKNOWN;
+               mimeinfo->disposition = DISPOSITIONTYPE_ATTACHMENT;
        
        add_to_mimeinfo_parameters(&content_disp_parts[1], mimeinfo);
        g_strfreev(content_disp_parts);
@@ -1207,7 +1212,7 @@ void procmime_parse_mimepart(MimeInfo *parent,
        if (content_disposition != NULL) 
                procmime_parse_content_disposition(content_disposition, mimeinfo);
        else
-               mimeinfo->disposition = DISPOSITIONTYPE_INLINE;
+               mimeinfo->disposition = DISPOSITIONTYPE_UNKNOWN;
 
        /* Call parser for mime type */
        switch (mimeinfo->type) {
index cd309511dceb171376bae72c9781e3f8692d39b9..c9e97f468fbc8aeb8c25f9427e01efdc87546b04 100644 (file)
@@ -97,10 +97,6 @@ struct _MimeType
 
 struct _MimeInfo
 {
-       gchar *encoding;
-
-       gchar *name;
-
        /* Internal data */
        gchar *filename;
        gboolean tmpfile;