rendered paste bodydiff --git a/src/diffviewer/search.c b/src/diffviewer/search.cindex 19176af..b7bbc10 100644--- a/src/diffviewer/search.c+++ b/src/diffviewer/search.c@@ -118,19 +118,6 @@ mcdiffview_dialog_search (WDiff * dview) return FALSE; } -#ifdef HAVE_CHARSET- {- GString *tmp;-- tmp = str_convert_to_input (exp);- if (tmp != NULL)- {- g_free (exp);- exp = g_string_free (tmp, FALSE);- }- }-#endif- g_free (dview->search.last_string); dview->search.last_string = exp; @@ -254,7 +241,12 @@ dview_search_cmd (WDiff * dview) return; dview->search.handle->search_type = mcdiffview_search_options.type;- dview->search.handle->is_all_charsets = mcdiffview_search_options.all_codepages;+#ifdef HAVE_CHARSET+ dview->search.handle->is_all_charsets = mcdiffview_search_options.all_codepages+ || cp_source != cp_display;+#else+ dview->search.handle->is_all_charsets = FALSE;+#endif dview->search.handle->is_case_sensitive = mcdiffview_search_options.case_sens; dview->search.handle->whole_words = mcdiffview_search_options.whole_words; diff --git a/src/editor/editcmd.c b/src/editor/editcmd.cindex ee7cff7..e9d9886 100644--- a/src/editor/editcmd.c+++ b/src/editor/editcmd.c@@ -875,25 +875,6 @@ editcmd_find (WEdit * edit, gsize * len) /* --------------------------------------------------------------------------------------------- */ static char *-edit_replace_cmd__conv_to_display (char *str)-{-#ifdef HAVE_CHARSET- GString *tmp;-- tmp = str_convert_to_display (str);- if (tmp != NULL)- {- if (tmp->len != 0)- return g_string_free (tmp, FALSE);- g_string_free (tmp, TRUE);- }-#endif- return g_strdup (str);-}--/* --------------------------------------------------------------------------------------------- */--static char * edit_replace_cmd__conv_to_input (char *str) { #ifdef HAVE_CHARSET@@ -2446,9 +2427,6 @@ edit_replace_cmd (WEdit * edit, int again) static char *saved2 = NULL; char *input1 = NULL; /* user input from the dialog */ char *input2 = NULL;- GString *input2_str = NULL;- char *disp1 = NULL;- char *disp2 = NULL; long times_replaced = 0; gboolean once_found = FALSE; @@ -2466,55 +2444,52 @@ edit_replace_cmd (WEdit * edit, int again) if (again) {- input1 = g_strdup (saved1 ? saved1 : "");- input2 = g_strdup (saved2 ? saved2 : "");+ input1 = saved1 != NULL ? saved1 : "";+ input2 = saved2 != NULL ? saved2 : ""; } else {- char *tmp_inp1, *tmp_inp2;+ char *disp1, *disp2; - disp1 = edit_replace_cmd__conv_to_display (saved1 ? saved1 : (char *) "");- disp2 = edit_replace_cmd__conv_to_display (saved2 ? saved2 : (char *) "");+ disp1 = saved1 != NULL ? saved1 : (char *) "";+ disp2 = saved2 != NULL ? saved2 : (char *) ""; edit_push_undo_action (edit, KEY_PRESS + edit->start_display); editcmd_dialog_replace_show (edit, disp1, disp2, &input1, &input2); - g_free (disp1);- g_free (disp2);- if (input1 == NULL || *input1 == '\0') {+ g_free (input1);+ g_free (input2); edit->force = REDRAW_COMPLETELY;- goto cleanup;+ return; } - tmp_inp1 = input1;- tmp_inp2 = input2;- input1 = edit_replace_cmd__conv_to_input (input1);- input2 = edit_replace_cmd__conv_to_input (input2);- g_free (tmp_inp1);- g_free (tmp_inp2);-- g_free (saved1), saved1 = g_strdup (input1);- g_free (saved2), saved2 = g_strdup (input2);+ g_free (saved1);+ g_free (saved2);+ saved1 = input1;+ saved2 = input2; mc_search_free (edit->search); edit->search = NULL; } - input2_str = g_string_new (input2);- if (!edit->search) { edit->search = mc_search_new (input1, -1); if (edit->search == NULL) { edit->search_start = edit->buffer.curs1;- goto cleanup;+ return; } edit->search->search_type = edit_search_options.type;- edit->search->is_all_charsets = edit_search_options.all_codepages;+#ifdef HAVE_CHARSET+ edit->search->is_all_charsets = edit_search_options.all_codepages+ || cp_source != cp_display;+#else+ edit->search->is_all_charsets = FALSE;+#endif edit->search->is_case_sensitive = edit_search_options.case_sens; edit->search->whole_words = edit_search_options.whole_words; edit->search->search_fn = edit_search_cmd_callback;@@ -2551,7 +2526,7 @@ edit_replace_cmd (WEdit * edit, int again) if ((edit->search_start >= 0) && (edit->search_start < edit->buffer.size)) { gsize i;- GString *repl_str;+ char *input2_conv, *repl_str; edit->found_start = edit->search_start; i = edit->found_len = len;@@ -2577,11 +2552,7 @@ edit_replace_cmd (WEdit * edit, int again) /*so that undo stops at each query */ edit_push_key_press (edit); /* and prompt 2/3 down */- disp1 = edit_replace_cmd__conv_to_display (saved1);- disp2 = edit_replace_cmd__conv_to_display (saved2);- prompt = editcmd_dialog_replace_prompt_show (edit, disp1, disp2, -1, -1);- g_free (disp1);- g_free (disp2);+ prompt = editcmd_dialog_replace_prompt_show (edit, saved1, saved2, -1, -1); if (prompt == B_REPLACE_ALL) edit->replace_mode = 1;@@ -2600,12 +2571,14 @@ edit_replace_cmd (WEdit * edit, int again) } } - repl_str = mc_search_prepare_replace_str (edit->search, input2_str);+ input2_conv = edit_replace_cmd__conv_to_input (input2);+ repl_str = mc_search_prepare_replace_str2 (edit->search, input2_conv);+ g_free (input2_conv); if (edit->search->error != MC_SEARCH_E_OK) { edit_error_dialog (_("Replace"), edit->search->error_str);- g_string_free (repl_str, TRUE);+ g_free (repl_str); break; } @@ -2613,11 +2586,11 @@ edit_replace_cmd (WEdit * edit, int again) for (i = 0; i < len; i++) edit_delete (edit, TRUE); - for (i = 0; i < repl_str->len; i++)- edit_insert (edit, repl_str->str[i]);+ for (i = 0; repl_str[i] != '\0'; i++)+ edit_insert (edit, repl_str[i]); - edit->found_len = repl_str->len;- g_string_free (repl_str, TRUE);+ edit->found_len = i;+ g_free (repl_str); times_replaced++; /* so that we don't find the same string again */@@ -2657,12 +2630,6 @@ edit_replace_cmd (WEdit * edit, int again) if ((edit->replace_mode == 1) && (times_replaced != 0)) message (D_NORMAL, _("Replace"), _("%ld replacements made"), times_replaced);-- cleanup:- g_free (input1);- g_free (input2);- if (input2_str != NULL)- g_string_free (input2_str, TRUE); } /* --------------------------------------------------------------------------------------------- */@@ -2712,7 +2679,12 @@ edit_search_cmd (WEdit * edit, gboolean again) else { edit->search->search_type = edit_search_options.type;- edit->search->is_all_charsets = edit_search_options.all_codepages;+#ifdef HAVE_CHARSET+ edit->search->is_all_charsets = edit_search_options.all_codepages+ || cp_source != cp_display;+#else+ edit->search->is_all_charsets = FALSE;+#endif edit->search->is_case_sensitive = edit_search_options.case_sens; edit->search->whole_words = edit_search_options.whole_words; edit->search->search_fn = edit_search_cmd_callback;diff --git a/src/editor/editcmd_dialogs.c b/src/editor/editcmd_dialogs.cindex 865ef3d..3c03c0b 100644--- a/src/editor/editcmd_dialogs.c+++ b/src/editor/editcmd_dialogs.c@@ -145,19 +145,6 @@ editcmd_dialog_search_show (WEdit * edit) if (dialog_result == B_USER) search_create_bookmark = TRUE; -#ifdef HAVE_CHARSET- {- GString *tmp;-- tmp = str_convert_to_input (search_text);- if (tmp != NULL)- {- g_free (search_text);- search_text = g_string_free (tmp, FALSE);- }- }-#endif- g_free (edit->last_search_string); edit->last_search_string = search_text; mc_search_free (edit->search);@@ -166,7 +153,12 @@ editcmd_dialog_search_show (WEdit * edit) if (edit->search != NULL) { edit->search->search_type = edit_search_options.type;- edit->search->is_all_charsets = edit_search_options.all_codepages;+#ifdef HAVE_CHARSET+ edit->search->is_all_charsets = edit_search_options.all_codepages+ || cp_source != cp_display;+#else+ edit->search->is_all_charsets = FALSE;+#endif edit->search->is_case_sensitive = edit_search_options.case_sens; edit->search->whole_words = edit_search_options.whole_words; edit->search->search_fn = edit_search_cmd_callback;diff --git a/src/viewer/actions_cmd.c b/src/viewer/actions_cmd.cindex 7ea556d..a022b0e 100644--- a/src/viewer/actions_cmd.c+++ b/src/viewer/actions_cmd.c@@ -159,7 +159,12 @@ mcview_continue_search_cmd (mcview_t * view) else { view->search->search_type = mcview_search_options.type;- view->search->is_all_charsets = mcview_search_options.all_codepages;+#ifdef HAVE_CHARSET+ view->search->is_all_charsets = mcview_search_options.all_codepages+ || cp_source != cp_display;+#else+ view->search->is_all_charsets = FALSE;+#endif view->search->is_case_sensitive = mcview_search_options.case_sens; view->search->whole_words = mcview_search_options.whole_words; view->search->search_fn = mcview_search_cmd_callback;diff --git a/src/viewer/dialogs.c b/src/viewer/dialogs.cindex 8fba696..a0f7637 100644--- a/src/viewer/dialogs.c+++ b/src/viewer/dialogs.c@@ -124,19 +124,6 @@ mcview_dialog_search (mcview_t * view) return FALSE; } -#ifdef HAVE_CHARSET- {- GString *tmp;-- tmp = str_convert_to_input (exp);- if (tmp != NULL)- {- g_free (exp);- exp = g_string_free (tmp, FALSE);- }- }-#endif- g_free (view->last_search_string); view->last_search_string = exp; mcview_nroff_seq_free (&view->search_nroff_seq);@@ -147,7 +134,12 @@ mcview_dialog_search (mcview_t * view) if (view->search != NULL) { view->search->search_type = mcview_search_options.type;- view->search->is_all_charsets = mcview_search_options.all_codepages;+#ifdef HAVE_CHARSET+ view->search->is_all_charsets = mcview_search_options.all_codepages+ || cp_source != cp_display;+#else+ view->search->is_all_charsets = FALSE;+#endif view->search->is_case_sensitive = mcview_search_options.case_sens; view->search->whole_words = mcview_search_options.whole_words; view->search->search_fn = mcview_search_cmd_callback;