Steps to reproduce:
1. Create file owth a space in the name:
touch "a b"
There should no other files with name begins with "a" in the directory.
2. Press Shift-F4 to open editor
3. Press Shift-F2 to display dialog window "Save as..."
4. Press Esc+Tab to fill an input line
Result:
a\ b will appear in the edit field.
If you attempt to save the file, the back slash will be in the filename.
Expected result:
no any extra back slashes in the file name.
Soution: escape only '?', '*', and '&' symbols as described in the
manual page (see a11995e12b).
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.
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>
* (edit_search_cmd): use mc_config_history_get_recent_item().
* (mcview_continue_search_cmd): likewise.
mc_config_history_get_recent_item() is not implemented optimally yet.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* (tty_color_free_all_tmp): rename to tty_color_free_temp and call
g_hash_table_foreach_remove().
* (tty_color_free_all_non_tmp): rename to tty_color_free_all and call
g_hash_table_remove_all().
* (tty_color_free_all): remove.
* (tty_color_free_condition_cb): rename to tty_color_free_temp_cb and
simplify.
* (mc_skin_deinit): use changed API.
* (edit_free_syntax_rules): likewise.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
'mc -a' shows ^@ for most box drawing elements. Some drawing elements
only show as ^ as the @ is overwritten by other characters.
Revert "(mc_skin_lines_parse_ini_file): do not overwrite mc_tty_frm array in case of slow and ugly terminal."
This reverts commit 6d639ce942.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Get rig of intermediate storage of string patrs. Create result string directly.
Update comments. Update test.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>