commit eef80ebe430c6b4f835f0068c03002b2d44e627d from: Oliver Lowe date: Mon Dec 29 01:39:37 2025 UTC delete... stuff? Can't remember lol commit - 6216b7e249699bea8074e11fefdb9884a9762ba8 commit + eef80ebe430c6b4f835f0068c03002b2d44e627d blob - d8f345024fd7f2814423fcd6e417be849fda3c47 blob + acba62c760d7d0f74cd712e6f936f948862e9cd0 --- src/messageview.c +++ src/messageview.c @@ -993,9 +993,6 @@ gint messageview_show(MessageView *messageview, MsgInf mimeview_select_mimepart_icon(messageview->mimeview, root); done: messageview_set_menu_sensitive(messageview); - /* plugins may hook in here to work with the message view */ - hooks_invoke(MESSAGE_VIEW_SHOW_DONE_HOOKLIST, messageview); - g_free(file); return 0; blob - 4d5b226ff3349bdc13f52ac334475a0c41f04635 blob + 2ff07965593c99af0ff754d6f64ffd38d960e958 --- src/messageview.h +++ src/messageview.h @@ -28,8 +28,6 @@ #include "procmime.h" #include "toolbar.h" -#define MESSAGE_VIEW_SHOW_DONE_HOOKLIST "message_view_show_done_hooklist" - struct _MessageView { GtkWidget *vbox; @@ -84,7 +82,7 @@ typedef struct _MimeInfoSearch MimeInfoSearch; MessageView *messageview_create (MainWindow *mainwin); MessageView *messageview_create_with_new_window (MainWindow *mainwin); -void messageview_init (MessageView *messageview); +void messageview_init(MessageView *messageview); gint messageview_show (MessageView *messageview, MsgInfo *msginfo, gboolean all_headers); blob - bb8a4f7520a1328a62843150357ab6ac44bd66a5 blob + 62b45e079317a09f437b0a56a3b533f22f09ac82 --- src/mimeview.c +++ src/mimeview.c @@ -76,13 +76,6 @@ static gint mimeview_button_pressed (GtkWidget *widget GdkEventButton *event, MimeView *mimeview); -static void mimeview_drag_data_get (GtkWidget *widget, - GdkDragContext *drag_context, - GtkSelectionData *selection_data, - guint info, - guint time, - MimeView *mimeview); - static gboolean mimeview_scrolled (GtkWidget *widget, GdkEventScroll *event, MimeView *mimeview); @@ -251,7 +244,6 @@ MimeView *mimeview_create(MainWindow *mainwin) gchar *titles[N_MIMEVIEW_COLS]; gint cols; - debug_print("Creating MIME view...\n"); mimeview = g_new0(MimeView, 1); titles[COL_MIMETYPE] = _("MIME Type"); @@ -302,15 +294,11 @@ MimeView *mimeview_create(MainWindow *mainwin) gtk_widget_show(ctree); gtk_container_add(GTK_CONTAINER(scrolledwin), ctree); - gtk_drag_source_set(ctree, GDK_BUTTON1_MASK|GDK_BUTTON3_MASK, - mimeview_mime_types, 1, GDK_ACTION_COPY); g_signal_connect(G_OBJECT(selection), "changed", G_CALLBACK(mimeview_selected), mimeview); g_signal_connect(G_OBJECT(ctree), "button_release_event", G_CALLBACK(mimeview_button_pressed), mimeview); - g_signal_connect(G_OBJECT(ctree), "drag_data_get", - G_CALLBACK(mimeview_drag_data_get), mimeview); mime_notebook = gtk_notebook_new(); gtk_widget_set_name(GTK_WIDGET(mime_notebook), "mime_notebook"); @@ -406,6 +394,7 @@ MimeView *mimeview_create(MainWindow *mainwin) vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_widget_show(vbox); + gtk_box_pack_start(GTK_BOX(vbox), mime_notebook, TRUE, TRUE, 0); paned = gtk_paned_new(GTK_ORIENTATION_VERTICAL); gtk_widget_show(paned); @@ -457,23 +446,16 @@ void mimeview_show_message(MimeView *mimeview, MimeInf mimeview_clear(mimeview); - cm_return_if_fail(file != NULL); - cm_return_if_fail(mimeinfo != NULL); - mimeview->mimeinfo = mimeinfo; + mimeview->file = strdup(file); - mimeview->file = g_strdup(file); + g_signal_handlers_block_by_func(G_OBJECT(ctree), mimeview_selected, mimeview); - g_signal_handlers_block_by_func(G_OBJECT(ctree), mimeview_selected, - mimeview); - mimeview_set_multipart_tree(mimeview, mimeinfo, NULL); gtk_tree_view_expand_all(ctree); - icon_list_clear(mimeview); icon_list_create(mimeview, mimeinfo); - g_signal_handlers_unblock_by_func(G_OBJECT(ctree), - mimeview_selected, mimeview); + g_signal_handlers_unblock_by_func(G_OBJECT(ctree), mimeview_selected, mimeview); } static void mimeview_free_mimeinfo(MimeView *mimeview) @@ -720,25 +702,14 @@ static const gchar *get_part_description(MimeInfo *par static void mimeview_show_message_part(MimeView *mimeview, MimeInfo *partinfo) { + if (!partinfo) return; + FILE *fp; - const gchar *fname; - - if (!partinfo) return; - - fname = mimeview->file; - if (!fname) return; - - if ((fp = g_fopen(fname, "rb")) == NULL) { - FILE_OP_ERROR(fname, "g_fopen"); + if ((fp = fopen(mimeview->file, "r")) == NULL) { + warn("open %s", mimeview->file); return; } - if (fseek(fp, partinfo->offset, SEEK_SET) < 0) { - FILE_OP_ERROR(mimeview->file, "fseek"); - fclose(fp); - return; - } - mimeview_change_view_type(mimeview, MIMEVIEW_TEXT); textview_show_part(mimeview->textview, partinfo, fp); @@ -908,23 +879,6 @@ void mimeview_clear(MimeView *mimeview) mimeview_change_view_type(mimeview, MIMEVIEW_TEXT); } -static void redisplay_email(GtkWidget *widget, gpointer user_data) -{ - MimeView *mimeview = (MimeView *) user_data; - gtk_tree_path_free(mimeview->opened); - mimeview->opened = NULL; - mimeview_selected(gtk_tree_view_get_selection( - GTK_TREE_VIEW(mimeview->ctree)), mimeview); -} - -void mimeview_show_part_as_text(MimeView *mimeview, MimeInfo *partinfo) -{ - cm_return_if_fail(mimeview != NULL); - cm_return_if_fail(partinfo != NULL); - - mimeview_show_message_part(mimeview, partinfo); -} - static void mimeview_selected(GtkTreeSelection *selection, MimeView *mimeview) { GtkTreeView *ctree = GTK_TREE_VIEW(mimeview->ctree); @@ -954,7 +908,8 @@ static void mimeview_selected(GtkTreeSelection *select gtk_tree_view_scroll_to_cell(ctree, path, NULL, TRUE, 0.5, 0); partinfo = mimeview_get_node_part(mimeview, path); - if (!partinfo) return; + if (!partinfo) + return; /* ungrab the mouse event */ if (gtk_widget_has_grab(GTK_WIDGET(ctree))) { @@ -974,7 +929,6 @@ static void mimeview_selected(GtkTreeSelection *select case MIMETYPE_MESSAGE: case MIMETYPE_MULTIPART: mimeview_show_message_part(mimeview, partinfo); - break; default: mimeview->textview->default_text = TRUE; @@ -1157,119 +1111,6 @@ skip: #define BREAK_ON_MODIFIER_KEY() \ if ((event->state & (GDK_MOD1_MASK|GDK_CONTROL_MASK)) != 0) break -static void mimeview_drag_data_get(GtkWidget *widget, - GdkDragContext *drag_context, - GtkSelectionData *selection_data, - guint info, - guint time, - MimeView *mimeview) -{ - gchar *filename = NULL, *uriname, *tmp = NULL; - MimeInfo *partinfo; - gint err; - gint count = 0; - - if (!mimeview->opened) return; - if (!mimeview->file) return; - - partinfo = mimeview_get_selected_part(mimeview); - if (!partinfo) return; - - if (strlen(get_part_name(partinfo)) > 0) { - filename = g_path_get_basename(get_part_name(partinfo)); - if (filename) { - if (*filename == '\0') { - g_free(filename); - return; - } - } - } else if (partinfo->type == MIMETYPE_MESSAGE - && !g_ascii_strcasecmp(partinfo->subtype, "rfc822")) { - gchar *name = NULL; - GPtrArray *headers = NULL; - FILE *fp; - - fp = g_fopen(partinfo->data.filename, "rb"); - if (fp != NULL && fseek(fp, partinfo->offset, SEEK_SET) == 0) { - headers = procheader_get_header_array(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); - } - } - if (fp != NULL) - fclose(fp); - if (name) - filename = g_path_get_basename(name); - g_free(name); - } - if (filename == NULL) - filename = g_path_get_basename("Unnamed part"); - - if (!g_utf8_validate(filename, -1, NULL)) - tmp = conv_codeset_strdup(filename, - conv_get_locale_charset_str(), - CS_UTF_8); - - if (tmp == NULL) { - g_warning("filename not in UTF-8"); - tmp = g_strdup(filename); - } - g_free(filename); - filename = g_strconcat(get_mime_tmp_dir(), G_DIR_SEPARATOR_S, - tmp, NULL); - -check_new_file: - if (is_file_exist(filename)) { - gchar *ext = NULL; - gchar *prefix = NULL; - gchar *new_name = NULL; - if (strrchr(tmp, '.')) { - prefix = g_strdup(tmp); - ext = g_strdup(strrchr(tmp, '.')); - *(strrchr(prefix, '.')) = '\0'; - } else { - prefix = g_strdup(tmp); - ext = g_strdup(""); - } - count++; - new_name = g_strdup_printf("%s.%d%s", prefix, count, ext); - g_free(prefix); - g_free(ext); - g_free(filename); - filename = g_strconcat(get_mime_tmp_dir(), G_DIR_SEPARATOR_S, - new_name, NULL); - g_free(new_name); - goto check_new_file; - } - - g_free(tmp); - - if ((err = procmime_get_part(filename, partinfo)) < 0) - alertpanel_error - (_("Couldn't save the part of multipart message: %s"), - g_strerror(-err)); - - tmp = g_filename_to_uri(filename, NULL, NULL); - uriname = g_strconcat(tmp, "\r\n", NULL); - g_free(tmp); - - gtk_selection_data_set(selection_data, - gtk_selection_data_get_target(selection_data), 8, - (guchar *)uriname, strlen(uriname)); - - g_free(uriname); - g_free(filename); -} - /** * Returns a filename (with path) for an attachment * \param partinfo The attachment to save @@ -2017,8 +1858,6 @@ static void icon_list_append_icon (MimeView *mimeview, gtk_widget_set_tooltip_markup(button, tip); g_free(tip); gtk_widget_show_all(button); - gtk_drag_source_set(button, GDK_BUTTON1_MASK|GDK_BUTTON3_MASK, - mimeview_mime_types, 1, GDK_ACTION_COPY); g_signal_connect(G_OBJECT(button), "popup-menu", G_CALLBACK(icon_popup_menu), mimeview); @@ -2026,8 +1865,6 @@ static void icon_list_append_icon (MimeView *mimeview, G_CALLBACK(icon_clicked_cb), mimeview); g_signal_connect(G_OBJECT(button), "key_press_event", G_CALLBACK(icon_key_pressed), mimeview); - g_signal_connect(G_OBJECT(button), "drag_data_get", - G_CALLBACK(mimeview_drag_data_get), mimeview); gtk_container_add(GTK_CONTAINER(grid), button); } @@ -2075,10 +1912,7 @@ static void icon_scroll_size_allocate_cb(GtkWidget *wi static void icon_list_create(MimeView *mimeview, MimeInfo *mimeinfo) { - gint min_width, width; - - cm_return_if_fail(mimeinfo != NULL); - + icon_list_clear(mimeview); while (mimeinfo != NULL) { if (mimeinfo->type != MIMETYPE_MULTIPART) icon_list_append_icon(mimeview, mimeinfo); @@ -2089,6 +1923,8 @@ static void icon_list_create(MimeView *mimeview, MimeI ? (MimeInfo *) mimeinfo->node->next->data : NULL; } + + gint min_width, width; gtk_widget_get_preferred_width(mimeview->icon_mainbox, &min_width, &width); if (min_width < width) { gtk_widget_set_size_request(mimeview->icon_mainbox, @@ -2169,7 +2005,6 @@ static gint mime_toggle_button_cb(GtkWidget *button, G void mimeview_update (MimeView *mimeview) { if (mimeview && mimeview->mimeinfo) { - icon_list_clear(mimeview); icon_list_create(mimeview, mimeview->mimeinfo); } } blob - d40b340e19bbd25e1bccce465a77aad292d47664 blob + 875ee32cd3bcdf17b021f5b9508e4a0857b693d3 --- src/mimeview.h +++ src/mimeview.h @@ -120,8 +120,6 @@ void mimeview_show_message (MimeView *mimeview, const gchar *file); gboolean mimeview_show_part (MimeView *mimeview, MimeInfo *partinfo); -void mimeview_show_part_as_text (MimeView *mimeview, - MimeInfo *partinfo); void mimeview_destroy (MimeView *mimeview); void mimeview_update (MimeView *mimeview); void mimeview_clear (MimeView *mimeview); blob - 701ad99e21e797b69271e888ad4526f641ead88f blob + 918dfee20af7550444b760ad983680c6db7a4d9c --- src/textview.c +++ src/textview.c @@ -502,9 +502,6 @@ void textview_reflect_prefs(TextView *textview) void textview_show_part(TextView *textview, MimeInfo *mimeinfo, FILE *fp) { - cm_return_if_fail(mimeinfo != NULL); - cm_return_if_fail(fp != NULL); - textview->loading = TRUE; textview->stop_loading = FALSE; @@ -516,41 +513,32 @@ void textview_show_part(TextView *textview, MimeInfo * } else { if (fseek(fp, mimeinfo->offset, SEEK_SET) < 0) perror("fseek"); - textview_write_body(textview, mimeinfo); } textview->loading = FALSE; textview->stop_loading = FALSE; textview_set_position(textview, 0); - } static void textview_add_part(TextView *textview, MimeInfo *mimeinfo) { - GtkTextView *text; - GtkTextBuffer *buffer; - GtkTextIter iter; + if (textview->stop_loading) + return; + if (mimeinfo->type == MIMETYPE_MULTIPART) + return; + gchar buf[BUFFSIZE]; GPtrArray *headers = NULL; const gchar *name; gchar *content_type; - gint charcount; - - cm_return_if_fail(mimeinfo != NULL); - text = GTK_TEXT_VIEW(textview->text); - buffer = gtk_text_view_get_buffer(text); - charcount = gtk_text_buffer_get_char_count(buffer); + GtkTextView *text = GTK_TEXT_VIEW(textview->text); + GtkTextBuffer *buffer = gtk_text_view_get_buffer(text); + int charcount = gtk_text_buffer_get_char_count(buffer); + GtkTextIter iter; gtk_text_buffer_get_end_iter(buffer, &iter); - if (textview->stop_loading) { - return; - } - if (mimeinfo->type == MIMETYPE_MULTIPART) { - return; - } - textview->prev_quote_level = -1; if ((mimeinfo->type == MIMETYPE_MESSAGE) && !g_ascii_strcasecmp(mimeinfo->subtype, "rfc822")) { @@ -619,79 +607,53 @@ static void textview_add_part(TextView *textview, Mime static void recursive_add_parts(TextView *textview, GNode *node) { - GNode * iter; - MimeInfo *mimeinfo; + MimeInfo *mimeinfo = (MimeInfo *) node->data; + textview_add_part(textview, mimeinfo); + if (mimeinfo->type != MIMETYPE_MULTIPART && mimeinfo->type != MIMETYPE_MESSAGE) { + return; + } - mimeinfo = (MimeInfo *) node->data; + GNode *iter; + if (g_ascii_strcasecmp(mimeinfo->subtype, "alternative") != 0) { + for (iter = g_node_first_child(node); iter != NULL; iter = g_node_next_sibling(iter)) { + recursive_add_parts(textview, iter); + } + return; + } - textview_add_part(textview, mimeinfo); - if ((mimeinfo->type != MIMETYPE_MULTIPART) && - (mimeinfo->type != MIMETYPE_MESSAGE)) { - return; - } - if (g_ascii_strcasecmp(mimeinfo->subtype, "alternative") == 0) { - GNode * preferred_body; - int preferred_score; + GNode *preferred_body = NULL; + int preferred_score = 0; + for (iter = g_node_first_child(node); iter != NULL; iter = g_node_next_sibling(iter)) { + int score = 1; + MimeInfo *submime = (MimeInfo *) iter->data; + if (submime->type == MIMETYPE_TEXT) + score++; + if (submime->subtype != NULL) { + if (g_ascii_strcasecmp(submime->subtype, "plain") == 0) + score++; + } + if (score > preferred_score) { + preferred_score = score; + preferred_body = iter; + } + } - /* - text/plain : score 3 - text/ * : score 2 - other : score 1 - */ - preferred_body = NULL; - preferred_score = 0; - - for (iter = g_node_first_child(node) ; iter != NULL ; - iter = g_node_next_sibling(iter)) { - int score; - MimeInfo * submime; - - score = 1; - submime = (MimeInfo *) iter->data; - if (submime->type == MIMETYPE_TEXT) - score = 2; - - if (submime->subtype != NULL) { - if (g_ascii_strcasecmp(submime->subtype, "plain") == 0) - score = 3; - } - - if (score > preferred_score) { - preferred_score = score; - preferred_body = iter; - } - } - - if (preferred_body != NULL) { - recursive_add_parts(textview, preferred_body); - } - } - else { - for (iter = g_node_first_child(node) ; iter != NULL ; - iter = g_node_next_sibling(iter)) { - recursive_add_parts(textview, iter); - } - } + if (preferred_body != NULL) + recursive_add_parts(textview, preferred_body); } static void textview_add_parts(TextView *textview, MimeInfo *mimeinfo) { - cm_return_if_fail(mimeinfo != NULL); - cm_return_if_fail(mimeinfo->node != NULL); - recursive_add_parts(textview, mimeinfo->node); } void textview_show_error(TextView *textview) { - GtkTextView *text; - GtkTextBuffer *buffer; - GtkTextIter iter; - textview_clear(textview); - text = GTK_TEXT_VIEW(textview->text); - buffer = gtk_text_view_get_buffer(text); + GtkTextView *text = GTK_TEXT_VIEW(textview->text); + GtkTextBuffer *buffer = gtk_text_view_get_buffer(text); + GtkTextIter iter; gtk_text_buffer_get_start_iter(buffer, &iter); TEXTVIEW_INSERT(_("\n" @@ -706,14 +668,11 @@ void textview_show_error(TextView *textview) void textview_show_info(TextView *textview, const gchar *info_str) { - GtkTextView *text; - GtkTextBuffer *buffer; - GtkTextIter iter; - textview_clear(textview); - text = GTK_TEXT_VIEW(textview->text); - buffer = gtk_text_view_get_buffer(text); + GtkTextView *text = GTK_TEXT_VIEW(textview->text); + GtkTextBuffer *buffer = gtk_text_view_get_buffer(text); + GtkTextIter iter; gtk_text_buffer_get_start_iter(buffer, &iter); TEXTVIEW_INSERT(info_str); @@ -723,16 +682,10 @@ void textview_show_info(TextView *textview, const gcha void textview_show_mime_part(TextView *textview, MimeInfo *partinfo) { - GtkTextView *text; - GtkTextBuffer *buffer; - GtkTextIter iter; - const gchar *name; - gchar *content_type; + if (!partinfo) + return; + GtkUIManager *ui_manager; - gchar *shortcut; - - if (!partinfo) return; - if (textview->messageview->window != NULL) ui_manager = textview->messageview->ui_manager; else @@ -740,17 +693,18 @@ void textview_show_mime_part(TextView *textview, MimeI textview_clear(textview); - text = GTK_TEXT_VIEW(textview->text); - buffer = gtk_text_view_get_buffer(text); + GtkTextView *text = GTK_TEXT_VIEW(textview->text); + GtkTextBuffer *buffer = gtk_text_view_get_buffer(text); + GtkTextIter iter; gtk_text_buffer_get_start_iter(buffer, &iter); TEXTVIEW_INSERT("\n"); - name = procmime_mimeinfo_get_parameter(partinfo, "filename"); + const char *name = procmime_mimeinfo_get_parameter(partinfo, "filename"); if (name == NULL) name = procmime_mimeinfo_get_parameter(partinfo, "name"); if (name != NULL) { - content_type = procmime_get_content_type_str(partinfo->type, + char *content_type = procmime_get_content_type_str(partinfo->type, partinfo->subtype); TEXTVIEW_INSERT(" "); TEXTVIEW_INSERT_BOLD(name); @@ -759,8 +713,7 @@ void textview_show_mime_part(TextView *textview, MimeI TEXTVIEW_INSERT(", "); TEXTVIEW_INSERT(to_human_readable((goffset)partinfo->length)); TEXTVIEW_INSERT("):\n\n"); - - g_free(content_type); + free(content_type); } TEXTVIEW_INSERT(_(" The following can be performed on this part\n")); TEXTVIEW_INSERT(_(" by right-clicking the icon or list item:")); @@ -768,40 +721,18 @@ void textview_show_mime_part(TextView *textview, MimeI TEXTVIEW_INSERT(_(" - To save, select ")); TEXTVIEW_INSERT_LINK(_("'Save as...'"), "cm://save_as", NULL); - TEXTVIEW_INSERT(_(" (Shortcut key: '")); - shortcut = cm_menu_item_get_shortcut(ui_manager, "Menu/File/SavePartAs"); - TEXTVIEW_INSERT(shortcut); - g_free(shortcut); - TEXTVIEW_INSERT(_("')")); TEXTVIEW_INSERT("\n"); TEXTVIEW_INSERT(_(" - To display as text, select ")); TEXTVIEW_INSERT_LINK(_("'Display as text'"), "cm://display_as_text", NULL); - TEXTVIEW_INSERT(_(" (Shortcut key: '")); - shortcut = cm_menu_item_get_shortcut(ui_manager, "Menu/View/Part/AsText"); - TEXTVIEW_INSERT(shortcut); - g_free(shortcut); - TEXTVIEW_INSERT(_("')")); - TEXTVIEW_INSERT("\n"); - TEXTVIEW_INSERT(_(" - To open with an external program, select ")); TEXTVIEW_INSERT_LINK(_("'Open'"), "cm://open", NULL); - - TEXTVIEW_INSERT(_(" (Shortcut key: '")); - shortcut = cm_menu_item_get_shortcut(ui_manager, "Menu/View/Part/Open"); - TEXTVIEW_INSERT(shortcut); - g_free(shortcut); TEXTVIEW_INSERT(_("')\n")); TEXTVIEW_INSERT(_(" (alternately double-click, or click the middle ")); TEXTVIEW_INSERT(_("mouse button)\n")); TEXTVIEW_INSERT(_(" - Or use ")); TEXTVIEW_INSERT_LINK(_("'Open with...'"), "cm://open_with", NULL); - TEXTVIEW_INSERT(_(" (Shortcut key: '")); - shortcut = cm_menu_item_get_shortcut(ui_manager, "Menu/View/Part/OpenWith"); - TEXTVIEW_INSERT(shortcut); - g_free(shortcut); - TEXTVIEW_INSERT(_("')")); TEXTVIEW_INSERT("\n"); textview_show_icon(textview, "dialog-information"); @@ -864,69 +795,7 @@ static void textview_write_body(TextView *textview, Mi unlink(filename); } g_free(filename); - } else if ( g_ascii_strcasecmp(mimeinfo->subtype, "plain") && - (cmd = prefs_common.mime_textviewer) && *cmd && - (p = strchr(cmd, '%')) && *(p + 1) == 's') { - int pid, pfd[2]; - const gchar *fname; - - fname = procmime_get_tmp_file_name(mimeinfo); - if (procmime_get_part(fname, mimeinfo)) goto textview_default; - - g_snprintf(buf, sizeof(buf), cmd, fname); - debug_print("Viewing text content of type: %s (length: %ld) " - "using %s\n", mimeinfo->subtype, mimeinfo->length, buf); - - if (pipe(pfd) < 0) { - g_snprintf(buf, sizeof(buf), - "pipe failed for textview\n\n%s\n", g_strerror(errno)); - textview_write_line(textview, buf, conv, TRUE); - goto textview_default; - } - pid = fork(); - if (pid < 0) { - g_snprintf(buf, sizeof(buf), - "fork failed for textview\n\n%s\n", g_strerror(errno)); - textview_write_line(textview, buf, conv, TRUE); - close(pfd[0]); - close(pfd[1]); - goto textview_default; - } - if (pid == 0) { /* child */ - int rc; - gchar **argv; - argv = strsplit_with_quote(buf, " ", 0); - close(1); - close(pfd[0]); - rc = dup(pfd[1]); - rc = execvp(argv[0], argv); - perror("execvp"); - close(pfd[1]); - g_print(_("The command to view attachment " - "as text failed:\n" - " %s\n" - "Exit code %d\n"), buf, rc); - exit(255); - } - close(pfd[1]); - tmpfp = fdopen(pfd[0], "rb"); - while (fgets(buf, sizeof(buf), tmpfp)) { - textview_write_line(textview, buf, conv, TRUE); - - if (textview->stop_loading) { - fclose(tmpfp); - waitpid(pid, pfd, 0); - g_unlink(fname); - conv_code_converter_destroy(conv); - return; - } - } - - fclose(tmpfp); - waitpid(pid, pfd, 0); - g_unlink(fname); } else { -textview_default: if (!g_ascii_strcasecmp(mimeinfo->subtype, "x-patch") || !g_ascii_strcasecmp(mimeinfo->subtype, "x-diff")) textview->is_diff = TRUE; @@ -1686,8 +1555,6 @@ void textview_show_icon(TextView *textview, const gcha GTK_TEXT_WINDOW_TEXT, wx, wy); gtk_widget_show_all(textview->text); - - return; } @@ -1724,20 +1591,10 @@ static void textview_show_header(TextView *textview, G if (procheader_headername_equal(header->name, "Date") && prefs_common.msgview_date_format) { gchar hbody[80]; - procheader_date_parse(hbody, header->body, sizeof(hbody)); gtk_text_buffer_get_end_iter (buffer, &iter); gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, hbody, -1, "header", NULL); - } else if ((procheader_headername_equal(header->name, "X-Mailer") || - procheader_headername_equal(header->name, - "X-Newsreader")) && - (strstr(header->body, "Claws Mail") != NULL || - strstr(header->body, "Sylpheed-Claws") != NULL)) { - gtk_text_buffer_get_end_iter (buffer, &iter); - gtk_text_buffer_insert_with_tags_by_name - (buffer, &iter, header->body, -1, - "header", "emphasis", NULL); } else { gboolean hdr = procheader_headername_equal(header->name, "From") ||