16283 Commits

Author SHA1 Message Date
Yury V. Zaytsev
4ff4d0df4e maint: add repository archival notice
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2025-02-28 18:36:03 +01:00
Andrew Borodin
be21a83f13 Merge branch '4072_mcedit_replace_bol'
* 4072_mcedit_replace_bol:
  Add tests for edit_replace_cmd().
  Fix anchored regex line matching inconsistencies.
  (edit_find): add intermediate variable.
  (edit_do_search): clarify edit->search_start
  Ticket #4072: mcedit: anchored regex line matching inconsistencies.
2025-02-23 18:53:43 +03:00
Andrew Borodin
2893ee212f Add tests for edit_replace_cmd().
* (status_msg_init): add MC_MOCKABLE attribute.
  * (status_msg_deinit): likewise.
  * (edit_search_update_callback): likewise.
  * (edit_dialog_replace_show): add MC_MOCKABLE and make public.
  * (edit_dialog_replace_prompt_show): likewise.
  * (edit_search_options): make public.
  * (B_REPLACE_ALL, B_REPLACE_ONE, B_SKIP_REPLACE): likewise.
  * (macros_list): init explicitly.
  * tests/src/editor/mc.charsets: add ASCII charset.
  * tests/src/editor/edit_replace_cmd.c: new file.
  * tests/src/editor/Makefile.am: add new test.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2025-02-23 18:52:47 +03:00
Andrew Borodin
97597cc60b Fix anchored regex line matching inconsistencies.
* (edit_find): fix start and end search boundaries in case of regex
    search and search direction.
  * (edit_replace_cmd): clarify cursor position.
2025-02-23 18:52:46 +03:00
Andrew Borodin
cb69c2b923 (edit_find): add intermediate variable.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2025-02-23 18:48:50 +03:00
Andrew Borodin
1b24b367c9 (edit_do_search): clarify edit->search_start
...in depend on edit->found_start and edit->found_len.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2025-02-23 18:46:55 +03:00
Andrew Borodin
b58fe55bdf Ticket #4072: mcedit: anchored regex line matching inconsistencies.
(edit_find): simplify test

(start_mark != 0
|| edit_buffer_get_byte (&edit->buffer, start_mark - 1) != end_string_symbol)

If start_mark == 0 then
edit_buffer_get_byte (&edit->buffer, start_mark - 1) != end_string_symbol)
is always FALSE.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2025-02-23 18:46:40 +03:00
Andrew Borodin
4d02bb20a4 Merge branch '4655_remove_pcre'
* 4655_remove_pcre:
  Ticket #4655: remove PCRE and PCRE2 search engines.
2025-02-23 09:07:34 +03:00
Andrew Borodin
18c0c2fabb Ticket #4655: remove PCRE and PCRE2 search engines.
GRegex as PCRE wrapper was introduced in GLib-2.14. PCRE was required
for MC on OSes with GLib < 2.14. Currently MC requires GLib >= 2.32.
Since 2.73.2 (released at 2022-07-08), GRegex is based on PCRE2.

We can remove PCRE and PCRE2 from MC and use GLib only.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2025-02-22 20:22:07 +03:00
Andrew Borodin
9f020f7bfd Merge branch '4651_mouse_drag_segfault'
* 4651_mouse_drag_segfault:
  (panel_mouse_is_on_item): fix return value
  Ticket #4651: segfault when dragging mouse in half-empty panel.
2025-02-17 20:49:11 +03:00
Andrew Borodin
130d0f0435 (panel_mouse_is_on_item): fix return value
...in case of mouse click below last file.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2025-02-16 20:21:27 +03:00
Andrew Borodin
abbd9d5915 Ticket #4651: segfault when dragging mouse in half-empty panel.
* (move_down): fix out of range: keep pane->current in range of
  panel->dir.list.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2025-02-16 20:21:27 +03:00
Andrew Borodin
ee8b3811d6 Merge branch '4652_mcedit_jump_to_bottom_of_screen'
* 4652_mcedit_jump_to_bottom_of_screen:
  Ticket #4652: mcedit: fix jumping to bottom of screen
2025-02-15 14:32:49 +03:00
Andrew Borodin
b87bfb85fb Ticket #4652: mcedit: fix jumping to bottom of screen
...in non-fullscreen mode.

  * (edit_end_page): fix count of lines from cursor down to bottom of
  screen.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2025-02-15 14:20:56 +03:00
Andrew Borodin
f9a2d3a4a7 Merge branch '4636_read_directory_after_resize'
* 4636_read_directory_after_resize:
  Ticket #4636: fails to read directory if resized while external editor was running.
2025-02-15 10:20:54 +03:00
Andrew Borodin
213119c8da Ticket #4636: fails to read directory if resized while external editor was running.
* (edit_file_at_line): simplify. Make this function like
  view_file_at_line(). Get rid of multiple directory readings after
  close an external editor.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2025-02-14 21:04:30 +03:00
Andrew Borodin
f2b4828867 Merge branch '4650_shift_f4_segfault'
* 4650_shift_f4_segfault:
  Ticket #4650: fix a segfault when parsing extern_cmd_options fails.
2025-02-09 16:05:11 +03:00
Ruslan Batdalov
ed0bf81503 Ticket #4650: fix a segfault when parsing extern_cmd_options fails.
do_executev() dereferences argv unconditionally. However,
execute_external_editor_or_viewer() may call do_executev() with NULL
argv, which causes a segfault.
This commit adds a check of argv for non-nullness.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2025-02-09 12:13:58 +03:00
Yury V. Zaytsev
5cae1ddd9a Merge branch '4642_fix_overflow'
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2025-02-03 18:15:05 +01:00
Yury V. Zaytsev
ac9a81d9bd Ticket #4642: extract and re-implement str_chomp to fix buffer overflow, add tests
Found in Alpine/musl on s390x, confirmed on aarch64 using valgrind - introduced
in 65a7278d8a:

{{{
==156518== Invalid read of size 1
==156518==    at 0x413BE0: vfs_parse_ls_lga (parse_ls_vga.c:863)
==156518==    by 0x4076C3: process_ls_line (mc_parse_ls_l.c:350)
==156518==    by 0x4076C3: process_input (mc_parse_ls_l.c:376)
==156518==    by 0x40736B: main (mc_parse_ls_l.c:404)
==156518==  Address 0x536be6f is 1 bytes before a block of size 2 alloc'd
==156518==    at 0x48854F0: malloc (vg_replace_malloc.c:446)
==156518==    by 0x4CF4FCB: g_malloc (gmem.c:100)
==156518==    by 0x4D0E99B: g_strdup (gstrfuncs.c:323)
==156518==    by 0x413887: g_strdup_inline (gstrfuncs.h:321)
==156518==    by 0x413887: vfs_parse_ls_lga (parse_ls_vga.c:848)
==156518==    by 0x4076C3: process_ls_line (mc_parse_ls_l.c:350)
==156518==    by 0x4076C3: process_input (mc_parse_ls_l.c:376)
==156518==    by 0x40736B: main (mc_parse_ls_l.c:404)
}}}

https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/79071

Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2025-02-03 10:54:51 +01:00
Yury V. Zaytsev
fbef24a645 Merge branch '4592_clang_format'
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2025-02-02 19:39:44 +01:00
Yury V. Zaytsev
8406bddbd4 formatting: step 6 - manual tweaks
* Reformat tests with magic comma
* Remove macro guards causing unstable formatting

```
find . -type file -name '*.[ch]' | xargs sed -i '' -E 's|# *endif.+//.+$|#endif|g'
```

Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2025-02-02 19:38:47 +01:00
Yury V. Zaytsev
8cf79c8bc7 formatting: step 5 - add formatter check to the CI
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2025-02-02 19:38:47 +01:00
Yury V. Zaytsev
c3ff1763f6 formatting: step 4 - reformat all files with make indent
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2025-02-02 19:38:47 +01:00
Yury V. Zaytsev
f1094c9faa formatting: step 3 - add clang-format configuration
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2025-02-02 19:38:47 +01:00