If target file exists, MC overwrites that file without confirmation.
The bug has not been fixed comletely in
7d73ce1cbe.
Yet another test case:
1. Create files:
mkdir -p test1/1 test2/1
echo "1" > test1/1/file
echo "2" > test2/1/file
2. Run `mc test1 test2`.
3. Select directory "1" and press F6.
Result: "file" file is overwritten w/o confirmation.
Expected result: since the "file" file exists the confirmation dialog
must be shown.
The problem is: confirmation dialog requires context UI which was not
created in case of single directory move/rename operation.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Revert "(operate_single_file): make src and dest file name unescaping"
This reverts commit ef5d346dd9.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
If target file exists, MC overwrites that file without confirmation.
The bug was introduced in #3149.
How to reproduce:
1. Create two files: `touch a aa`.
2. Stay on "aa".
3. Make sure that Options/Confirmation.../Overwrite option is checked on.
4. Press Shift-F6
5. Edit the "to:" value to "a" ("a" file exists) and press Enter.
Actual result:
The "a" file is overwritten w/o confirmation.
Expected result:
Since the "a" file exists the confirmation dialog must be shown.
The problem is: confirmation dialog requires context UI which was not
created in case of single file rename operation.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
(edit_quit): do not call widget_select() while direct iterating editor
windows because it changes the window position in Z order. Collect
modified files in separate list.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* (create_panels_and_run_mc): rename to create_file_manager.
Move call of dlg_run() to do_nc().
* (create_panels): create file panels only. Move creation of
other widgets to create_file_manager().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Found by Clang 4.0.1.
edit.c:896:16: error: 'return' will never be executed [-Werror,-Wunreachable-code-return]
return 0x80000000UL;
^~~~~~~~~~~~
(whole my_type_of() is suspect)
Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Found by GCC 6.4.0.
panel.c: In function 'panel_reload':
panel.c:4188:40: warning: potential null pointer dereference [-Wnull-dereference]
if (IS_PATH_SEP (panel_cwd_path[0]) && panel_cwd_path[1] == '\0')
../../lib/global.h:132:26: note: in definition of macro 'IS_PATH_SEP'
#define IS_PATH_SEP(c) ((c) == PATH_SEP)
^
Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Remove SVR2 support
SVR2 was obsolete by 1986 and is no longer supported by anybody, and its
code was getting in the way of use of this module by Emacs, which has
its own 'read' function anyway.
* src/filemanager/mountlist.c: remove SVR2-specific code.
* m4.include/fsusage.m4: do not test for sys/filsys.h or set
STAT_READ_FILSYS.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
...of single directory within same file system.
First try rename the single file/dir. If case of unsuccess, use
copy+delete with directory size calclulation.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
...whitin same file system.
Initial commit: cleanup: WITH_FULL_PATHS is defined permanently.
Remove it.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
When libssh2_sftp_stat_ex(LIBSSH2_SFTP_STAT|LIBSSH2_SFTP_LSTAT) returns with
LIBSSH2_ERROR_SFTP_PROTOCOL (-31) and LIBSSH2_FX_PERMISSION_DENIED (3)
handle this error case like local stat/lstat() returns -EACCES.
Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Initial commit: extend error message with sftp session error.
When LIBSSH2_ERROR_SFTP_PROTOCOL (-31) occurs extend error message
with sftp last error for better failure tracking.
With #3269 patch further sftp protocol error message now looks like
SFTP Protocol Error 3 (-31).
Currently I have no nice solution for print relevant called libssh2 function too
I don't want pollute _to_gliberror() with contant strings all over.
sftp session error 3 means (file) permission denied.
From libssh2-1.5.0/include/libssh2_sftp.h
Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Before the rewrite e7ed071be7, the files
`INSTALL`, `UPGRADE`, and `REBUILD` were just text files with fixed
length of 39 characters. After the rewrite, the corresponding `rpm`
commands (of variable length) have been added.
If one of these files is being opened with the internal viewer, only the
first 39 characters (hardcoded in `mcrpmfs_list()`) are shown, e.g.
`INSTALL` (before the previous commit):
# Run this script to install this RPM p
The word 'script' was added inconsistently (compare with `UPGRADE` and
`REBUILD`) and can be removed. The `rpm` commands can be also removed:
they may fail to work if there is a whitespace in the path, so they
cannot always be simply copy&pasted; it's is still possible to "run" the
script files with Enter.
Signed-off-by: Anatoly Borodin <anatoly.borodin@gmail.com>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Initial step: apply callback to User and Group buttons
to show user and group list respectively using mouse.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Implement error message with follow buttons:
"Ignore" -- ignore current error;
"Ignore all" -- ignore current error, try chmod/chown of other selected
files, and ignore all following errors;
"Retry" -- retry chmod/chown operation;
"Cancel" -- cancel chmod/chown operation immediately.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Implement error message with follow buttons:
"Ignore" -- ignore current error;
"Ignore all" -- ignore current error, try chown of other selected files,
and ignore all following errors;
"Retry" -- retry chown operation;
"Cancel" -- cancel chown operation immediately.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
What steps will reproduce the problem?
1. Selected many files (12000 in my case).
2. Ctrl+x c (chmod) - changed mode to desired one.
3. MC started to change file modes but failed, it shows error popup
"Cannot chmod ... Operation not permitted (1)" for every file and waits
for a keypress.
MC shows error for every file in a list (12000 times), there is no
chance to cancel the whole operation, only to press any key 12000 times
or to kill MC.
The solution: implement error message with follow buttons:
"Ignore" -- ignore current error;
"Ignore all" -- ignore current error, try chmod of other selected files,
and ignore all following errors;
"Retry" -- retry chmod operation;
"Cancel" -- cancel chmod operation immediately.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>