When xorriso is installed, iso9660 listing was done with `xorriso .. -lsl ..`
per dir recursively. It was unbearably slow on iso images with lots of subdirs.
For example, it took my machine 2 minutes to open debian-12.5.0-amd64-DVD-1.iso
which contains 2627 dirs. This commit makes use of `xorriso .. -find / -exec
lsdl ..` instead to list the whole directory tree in a single pass.
Also, parsing of xorriso output has been reworked and as a result such
previously missing items became visible in the listing:
- symlinks
- the boot catalog file
ClosesMidnightCommander/mc#196.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* (mc_tmpdir): use g_mkdtemp() to create temporary directory.
Make it name unique to avoid conflicts with other software such as
Distrobox container.
* (main): temporary directory has unique name from now. Remove it at exit.
If EOF has been read, don't attempt to seek past it.
Sync with GNU tar 21318f385627a30da5d92811dd80f70abbe80ee7.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
src/filemanager/ioblksize.h: Add updated test results and increase value
from 128KiB to 256KiB.
This was previously 128KiB and increasing to 256KiB was seen to increase
throughput by 10-20% when reading cached files on modern systems.
Sync with GNU coreutils fcfba90d0d27a1bacf2020bac4dbec74ed181028.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* (mcedit_arg_t): rename to edit_arg_t and move to src/editor/edit.h.
* (mcedit_arg_free): rename to edit_arg_free() and move to src/editor/edit.c.
* (mcedit_arg_vpath_new): rename to edit_arg_vpath_new(), move to src/editor/edit.c
and make public.
* (mcedit_arg_new): rename to edit_arg_new(), move to src/editor/edit.c
and make public.
* src/editor/editwidget.c: sync with new editor APIs.
* src/main.c: likewise.
* src/args.c: likewise.
* (mc_args_parse): show error in case of run MC as "mc -e" if MC is built
without builtin editor.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
mcedit: fix losing column position when navigating up/down.
Regression from 49bc0ddebf.
ClosesMidnightCommander/mc#194.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
When using an external editor (i.e. "Use internal edit" in the Configure
Options is unchecked) the environment variable EDITOR is used. However,
if $EDITOR contains a command line argument after the executable name,
these arguments are not processed properly, and the editor might not be
started at all.
How to reproduce: (Precondition: vi is available on the system)
1) On the command line, execute: export EDITOR="vi +" && mc
(the + argument should let vi start at the document's end instead of the
beginning).
2) Go to the Options menu -> Configuration -> uncheck "Use internal
edit".
3) Move the cursor to a file that is larger than a single screen (e.g.
ABOUT-NLS in mc's source directory).
4) Press F4 to start the external editor.
Result: Nothing visible happens
Expected result: vi is opened showing the end of the file ABOUT-NLS
The bug: my_system_make_arg_array() doesn't perform full-feature
parsing of the comman line.
* (str_tokenize): mew function based on history_tokenize_internal()
from GNU readline-8.2.
* (str_tokenize_word): mew function based on history_tokenize_word()
from GNU readline-8.2.
* (my_system_make_arg_array): reimplement using str_tokenize().
* (my_systemv_flags): use modified my_system_make_arg_array().
* (fork_child_tokens): new test for string tokenization.
* (fork_child_tokens2): likewise.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>