+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]
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
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;
}
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,
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);
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,
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));
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);
{
MimeInfo *mimeinfo = (MimeInfo *) node->data;
- g_free(mimeinfo->encoding);
- g_free(mimeinfo->name);
if(mimeinfo->tmpfile)
unlink(mimeinfo->filename);
g_free(mimeinfo->filename);
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);
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);
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) {
struct _MimeInfo
{
- gchar *encoding;
-
- gchar *name;
-
/* Internal data */
gchar *filename;
gboolean tmpfile;