FILE *fp;
fp = g_fopen(partinfo->data.filename, "rb");
- fseek(fp, partinfo->offset, SEEK_SET);
- headers = procheader_get_header_array_asis(fp);
- if (headers) {
- gint i;
- for (i = 0; i < headers->len; i++) {
- Header *header = g_ptr_array_index(headers, i);
- if (procheader_headername_equal(header->name, "Subject")) {
- unfold_line(header->body);
- name = g_strconcat(header->body, ".txt", NULL);
- subst_for_filename(name);
+ if (fp != NULL && fseek(fp, partinfo->offset, SEEK_SET) == 0) {
+ headers = procheader_get_header_array_asis(fp);
+ if (headers) {
+ gint i;
+ for (i = 0; i < headers->len; i++) {
+ Header *header = g_ptr_array_index(headers, i);
+ if (procheader_headername_equal(header->name, "Subject")) {
+ unfold_line(header->body);
+ name = g_strconcat(header->body, ".txt", NULL);
+ subst_for_filename(name);
+ }
}
+ procheader_header_array_destroy(headers);
}
- procheader_header_array_destroy(headers);
+ fclose(fp);
}
- fclose(fp);
if (name)
filename = g_path_get_basename(name);
g_free(name);
to_human_readable((goffset)mimeinfo->length), NULL);
g_free(content_type);
if (desc && *desc) {
- gchar *tmp = NULL;
+ gchar *tmp = NULL, *escaped = NULL;
if (!g_utf8_validate(desc, -1, NULL)) {
tmp = conv_filename_to_utf8(desc);
} else {
tmp = g_strdup(desc);
}
+ escaped = g_markup_escape_text(tmp,-1);
+
tiptmp = g_strconcat(tip, "\n<b>",
prefs_common.attach_desc && mimeinfo->description ?
_("Description:") : _("Filename:"),
- " </b>", g_markup_escape_text(tmp,-1), NULL);
+ " </b>", escaped, NULL);
g_free(tip);
tip = tiptmp;
g_free(tmp);
+ g_free(escaped);
}
if (sigshort && *sigshort) {
tiptmp = g_strjoin("\n", tip, g_markup_escape_text(sigshort, -1), NULL);
gtk_widget_set_size_request(mimeview->icon_mainbox,
size.width, -1);
}
+ if (mimeview->opened)
+ icon_list_toggle_by_mime_info(mimeview,
+ mimeview_get_node_part(mimeview, mimeview->opened));
}
static void icon_list_toggle_by_mime_info (MimeView *mimeview,
MimeInfo *mimeinfo)
{
- GList *child;
+ GList *children, *child;
- child = gtk_container_get_children(GTK_CONTAINER(mimeview->icon_vbox));
- for (; child != NULL; child = g_list_next(child)) {
+ children = gtk_container_get_children(GTK_CONTAINER(mimeview->icon_vbox));
+ for (child = children; child != NULL; child = g_list_next(child)) {
+ gboolean *highlight = NULL;
+ GtkWidget *icon = gtk_bin_get_child(GTK_BIN(child->data));
+
if (!GTK_IS_EVENT_BOX(child->data))
continue;
- if(g_object_get_data(G_OBJECT(child->data),
- "partinfo") == (gpointer)mimeinfo) {
- gboolean *highlight = NULL;
- GtkWidget *icon = gtk_bin_get_child(GTK_BIN(child->data));
- highlight = g_object_get_data(G_OBJECT(icon), "highlight");
- *highlight = TRUE;
- gtk_widget_queue_draw(icon);
- } else {
- gint *highlight = NULL;
- GtkWidget *icon = gtk_bin_get_child(GTK_BIN(child->data));
- highlight = g_object_get_data(G_OBJECT(icon), "highlight");
- *highlight = FALSE;
- gtk_widget_queue_draw(icon);
- }
+
+ highlight = g_object_get_data(G_OBJECT(icon), "highlight");
+ *highlight = (g_object_get_data(G_OBJECT(child->data),
+ "partinfo") == (gpointer)mimeinfo);
+
+ gtk_widget_queue_draw(icon);
}
+ g_list_free(children);
}
static void ctree_size_allocate_cb(GtkWidget *widget, GtkAllocation *allocation,
return TRUE;
}
-void mimeview_update (MimeView *mimeview) {
+void mimeview_update (MimeView *mimeview)
+{
if (mimeview && mimeview->mimeinfo) {
icon_list_clear(mimeview);
icon_list_create(mimeview, mimeview->mimeinfo);