Commit Graph

5823 Commits

Author SHA1 Message Date
Andrew Borodin
9ff91634f5 (panel_operate): refactoring: move file/dir operation to separate function.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2018-01-21 20:52:10 +03:00
Andrew Borodin
cd7db69e69 (panel_operate): refactoring: move single file/dir operation to separate function.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2018-01-21 20:52:10 +03:00
Andrew Borodin
5d98418133 (panel_operate): refactoring: move copy/move confirmation prompt to separate function.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2018-01-21 20:52:10 +03:00
Andrew Borodin
4aad3c524a (panel_operate): refactoring: move delete confirmation prompt to separate function.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2018-01-21 20:52:10 +03:00
Andrew Borodin
ead9063880 (panel_operate): refactoring: move check of single entry to separate function.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2018-01-21 20:52:10 +03:00
Andrew Borodin
edd67ef445 Ticket #3149: don't calculate directory size before rename or move...
...whitin same file system.

Initial commit: cleanup: WITH_FULL_PATHS is defined permanently.
Remove it.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2018-01-21 20:52:10 +03:00
Andrew Borodin
322d0804c7 (panel_operate_init_totals): fix directory size calculation.
Don't calculate directory size if object is not a directory.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-28 10:22:00 +03:00
Andrew Borodin
212207026b (panel_operate_init_totals): change the 'source' argument type...
...to get rid of vfs_path_t -> char * -> vfs_path_t conversion.
2017-12-28 10:22:00 +03:00
Andrew Borodin
f46c483e64 sftpfs: handle file operation errors.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-28 10:22:00 +03:00
Andrew Borodin
bcdb78c7a0 (sftpfs_close_file): return actual result of sftp file close operation.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-28 10:22:00 +03:00
Andrew Borodin
57be6c6c80 (sftpfs_waitsocket): refactor and use it for file and directory operations.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-28 10:21:50 +03:00
Andrew Borodin
a3b54e4003 Clarify usage of sftpfs_internal_stat() return value.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-28 10:18:08 +03:00
xenogenesi
77a273a0fd sftpfs: refactoring: move initialization of sftp stat operations to separate function.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-28 10:18:08 +03:00
xenogenesi
bbef777867 sftpfs: refactoring: move initialization of sftp operation to separate function.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-28 10:18:08 +03:00
Andrew Borodin
a63950710c (sftpfs_waitsocket): handle socket errors.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-28 10:18:08 +03:00
xenogenesi
d5f6f317b2 sftpfs: refactoring: move handling of socket errors to separate function.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-28 10:18:08 +03:00
Andrew Borodin
29b9c1d81d (sftpfs_fstat): use sftpfs_attr_to_stat().
* (sftpfs_attr_to_stat): make public.
  * (sftpfs_blksize): make static.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-28 10:18:08 +03:00
xenogenesi
8e8229931e sftpfs: refactoring: move obtaining of stat info from sftp attributes to separate function.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-28 10:18:08 +03:00
Andrew Borodin
b5cf04bc8d sftpfs: refactoring: move error check to separate function.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-28 10:18:08 +03:00
xenogenesi
a241f472bf Fix sftp error 31 (proto 4 and 2)
See https://midnight-commander.org/ticket/3406#comment:13
and https://midnight-commander.org/ticket/3406#comment:16.

Both _lstat and _stat need to handle NO_SUCH_FILE while
copying to a remote sftp.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-28 10:18:08 +03:00
Andreas Mohr
1866f9169f sftp handle LIBSSH2_FX_PERMISSION_DENIED as EACCES.
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>
2017-12-28 10:18:08 +03:00
Andreas Mohr
22076e2d8b Ticket #3406: sftpfs: fix -31 SFTP Protocol Error when transferring file via SFTP Link.
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>
2017-12-28 10:18:08 +03:00
Andrew Borodin
8d0c1c305a extfs: rpm: unset hardcoded irrelevant size of RPM scripts.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-24 09:44:24 +03:00
Anatoly Borodin
cf94e56acf Ticket #3865: extfs: rpm: INSTALL is truncated in the viewer
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>
2017-12-24 09:44:24 +03:00
Andrew Borodin
5eb4010b0d achown: add mouse support for permission buttons.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-10 09:19:15 +03:00
Andrew Borodin
aa36eb38ce achown: use Space key to invert current permission flag.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-10 09:19:15 +03:00
Andrew Borodin
fe63828b8b (advanced_chown_callback): button is already focused, don't focus it again.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-10 09:19:15 +03:00
Andrew Borodin
4943e52320 achown: handle some keys in permission button callback.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-10 09:19:15 +03:00
Andrew Borodin
48d85a42b4 achown: add callback for permission buttons
...to change behaviour of WButton objects.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-10 09:19:15 +03:00
Andrew Borodin
4b0edd90cf achown: clarify text positions.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-10 09:19:15 +03:00
Andrew Borodin
e9639ef526 achown: clarify location of user and group listbox window.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-10 09:19:15 +03:00
Andrew Borodin
4232ae211a Ticket #3148: add mouse support in 'Advanced chown' window.
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>
2017-12-10 09:19:15 +03:00
Andrew Borodin
24d9a4d4b1 Implement cancel of advanced chown of many files.
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>
2017-12-10 09:10:23 +03:00
Andrew Borodin
331a0b2cc9 Implement cancel of chown of many files.
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>
2017-12-10 09:10:23 +03:00
Andrew Borodin
6aafb1189b chmod: some optimization.
Get rid of extra conversion vfs_path_t -> char * -> vfs_path_t.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-10 09:10:22 +03:00
Andrew Borodin
34cbab7c2a Implement cancel of chmod of many files.
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>
2017-12-10 09:10:22 +03:00
Andrew Borodin
fd44219178 Ticket #3850: implement cancel of chmod/chown/achown of many files.
Initial step: sync of chmod, chown, achown source code:
some refactoring, renaming, reordering, type accuracy, #include clean up.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-10 09:10:22 +03:00
David Martin
26a2617256 Ticket #3879: i18n of argument type names in --help blocks.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-12-02 11:24:46 +03:00
Andrew Borodin
d1e4655d05 src/vfs/extfs/helpers/README: fix path to user scripts. 2017-11-17 16:01:30 +03:00
Andrew Borodin
1d2cbee320 Fix 2nd argument of gauge_show() call.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-11-17 16:01:30 +03:00
Andrew Borodin
3a3a6479d3 (do_link): minor optimization.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-11-17 16:01:30 +03:00
Andrew Borodin
55bafd40e5 (do_link): fix coding style.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-11-17 16:01:30 +03:00
Andrew V. Samoilov
1b47c88ff1 (message): Use "%s" to fix incorrect translation with printf pattern(s)
Signed-off-by: Andrew V. Samoilov <a.samoilov@gmail.com>
2017-11-17 16:01:29 +03:00
Andrew V. Samoilov
23dec99195 (parm_table[]): Make const to relocate 13624 bytes from .data to .text.
(init_globals): fstring is enough for "%d.%d".
(*): Remove nmbd code.

Signed-off-by: Andrew V. Samoilov <a.samoilov@gmail.com>
2017-11-17 16:01:29 +03:00
Andrew V. Samoilov
62eca8ebde (_interpret_node_status): Remove dead code.
Signed-off-by: Andrew V. Samoilov <a.samoilov@gmail.com>
2017-11-17 16:01:29 +03:00
Andreas Mohr
d2cfb712b0 (mcview_mouse_callback): fix typo.
Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-11-17 16:01:29 +03:00
Andreas Mohr
20398ece6e (jobs_fill_listbox): cleanup pointer-compare warning.
Found by GCC 7.1.0.

boxes.c:431:22: error: comparison between pointer and zero character constant [-Werror=pointer-compare]
     if (state_str[0] == '\0')
                      ^~
boxes.c:431:9: note: did you mean to dereference the pointer?
     if (state_str[0] == '\0')
         ^

Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-11-17 16:01:29 +03:00
Andrew Borodin
a4518eed9e (set_panel_filter_to): rename variable and use MC_PTR_FREE macro.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-11-17 16:01:23 +03:00
Andrew Borodin
8bf7e69134 (set_panel_filter): fix coding style.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-11-17 15:59:44 +03:00
Andrew Borodin
e185cb1e8c (tar_open_archive): initialize variable.
../../../../src/vfs/tar/tar.c: In function 'tar_open_archive':
../../../../src/vfs/tar/tar.c:805:69: error: 'h_size' may be used uninitialized in this function [-Werror=uninitialized]

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-11-17 15:59:44 +03:00
Andrew Borodin
b5012c8e9d (tar_read_header): move checksum to separate function.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-11-17 15:59:44 +03:00
Andrew Borodin
7772f00aab Ticket #3780: code clean up before 4.8.20 release.
Direct include <limits.h> for MB_LEN_MAX.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-11-17 15:59:44 +03:00
Andrew Borodin
eb9b1407c8 (ftpfs_correct_url_parameters): clean up always true condition.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-10-29 20:23:04 +03:00
Cristian Rigamonti
3ab6ef7aa7 Ticket #3869: fix of retrieve password from .netrc.
(ftpfs_correct_url_parameters): fix condition.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-10-29 20:23:04 +03:00
Sergey Naumov
fc68bd7aa3 Ticket #3867: mceditor: add %c (cursor offset from BOF) support for macros.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-10-28 18:56:32 +03:00
Andrew Borodin
b11c84dbb7 Document the %f macro related to mcedit. 2017-10-28 18:46:14 +03:00
Andrew Borodin
f89fff139c Fix %f macto in mcedit user menu.
In mcedit user menu the %f macro should match the file name opened in
mcedit not the file name is selected in the panel.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-10-28 18:46:14 +03:00
Andrew Borodin
680678ef72 Ticket #3861: fix %f macro in mcedit user menu.
Initial step: move usermenu.[ch] files from src/filemanager/ directory
to src/ one.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-10-28 18:46:08 +03:00
Andrew Borodin
1221900262 Ticket #3855: mcview: search doesn't ask about starting over
Broken in 178628e67f.

(mcview_do_search): do search in last chunk if data source is the
growing buffer only.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-09-26 12:56:05 +03:00
Yury V. Zaytsev
0fec3ef449 Ticket #3852: subshell - fix broken tcsh 6.20+ cd escaping
Reported-by: Anatoly Borodin <anatoly.borodin@gmail.com>
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2017-09-09 11:16:46 +02:00
Yury V. Zaytsev
5ee452eba9 Ticket #3843: mcedit - fix broken encoding into UTF-8 for 8-bit displays
Reported-by: Lőrinczy Zsigmond <lzsiga@freemail.c3.hu>
Reviewed-by: Egmont Koblinger <egmont@gmail.com>
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2017-09-09 08:48:21 +02:00
Andrew Borodin
443b92e16a Ticket #3846: fix crash on slow startup...
...because of access to free'd viewer in the idle hooks execution.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-08-07 13:44:22 +03:00
Andrew Borodin
d5b0417cb2 mcview: minor refactoring.
* (mcview_growbuf_read_all_data): new function.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-06-28 08:31:02 +03:00
Andrew Borodin
1453f41a58 mcviewer: fix goto offset.
* (mcview_dialog_goto): do read data from pipe in case of
MC_VIEW_GOTO_OFFSET_DEC and MC_VIEW_GOTO_OFFSET_HEX.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-06-28 08:31:02 +03:00
Andrew Borodin
cc95f6f654 Ticket #3826: mcview: goto doesn't grow file as much as needed.
Goto decimal/hexadecimal offset doesn't grow the file if necessary,
rather stops at an earlier offset.
Goto percent doesn't work either. It's trickier because no matter what
the percent value is, it'd need to read the entire contents.
Goto line number works as expected.

* (mcview_dialog_goto): read all data from pipe in case of
MC_VIEW_GOTO_PERCENT.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-06-28 08:31:02 +03:00
Andrew Borodin
178628e67f Ticket #3819: mcview: search doesn't grow file as much as needed.
(mcview_do_search):
  * In main search loop: don't break in case of MC_SEARCH_E_NOTFOUND
error. Make next iteration until buffer can be grown.
  * Make search in the last data chunk.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-05-27 19:13:47 +03:00
Yury V. Zaytsev
f0414be51d Zero struct stat tv_nsec (if supported) whenever st is filled manually
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2017-05-17 21:18:58 +02:00
Andrey Gursky
243cdc1755 Ticket #3821: initialize struct stat st_[acm]tim.tv_nsec when present
struct stat in libc for Linux kernel contains few fields more since 14+
years [1]. From bits/stat.h:

```
        struct timespec st_atim;		/* Time of last access.  */
        struct timespec st_mtim;		/* Time of last modification.  */
        struct timespec st_ctim;		/* Time of last status change.  */
    # define st_atime st_atim.tv_sec	/* Backward compatibility.  */
    # define st_mtime st_mtim.tv_sec
    # define st_ctime st_ctim.tv_sec
```

The conventional fields became an alias.

POSIX.1-2008 made struct stat st_[acm]tim mandatory [2].

OS takes care to initialize struct stat properly [3]. By not using an OS
syscall or a libc wrapper to fill struct stat, we have to take care of
initializing all fields (or at least those being used later) explicitly.

[1]: https://www.sourceware.org/ml/libc-alpha/2002-12/msg00011.html
[2]: https://www.sourceware.org/ml/libc-alpha/2009-11/msg00102.html
[3]: https://www.sourceware.org/ml/libc-alpha/2002-12/msg00013.html

Fixes: file timestamps not preserved (https://mail.gnome.org/archives/mc-devel/2017-April/msg00000.html)
Reported-By: Nerijus Baliunas <nerijus@users.sourceforge.net>
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2017-05-17 21:18:58 +02:00
Egmont Koblinger
27c30e8f5f Ticket #3817: mcview: fix read of filtering data from pipe.
(mcview_eol): grow buffer every time when it really needed.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-05-17 13:22:53 +03:00
Egmont Koblinger
5e238fae95 Ticket #3783: mcview: fix interpretation of invalid utf-8 symbols.
(mcview_get_utf): report invalid utf-8 as negative integer.

The bug was introduced in 4d65a731c2.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-05-07 20:50:27 +03:00
Witold Filipczyk
49898835fd Ticket #2297: show empty directories in incremental tar archives.
How to reproduce:
1. Create two tar files with empty dir:
$ mkdir -p dir/dir1; mkdir dir/dir2; touch dir/dir1/file
$ tar cf normal.tar dir/
$ tar cf incremental.tar -g incremental.snap dir/
2. Press Enter to enter to normal.tar.
Result: normal.tar contains dir/dir2, incremental.tar doesn't.
Expected result: incremental.tar contains dir/dir2.

This patch also fixes Ticket #3709: Wrong directories owner for tar
--numeric-owner -g.

How to reproduce:
As root:
 # mkdir -p TEST/TEST2
 # echo aaa > TEST/TEST2/aaa.txt
 # chown 10000:10000 TEST
 # chown 10001:10001 TEST/TEST2
 # chown 10002:10002 TEST/TEST2/aaa.txt

 # tar --numeric-owner -zcf test1.tar.gz TEST
 # tar --numeric-owner -g test.inc -zcf test2.tar.gz TEST

and now view these tarballs with long view. Directories of test2.tar.gz
have owner root instead of 10000 or 10001, but if you untar them using
tar -xvf directories owners are correct

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-05-04 09:48:22 +03:00
Mooffie
7fba743d77 Ticket #3816: F10 doesn't work in QuickView.
Signed-off-by: Mooffie <mooffie@gmail.com>
2017-04-24 18:36:21 +03:00
Mooffie
2edb0052fd TreeView should mute the command-line.
Because it's a recipe for disaster to mix, for example, DEL for deleting a
directory and BACKSPACE for deleting the previous char.

Signed-off-by: Mooffie <mooffie@gmail.com>
2017-04-24 18:31:38 +03:00
Mooffie
e90eea874d QuickView shouldn't consume all keys.
The QuickView should return MSG_HANDLED, in its MSG_KEY, *only* for keys it has
indeed handled.

We move the "don't pass any chars to command line" responsibility to the main
dialog instead.

(We're reverting commit 8469c13f38 here.)

Signed-off-by: Mooffie <mooffie@gmail.com>
2017-04-24 18:31:38 +03:00
Mooffie
16c9ec0108 Factor out handle_cmdline_enter().
Signed-off-by: Mooffie <mooffie@gmail.com>
2017-04-24 18:31:38 +03:00
Mooffie
12d6ead7fc Ticket #3815: Factor out is_cmdline_mute().
Signed-off-by: Mooffie <mooffie@gmail.com>
2017-04-24 18:31:25 +03:00
Andrew Borodin
ff1510de1f File panel: unification of terminology.
Use 'list(ing) format' instead of 'list(ing) type' and 'list(ing) mode'.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-04-24 16:16:27 +03:00
Andrew Borodin
b56a77e02f Refactoring: handle panel listing mode switch in the panel level
...instead of top level.

Rename and move main/PanelListingSwitch keybind to panel/ListingSwitch.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-04-24 16:16:27 +03:00
Andrew Borodin
9612df677a Refactoring: ret rid of set_basic_panel_listing_to().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-04-24 16:16:27 +03:00
Andrew Borodin
34aaab47ba (listing_cmd): reset panel filter.
When change panel mode to listing one, in addition to reset of
panelization, reset panel filter too.

Optimization: get rid of double panel reload.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-04-24 16:16:27 +03:00
Andrew Borodin
edb51c4457 Ticket #3810: keep panelization while switching panel listing mode.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-04-23 11:17:10 +03:00
Mooffie
24de5eb1df Ticket #3813: Filter isn't cleared when entering empty string.
Signed-off-by: Mooffie <mooffie@gmail.com>
2017-04-21 17:25:53 +03:00
Mooffie
d1062fc47c do_panelize_cd() is missing call to panelize_absolutize_if_needed().
Whenever we populate a panelized panel, we have to call
panelize_absolute_if_needed().

Note: do_panelize_cd() implements the "Restore last panelization" command
(see #3767).

Note: We move the `panel->is_panelized = TRUE` line to the bottom for stylistic
reason: to make it parallel to the other places where we have similar code. We
may factor out this common code in the future.

Signed-off-by: Mooffie <mooffie@gmail.com>
2017-04-18 20:09:44 +03:00
Mooffie
92eea68251 Introduce panelize_absolutize_if_needed(), plus documentation.
Instead of imperfectly duplicating code we create a function.

Signed-off-by: Mooffie <mooffie@gmail.com>
2017-04-18 20:09:44 +03:00
Mooffie
bb45f84071 Fix assumptions of "dir.list->len == 0".
`dir.list->len` can't be zero because we're always checking it after a call to
dir_list_init(), which populated the list with "..".

Therefore any code that checks for zero is either superfluous or a bug.

As for the modifications in find.c:

  - The bug caused us not to call panel_clean_dir(), and this caused:
    - Memory leaks resulting from calling dir_list_init() without
      dir_list_clean() first.
    - The "total size" of selected files (for example) wasn't getting cleared.

  - We remove the `if (list->len != 0)` around the
    `current_panel->is_panelized = TRUE; ...` for several reasons:
    - The code isn't called anyway if no files were found.
    - Conceptually, there's no point in distinguishing an empty listing from an
      empty panelized listing.
    - It's the de-facto current behavior (as `list->len != 0` always)

Signed-off-by: Mooffie <mooffie@gmail.com>
2017-04-18 20:09:44 +03:00
Andreas Mohr
c9f058e65b Ticket #2942: External panelize: opening a file with an absolute path fails.
We fix the detection of absolute paths in the panel's list. `list[0]` is "..",
so we need to inspect `list[1]`.

Signed-off-by: Mooffie <mooffie@gmail.com>
2017-04-18 20:09:34 +03:00
Denys Vlasenko
f0d3241ecb Ticket #3805: fix --help option to show correct syntax for editor, viewer and mcdiff
Before the patch: --help shows the same text for all tools, only "mc"
is replaced by tool name. For example, "mcedit --help" says:

        Usage:
          mcedit [OPTION...] [+number] [this_dir] [other_panel_dir]
         +number - Set initial line number for the internal editor

which is wrong: mcedit does not take [this_dir] [other_panel_dir]
syntax, that's mc syntax.

After the patch, each tool has its own syntax string shown.
"Usage:" message for each tool is as follows now:

  mc [OPTION...] [this_dir] [other_panel_dir]

  mcedit [OPTION...] [+lineno] file1[:lineno] [file2[:lineno]...]

  mcview [OPTION...] file

  mcdiff [OPTION...] file1 file2

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-04-15 09:49:29 +03:00
Mooffie
a6cd7c9f45 extfs: rpm: use printf instead of echo, when retrieving fields.
We switch to using 'echo' instead of 'printf', for the reason described in a
previous commit.

This time, however, we don't do this in order to preserve the value of the
DESCRIPTION field (because we retrieve it using some other command). We do this
for two reasons:

* As chance would have it, we have the string '\c' in our DESCRIPTION. It turns
  out that Dash's echo interprets '\c' to mean the end of the data[1], so
  fields stored in $AllTAGS after DESCRIPTION aren't seen by our sed script
  (resulting in the helper not reporting a few file entries).

* We also have '\n' in DESCRIPTION. This would translate, by echo, into
  newline, failing the naive sed script.

[1] See "\c as in SYSV echo - abort all processing..." in the source code of
    Dash: https://github.com/gioele/dash/blob/master/src/bltin/printf.c

Signed-off-by: Mooffie <mooffie@gmail.com>
2017-03-09 01:03:42 +02:00
Mooffie
25aa5db3fd extfs: rpm: wrap variable in quotes.
Our goal is to replace the 'echo' with 'printf' on this line, for the reason
described in the previous commit. But before we do this we need to wrap one
variable in quotes.

This preliminary step does not affect the output of the helper.

As for using "tr \n ' '": this mimics the current behavior (when using no
quotes around the variable, newlines are converted to spaces by the shell; now
that we do have quotes we need to do this conversion ourselves). An alternative
is to tweak the sed script to be smarter, but it turns out it's not a simple
task.

Signed-off-by: Mooffie <mooffie@gmail.com>
2017-03-09 01:03:41 +02:00
Mooffie
95f2f14357 extfs: rpm: use printf instead of echo, to calculate DESCRIPTION length.
Out test input intentionally contains weird characters in the DESCRIPTION field
(see the file 'test.spec'[1]).

It turns out that backslash sequences, as in our DESCRIPTION field, are
processed by the 'echo' command in some shells (i.e., Dash). In other words,
'echo' can't be used to print arbitrary data verbatim. Indeed, the standard
says[2] that "if any of the operands contain a <backslash> character, the
results are implementation-defined". You can see the problem by running:

    $ echo "one \\a two"

under both Bash and Dash: you'll get different results.

The solution: we replace 'echo' with 'printf'.

[1] https://midnight-commander.org/browser/tests/src/vfs/extfs/helpers-list/misc/rpm/test.spec#L34
[2] http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html

Signed-off-by: Mooffie <mooffie@gmail.com>
2017-03-09 01:03:41 +02:00
Mooffie
ac23a4807c Pressing <right> and <left> in hotlist dialog doesn't refresh it.
Signed-off-by: Mooffie <mooffie@gmail.com>
2017-02-26 12:38:39 +02:00
Andrew Borodin
f34363f93b (make_symlink): add missing space in error message.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-02-26 08:04:15 +03:00
Mooffie
1f121b7674 Ticket #3754: Help viewer doesn't handle tabs correctly.
Upon seeing a tab, the help viewer effectively pushes the *current* word
forward.

Instead, it should first finish handling the current word (that is, print it on
screen) and only then adjust the column.

Signed-off-by: Mooffie <mooffie@gmail.com>
2017-02-23 19:35:56 +02:00
Mooffie
256c3f1838 Improve comment for dx variable
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
Signed-off-by: Mooffie <mooffie@gmail.com>
2017-02-19 21:57:30 +01:00
Egmont Koblinger
fa951f8c5d Ticket #3774: mcedit - fix mouse active area for maximize / close buttons
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
Signed-off-by: Egmont Koblinger <egmont@gmail.com>
2017-02-19 19:47:18 +01:00
Mooffie
f6ceb8d16d WEdit shouldn't draw frame over buttonbar.
When dragging a framed WEdit with the mouse, the frame is painted over the
buttonbar. This happens in two cases: when pressing the mouse down, and when
releasing it.

The patch fixes the problem by calling edit_update_screen() in these two cases.
This paints the buttonbar over the frame.

(The problem doesn't occur when moving the frame with the keyboard because
edit_callback(msg==MSG_KEY) calls edit_update_screen() right after handling the
key.)

Signed-off-by: Mooffie <mooffie@gmail.com>
2017-02-19 00:04:38 +02:00
Mooffie
0481b8e790 WEdit shouldn't handle mouse events of overlapping buttonbar.
Signed-off-by: Mooffie <mooffie@gmail.com>
2017-02-19 00:04:38 +02:00
Mooffie
6273b46bb5 (edit_window_list): simplify the listbox selector.
We use the new run_listbox_with_data().

Signed-off-by: Mooffie <mooffie@gmail.com>
2017-01-29 23:32:13 +02:00
Sergei Trofimovich
bc8eb09256 vfs/tar/tar.c: add makedev() declaration
Noticed as a build failure on gentoo/glibc-2.24 as:

      CCLD     mc
    ./.libs/libinternal.a(tar.o): In function `tar_fill_stat':
    /home/slyfox/dev/git/mc/src/vfs/tar/tar.c:428: undefined reference to `makedev'
    collect2: error: ld returned 1 exit status

The change uses "lib/unixcompat.h" to pull
'makedev()' declaration from proper header.

Signed-off-by: Sergei Trofimovich <siarheit@google.com>
2017-01-22 17:05:39 +00:00
Andrew Borodin
e9fd11bfcd Update copyright years.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-22 19:12:55 +03:00
Andrew Borodin
b9085cc1c8 (tar_fill_stat): add omitted breaks.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-22 18:45:56 +03:00
Andrew Borodin
28ca14d73a Aggressive use of whitespace() and whiteness() macros.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-22 18:44:22 +03:00
Andrew Borodin
e0c02c9c77 WCheck, WRadio: send MSG_MOTIFY without parameter.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-22 18:44:22 +03:00
Fabian Homborg
4e74d7d255 Fish shell integration: ignore mc's prompt in history.
Fish does something equivalent to bash's "HISTCONTROL=ignoreboth" by default,
so simply prefixing a command with a space will let it be ignored.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-22 18:44:22 +03:00
Andreas Mohr
238d3ac53c Cleanup comma compiler warnings.
Found by Clang 3.9.0.

Signed-off-by: Andreas Mohr <and@gmx.li>
2017-01-22 18:44:22 +03:00
Andrew Borodin
04c1eb6160 (sftpfs_open_file): GCC zero initialization bug workaround.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-22 18:44:22 +03:00
Andreas Mohr
8f304f558d Cleanup maybe-uninitialized compiler warnings.
Found by GCC 6.2.0.

Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-22 18:44:22 +03:00
Andrew Borodin
d078ae4713 option_auto_syntax: change type to gboolean.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-22 18:44:22 +03:00
Andrew Borodin
cd3a5ee373 src/setup.c: minor refactoring of main options load.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-22 18:44:22 +03:00
Andrew Borodin
8b14798cc4 setup: split integer and boolean options.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-22 18:44:22 +03:00
Andrew Borodin
c4550374b2 Change type from int to gboolean for variables controlled by checkboxes.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-22 18:44:22 +03:00
Andrew Borodin
5e2f4a8069 WCheck: change type of 'state' from int to gboolean.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-22 18:44:22 +03:00
Jiri Tyr
4310b066e2 Ticket #3750: Adding support for RPM transaction scripts.
Adding support for PRETRANS, PRETRANSPROG, POSTTRANS and
POSTTRANSPROG RPM tags which allow the relevant scripts to be visible
in the INFO/SCRIPTS vfs directory.

Signed-off-by: Jiri Tyr <jiri.tyr@gmail.com>
Signed-off-by: Mooffie <mooffie@gmail.com>
2017-01-16 17:01:31 +02:00
Mooffie
97bc2af3b2 extfs: rpm: make it testable.
The way we make this helper testable is a bit different than with other
helpers:

While in other helpers we make it possible to override just one or two
variables, here we make it possible to inject a code snippet into it. This is a
more powerful approach which lets us override even functions, as will be shown
in a following patch.

(As for relocating the "AllTAGS=..." line: all non-declarative code needs to be
moved past our new injection point, or else this code won't be affected by the
injection. BTW, the "$1" on that line isn't used; a vestige from old days.)

Signed-off-by: Mooffie <mooffie@gmail.com>
2017-01-16 13:58:07 +02:00
Mooffie
65ebc83f88 Ticket #3751: extfs: rpm: introduce the $RPM_QUERY_FMT variable.
This minor refactoring will enable us to make this helper testable.

Instead of doing:

    $RPM -qp --qf a b c

we are now doing:

    $RPM_QUERY_FMT a b c

In a future patch we'll then be able to point $RPM_QUERY_FMT to some mock
program.

Signed-off-by: Mooffie <mooffie@gmail.com>
2017-01-16 13:58:07 +02:00
Mooffie
05661eda1d Ticket #3757: cannot show more than one column in user defined listing mode.
In user-defined listing mode, the format string lets us specify how many
columns to display. E.g., for 3 columns:

    "half 3 type name | size | perm"

However, parse_panel_size() reads this digit only when `panel->list_type ==
list_brief`. We remove this check.

Incidentally, the assignment there to `panel->brief_cols` isn't needed. In
list_brief mode, `panel->brief_cols` is already set.

We also fix a related problem in the mouse handler: it erroneously assumes
`panel->list_cols > 1` happens only in list_brief mode.

(These bugs were introduced in commit fb474bc1c157.)

Signed-off-by: Mooffie <mooffie@gmail.com>
2017-01-16 00:23:03 +02:00
Andrew Borodin
aae43d362f (vfs_adjust_stat): new VFS API, currently used to calculate st_blocks.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-11 14:52:35 +03:00
Andrew Borodin
bf40acf420 Clarify usage of st_rdev. Use it if HAVE_STRUCT_STAT_ST_RDEV is defined.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-11 14:52:35 +03:00
Andrew Borodin
d1c2c2d47e ftpfs: define st_blksize as equal to 64K.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-11 14:52:35 +03:00
Andrew Borodin
21fd0c3fec fishfs: define st_blksize as equal to 64K.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-11 14:52:35 +03:00
Andrew Borodin
560ca526bd tarfs: define st_blksize as equal to 8K.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-11 14:52:35 +03:00
Andrew Borodin
110f4eae60 sftpfs: (sftpfs_fix_filename): refactoring: return length of result.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-11 14:52:35 +03:00
Andrew Borodin
ffe49251f7 sftpfs: minor optimization.
* (sftpfs_opendir): get rid of extra calculation of file name length.
  * (sftpfs_open_file): likewise.
  * (sftpfs_readlink): likewise.
  * (sftpfs_symlink): likewise.
  * (sftpfs_rename): likewise.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-11 14:52:35 +03:00
Andrew Borodin
95556224a6 sftpfs: define st_blksize and st_blocks.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2017-01-11 14:52:35 +03:00
Mooffie
8b65c36d3f Ticket #3747: extfs: hp48: make the code more readable.
Whitespace tweaking here. There's no change in the code itself except for
using '%c' in the first printf too, to make it like the second printf.

Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2017-01-01 17:29:59 +04:00
Mooffie
501a3122ff Ticket #3747: extfs: hp48: fix float truncation.
Some printf implementations can't process with %d anything other than integers.

We solve this by re-using the awk snippet for this purpose. This makes
hp48_retsize() unecessary. And hp48_retdir() too.

(The "case" statement was left unindented to, hopefully, not affect diff's
output much. This aesthetic issue will be fixed in a following patch.)

Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2017-01-01 17:29:59 +04:00
Mooffie
4557ee3c7a extfs: hp48: make it testable. 2016-12-25 10:06:23 +04:00
Mooffie
c91476ac4a Ticket #3729: extfs: hp48: fix date format.
Use "MM-DD-YYYY hh:mm" instead of "Mon DD YYYY hh:mm".

Note: we assign to $NOW at the top-level, not inside hp48_parser(), because the
communication is slow and we don't want each recursive call to hp48_parser() to
potentially print a different time.
2016-12-25 10:06:23 +04:00
Mooffie
019ab5c012 extfs: hp48: misc fixes.
Two bugs fixed:

* "printf -rw-r--r--" made printf complain about invalid option (although
  changing it to "printf -- -rw-r--r-" is possible, we don't know how portble
  this is).

* Quotes around $INPUT defeat the purpose of the function calls (botched in
  commit 61b4642af4).
2016-12-25 10:06:23 +04:00
Mooffie
4d04aa40b0 extfs: hp48: documentation: explain the reply to the DIRECTORY command.
It was not at all easy to find a sample reply on the internet (the one found
was in a screenshot actually), so we record it here.
2016-12-25 10:06:23 +04:00
Mooffie
22846550d3 extfs: uarc: make it testable. 2016-12-25 10:06:23 +04:00
Mooffie
61eb5cca37 Ticket #3729: extfs: uarc: fix date format.
Use "MM-DD-YYYY hh:mm" instead of "Mon DD YYYY hh:mm".
2016-12-25 10:06:23 +04:00
Mooffie
057ba6d73a extfs: uace: make it testable. 2016-12-25 10:06:22 +04:00
Mooffie
5225a1d21b extfs: uace: documentation: clarify versions issue. 2016-12-25 10:06:22 +04:00
Mooffie
08a8621fc5 extfs: uace: print the correct file size.
As a comment in that file notes: 3'rd column is the compressed size, 4'th
column is the actual size.
2016-12-25 10:06:22 +04:00
Mooffie
105501ba9c Ticket #3729: extfs: uace: fix date format.
Use "MM-DD-YYYY hh:mm" instead of "Mon DD YYYY hh:mm".
2016-12-25 10:06:22 +04:00
Andrey Gursky
0075944f1e FISH VFS: generate timestamps with nanosecond precision for touch.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-12-25 08:46:10 +03:00
Andrew Borodin
53a1d52ed9 (fish_utime): avoid buffer overflow: allocate buffer for command dynamically.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-12-25 08:46:10 +03:00
Andrey Gursky
4c418047b2 Ticket #3575: preserve timestamps with nanosecond precisions during file copy
MC truncates timestamps during file copy and drops sub-second precision.

Make use of utimensat(), introduced in Linux kernel 2.6.22 (and since
2.6.26 compatible with POSIX-1.2008).

Signed-off-by: Andrey Gursky <andrey.gursky@e-mail.ua>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-12-25 08:46:10 +03:00
Mooffie
fad265c5bd Ticket #3744: extfs: u7z: make it testable. 2016-12-24 09:58:53 +04:00
Mooffie
f84c14bbce Ticket #2707: extfs: u7z: print() cleanup.
AWK's print() already writes OFS between expressions.
2016-12-24 09:45:59 +04:00
Mooffie
052bdec1ee Ticket #2707: extfs: u7z: sed portability.
'\s' is not portable.
2016-12-24 09:45:59 +04:00
Mooffie
5c3e999845 Ticket #2707: extfs: u7z: handle missing size.
The uncompressed size may be missing in 7z's output (gods know why). We use the
compressed size in this case.
2016-12-24 09:45:58 +04:00
Mooffie
02051d6090 Ticket #2707: extfs: u7z: make the code more readable. 2016-12-24 09:45:58 +04:00
Yury V. Zaytsev
66ae617b77 extfs: fix whitespace soup in u7z helper
Signed-off-by: Yury V. Zaytsev <yury.zaytsev@moneymeets.com>
2016-12-24 09:45:58 +04:00
Yury V. Zaytsev
6938f1a52d Ticket #2707: extfs u7z helper - fix listing 7z archives w/o datetime info
7z archives can have entries without datetime info (7z a -mtm- ...). Currently,
u7z helper skips these entries. Fix this by detecting them and obtaining
archive file datetime using stat command with fallback to ls -lan.

Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Yury V. Zaytsev <yury.zaytsev@moneymeets.com>
2016-12-24 09:45:58 +04:00
Mooffie
b8f7018725 extfs: urar: don't invoke 'rar' when running under the tester.
We want to prevent messages printed to STDERR when running the tester on
systems where rar is not installed.

(Yes, we could compress this new code to just one line, but...)

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-12-20 09:37:22 +03:00
Mooffie
f2c8479a50 extfs: lslR: make it testable.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-12-16 10:14:41 +03:00
Mooffie
c88517b055 extfs: urar: make it testable.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-12-16 10:14:41 +03:00
Mooffie
88f3aeef24 extfs: uzip: make it testable.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-12-16 10:14:41 +03:00
Mooffie
66b43a6670 extfs: uzoo: make it testable.
Note how easy it is to make the helpers testable. MC_TEST_EXTFS_LIST_CMD is
explained in README.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-12-14 13:15:58 +03:00
Mooffie
12812968c0 extfs: fix documentation of allowed date formats.
We also improve the documentation of vfs_parse_filedate(), which does the
actual work.

Note that in the user-facing documentation (extfs/helpers/README) there are
two things we prefer *not* to mention about vfs_parse_filedate's ability:

* Accepting the format "MM-DD-YY hh:mm[:ss]", as this two-digit year is
  more likely to confuse readers of such dates.

* Accepting '/', instead of '-', as the separator in MM-DD-YYYY. (Considering
  that some scripts do use '/', maybe we should mention it?)

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-12-13 13:14:43 +03:00
Andrey Tataranovich
752a7e4454 Ticket #3693: fix listing of zoo archive entries.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-12-13 13:14:43 +03:00
Andrew Borodin
8550044635 Ticket #3731: add new MSG_CHANGED_FOCUS message.
This message is sent to widgets'owner when widget's focus state is
changed.

Find file dialog: fix initial draw of ignore directories input line.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-12-10 18:31:03 +03:00
Mooffie
5f73bd0ff3 Ticket #3735: mcedit: show backwards-search error messages.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-12-04 10:14:37 +03:00
Andrew Borodin
0701bca6e3 Ticket #3710: don't parse "window-state-char" and "window-close-char" as colors.
The bug: in skin files, the "[editor]" section's "window-state-char" and
"window-close-char" (whose values, as the name implies, are single
characters) are parsed as color fg+bg+attr, and an ncurses/slang
colorpair is allocated for each.

The bug fix: move "window-state-char" and "window-close-char" keys from
"[editor]" section to "[widget-editor]" one.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-12-04 10:01:57 +03:00
Andrew Borodin
496abc0e1f Rename mc_config_get_profile_root() to mc_get_profile_root()
...and move it out from lib/mcconfig.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-12-04 09:37:50 +03:00
Mooffie
239a8d0117 Ticket #3684: replace $MC_HOME with $MC_PROFILE_ROOT, a better "profile" mechanism.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-29 11:10:19 +03:00
Mooffie
b4d5ed514d Ticket #3716: various checkboxes not responding.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-24 10:23:53 +03:00
Mooffie
e68f105e0e Ticket #3718: Options/Layout/Equal split gets reverted.
WRadio sends MSG_NOTIFY with MSG_KEY as parameter to it's owner
when selected item is changed.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-24 09:41:07 +03:00
Boruch Baum
98f0c3faba src/filemanager/mountlist.c: clarify comments.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-21 13:12:55 +03:00
Andrew Borodin
9a39e35dc3 Use g_assert() instead of assert(3).
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-21 13:12:55 +03:00
Andrew Borodin
9e226f130f Clarify startup.
If mc isn't run as file manager, don't resolve the "other_dir" panel
option.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-21 13:12:55 +03:00
Andrew Borodin
bea83a1189 (panel_callback) [MSG_FOCUS]: don't redraw panel here.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-21 13:12:55 +03:00
Andrew Borodin
c1cf7e81b9 (setup_panels): fix location of right panel.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-21 13:12:55 +03:00
Andrew Borodin
c0cc0546d1 (edit_move_block_to_left): reduce variable scope.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-21 13:12:55 +03:00
Andreas Mohr
c5efd8a1e1 (edit_move_block_to_left): cleanup -Wunsafe-loop-optimizations.
edit.c: In function 'edit_move_block_to_left':
edit.c:1652:13: warning: cannot optimize possibly infinite loops [-Wunsafe-loop-optimizations]
             for (i = 1; i <= del_tab_width; i++)
             ^~~

Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-21 13:12:54 +03:00
Andreas Mohr
3b1183571a (quit_cmd_internal): cleanup -Wformat-signedness warning.
midnight.c: In function 'quit_cmd_internal':
midnight.c:1027:31: error: format '%zd' expects argument of type 'signed size_t', but argument 4 has type 'size_t {aka long unsigned int}' [-Werror=format=]
                               "You have %zd opened screens. Quit anyway?", n), n);
                               ^
midnight.c:1026:31: error: format '%zd' expects argument of type 'signed size_t', but argument 4 has type 'size_t {aka long unsigned int}' [-Werror=format=]
                     ngettext ("You have %zd opened screen. Quit anyway?",
                               ^

Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-21 13:12:54 +03:00
Andreas Mohr
2b265834ab (info_show_info): cleanup -Wformat-signedness warning.
info.c: In function 'info_show_info':
info.c:193:29: error: format '%X' expects argument of type 'unsigned int', but argument 2 has type 'int' [-Werror=format=]
             tty_printf (" (%Xh)", myfs_stats.type);
                             ^

info.c:239:51: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'long unsigned int' [-Werror=format=]
             tty_printf (ngettext (" (%ld block)", " (%ld blocks)",
                                                   ^
info.c:239:35: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'long unsigned int' [-Werror=format=]
             tty_printf (ngettext (" (%ld block)", " (%ld blocks)",
                                   ^

info.c:259:23: error: format '%X' expects argument of type 'unsigned int', but argument 2 has type 'int' [-Werror=format=]
         tty_printf (_("Location:   %Xh:%Xh"), (int) st.st_dev, (int) st.st_ino);
                       ^
info.c:259:21: note: in expansion of macro '_'
         tty_printf (_("Location:   %Xh:%Xh"), (int) st.st_dev, (int) st.st_ino);
                     ^
info.c:259:23: error: format '%X' expects argument of type 'unsigned int', but argument 3 has type 'int' [-Werror=format=]
         tty_printf (_("Location:   %Xh:%Xh"), (int) st.st_dev, (int) st.st_ino);
                       ^
info.c:259:21: note: in expansion of macro '_'
         tty_printf (_("Location:   %Xh:%Xh"), (int) st.st_dev, (int) st.st_ino);
                     ^

Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-21 13:12:54 +03:00
Andreas Mohr
0bac703a59 (ftpfs_chmod): cleanup -Wformat-signedness warning.
ftpfs.c: In function 'ftpfs_chmod':
ftpfs.c:2029:52: error: format '%o' expects argument of type 'unsigned int', but argument 4 has type 'int' [-Werror=format=]
     g_snprintf (buf, sizeof (buf), "SITE CHMOD %4.4o /%%s", (int) (mode & 07777));
                                                    ^

Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-21 13:12:54 +03:00
Andreas Mohr
f3bcc33f91 src/filemanager/find.c: cleanup -Wformat-signedness warning.
find.c: In function 'found_num_update':
find.c:373:44: error: format '%ld' expects argument of type 'long int', but argument 4 has type 'long unsigned int' [-Werror=format=]
     g_snprintf (buffer, sizeof (buffer), _("Found: %ld"), matches);
                                            ^

find.c: In function 'do_search':
find.c:1306:51: error: format '%zd' expects argument of type 'signed size_t', but argument 4 has type 'size_t {aka long unsigned int}' [-Werror=format=]
                                                   "Finished (ignored %zd directories)",
                                                   ^
find.c:1305:51: error: format '%zd' expects argument of type 'signed size_t', but argument 4 has type 'size_t {aka long unsigned int}' [-Werror=format=]
                                         ngettext ("Finished (ignored %zd directory)",
                                                   ^

file.c:2526:41: error: format '%zd' expects argument of type 'signed size_t', but argument 3 has type 'size_t {aka long unsigned int}' [-Werror=format=]
     label_set_textv (dsm->count_size, _("Directories: %zd, total size: %s"),
                                         ^

Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-21 13:12:48 +03:00
Andreas Mohr
feb2581991 (dirsize_status_update_cb): cleanup -Wformat-signedness warning.
file.c:2526:41: error: format '%zd' expects argument of type 'signed size_t', but argument 3 has type 'size_t {aka long unsigned int}' [-Werror=format=]
     label_set_textv (dsm->count_size, _("Directories: %zd, total size: %s"),
                                         ^

Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-21 13:08:32 +03:00
Andreas Mohr
9ee93df098 src/editor/editdraw.c: cleanup -Wformat-signedness warning.
editdraw.c:127:62: error: format '%d' expects argument of type 'int', but argument 4 has type 'unsigned int' [-Werror=format=]
                 g_snprintf (byte_str, sizeof (byte_str), "%04d 0x%03X",
                                                              ^

editdraw.c:326:30: error: format '%d' expects argument of type 'int', but argument 2 has type 'unsigned int' [-Werror=format=]
             tty_printf ("[%05d 0x%04X]", cur_utf, cur_utf);
                              ^

editdraw.c:334:30: error: format '%d' expects argument of type 'int', but argument 2 has type 'unsigned int' [-Werror=format=]
             tty_printf ("[%05d 0x%04X]", (unsigned int) cur_byte, (unsigned int) cur_byte);
                              ^

editdraw.c:554:20: warning: conversion to 'unsigned int' from 'long int' may alter its value [-Wconversion]
         cur_line = edit->start_line + row;
                    ^~~~

editdraw.c:557:59: error: format '%i' expects argument of type 'int', but argument 4 has type 'unsigned int' [-Werror=format=]
             g_snprintf (line_stat, sizeof (line_stat), "%7i ", cur_line + 1);
                                                           ^

Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-21 13:08:32 +03:00
Andreas Mohr
a76afeec89 Ticket #3693: code cleanup before 4.8.19 release.
(init_subshell_child): cleanup -Wformat-signedness warning.

common.c:330:26: error: format '%d' expects argument of type 'int', but argument 3 has type 'unsigned int' [-Werror=format=]
         fprintf (stderr, __FILE__ ": unimplemented subshell type %d\r\n", mc_global.shell->type);
                          ^~~~~~~~

Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-21 13:08:32 +03:00
Mooffie
38b96be737 Ticket #3720: make viewer show search error messages.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-21 11:01:19 +03:00
Andrew Borodin
59bfd83744 (skin_dlg_callback): add forgotten return.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-13 17:28:54 +03:00
Andrew Borodin
d314609bb8 Ticket #3723: fix positioning of skin selector dialog.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-13 15:28:45 +03:00
Egmont Koblinger
9a63063cb6 Ticket #3715: fix file list resorting on double click on panel header line.
Apply 0-based y coordinates to be consistent with the MSG_MOUSE_DRAG
branch.

This bug was introduced in 54456a678f.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-13 12:26:49 +03:00
Andrew Borodin
83504f2bb5 Revert "(size_trunc_len): align to properly use either IEC or SI prefixes with the unit B (byte)."
This reverts commit bae814d0d4.
2016-11-08 13:19:37 +03:00
Andrew Borodin
e3d457eb3d Revert "Ticket #3666: (size_trunc_len): fix segfault because of small buffer usage."
This reverts commit 3024f309c2.
2016-11-08 13:19:29 +03:00
Michael Osipov
3024f309c2 Ticket #3666: (size_trunc_len): fix segfault because of small buffer usage.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-11-06 18:30:41 +03:00
Michael Osipov
bae814d0d4 (size_trunc_len): align to properly use either IEC or SI prefixes with the unit B (byte).
Additionally always put a space between number and unit which is
required by the norms.

It is important to note that really small buffers have to be bigger than it
appears because they store bytes and non-Latin scripts need more than one byte
with UTF-8 to encode them, e.g., the string "1023 МиБ" in Russian requires
11 bytes + null terminator.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-10-26 13:33:12 +03:00
Michael Osipov
b3867a6e15 Ticket #3666: Improper use of IEC and SI prefixes for size in size_trunc().
size_trunc() has been aligned to properly use either IEC or SI prefixes with
the unit B (byte). Additionally always put a space between number and unit
which is required by the norms.

Obsolete gettext message ids have been removed and some cleaned up for
duplicate words or leading spaces.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-10-26 13:33:12 +03:00
Yury V. Zaytsev
755447b96e Fix typo in source code comments (s/TEMR/TERM/)
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2016-10-08 16:40:38 +02:00
Roman Mikhayloff
224f53518e Ticket #3698: fix mcedit codejump (etags filenames parsing)
This got broken in the following commit for mc-4.8.16:

    a5ebb7d619

As `g_strlcpy` got replaced with `g_strndup`, the meaning of the last
argument has changed: it is no longer the destination size in bytes, but
the maximum number of bytes to copy, and so it had to be decremented by
one accordingly, hence the bug.

Signed-off-by: Roman Mikhayloff <rimf@inbox.ru>
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2016-10-08 11:15:22 +02:00
Andrew Borodin
ef5f1fa3eb Ticket #3672: allow rebind TAB key to change panel.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-10-03 15:21:57 +03:00
Andrew Borodin
36cc88b5f2 Reimplement widget focus/selection.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-09-11 11:30:20 +03:00
Andrew Borodin
d200893347 (dlg_select_widget): rename to widget_select.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-09-11 11:30:20 +03:00
Andrew Borodin
35451978f6 Rename WDialog APIs:
dlg_one_up -> dlg_select_prev_widget
dlg_one_down -> dlg_select_next_widget

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-09-11 11:30:20 +03:00
Andrew Borodin
47f9b77194 WMenuBar: remove WMenuBar::is_active. Use WST_FOCUSED instead.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-09-11 11:30:20 +03:00
Andrew Borodin
240350db95 Refactoring of widget drawing to avoid multiple widget redraw.
Send MSG_DRAW message immediately after MSG_FOCUS/MSG_UNFOCUS.
Thus, the MSG_DRAW message handler is the only place where widget
should be drawn. Widget should not draw itself in other message
handlers.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-09-11 11:30:20 +03:00
Andrew Borodin
aae31dbe43 WView: remove WView::active. Use WST_FOCUSED instead.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-09-11 11:26:00 +03:00
Andrew Borodin
ac35ab0401 WTree: remove WTree:active. Use WST_FOCUSED instead.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-09-11 11:26:00 +03:00
Andrew Borodin
c37f9b770a WST_FOCUSED: add new state and handle it.
Notify widget's owner that widget gets or loses focus.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-09-11 11:26:00 +03:00
Andrew Borodin
c90b806728 Don't focus widget that doesn't have the WOP_SELECTABLE option.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-09-11 11:26:00 +03:00
Andrew Borodin
5ac1c5a3e0 Ticket #2919: refactoring of focus/unfocus of widgets.
Initial step: add WOP_SELECTABLE option and set it up explicitly for
widgets that can be selected.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-09-11 11:26:00 +03:00
Andrew Borodin
0e22eae836 src/vfs/fish/fish.c: apply coding guidelines.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-09-11 11:11:01 +03:00
Andrew Borodin
f408e9a755 More use link_isdir().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-09-11 11:11:01 +03:00
Andrew Borodin
6127e5aea6 Get rid of #define const_cast(). 2016-09-11 11:11:01 +03:00
Andrew Borodin
01428beb2a (ftpfs_open_data_connection): fix enable/disable interrupt key.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-09-11 11:11:01 +03:00
Andrew Borodin
ba20fac1b3 (ftpfs_open_data_connection): fix socket leak in case of unsuccessful ftp connection.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-09-11 11:11:01 +03:00
Andrew Borodin
f2a76c2961 Ticket #3669: mcedit: don't kill bookmarks when open file from "Find File" dialog.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-08-26 15:07:13 +03:00
Andrew Borodin
5475e35378 Ticket #3669: cannot change directory in the active panel
...after changing VFS in the passive one.

Steps to reproduce:
1. Make left panel active.
2. Press F9 to open menu, select 'Right', then 'FTP link...'
3. Insert a valid FTP URL and press OK (or Enter). Wait for finish of FTP
directory reading.
4. Left panel is still active. Try to change CWD here by pressing Enter
or using command line.

Result: error messages 'ftpfs: CWD failed' and 'Cannot change directory'
or 'Cannot chdir to...'.

The problem: when VFS is changed in the passive panel, VFS CWD is
changed accordingly. Then active panel tries use the new VFS CWD.

The solution: restore VFS CWD after changing VFS in the passive panel.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-08-10 10:45:41 +03:00
Mooffie
4a0f265d95 Ticket #3075: (midnight_callback): make alt-enter, ctrl-enter, ctrl-shift-enter bindable.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-08-04 10:23:29 +03:00
Andreas Mohr
b36cec44e3 Cleanup unused macros.
Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-07-29 09:32:04 +03:00
Andrew Borodin
b862c05221 Fix default shortcut for "HotList" command.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-07-29 09:32:04 +03:00
Andrew Borodin
2abb92d7e6 (setup_panels): clarify panel size caclulation.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-07-29 09:32:04 +03:00
Andrew Borodin
6951d70c7c (panel_update_cols): move from panel.c to layout.c.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-07-29 09:32:04 +03:00
Andrew Borodin
2f8b1de05f (tree_move): support VFS.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-07-29 09:32:04 +03:00
Oswald Buddenhagen
bb782ad8ef Find file: fix directory search order to be depth-first again.
This matches the pre-glib implementation, and is way more natural.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-07-29 09:29:36 +03:00
Andrew Borodin
c343697407 Minor refactoring of mc shutdown.
Move calls of disable_mouse() and disable_bracketed_paste()
to main() because init_mouse() and enable_bracketed_paste()
are called here.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-07-29 09:29:36 +03:00
Andrew Borodin
47cee2d241 (make_symlink): trivial refactoring.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-07-29 09:29:36 +03:00
Andrew Borodin
996f23ac5d (make_symlink): apply coding guidelines.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-07-29 09:29:36 +03:00
Andrew Borodin
3f1cd8d021 (make_symlink): join if statements.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-07-29 09:29:36 +03:00
Andrew Borodin
4d8e37b9dc Ticket #3641: code cleanup before 4.8.18 release.
(check_hardlinks): use g_try_new0() istead g_new0() because result is
checked.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-07-29 09:29:36 +03:00
Mooffie
d6aa2ff924 Ticket #3663: panelize: don't reset marks on marked files. 2016-07-16 09:50:37 +03:00
Seray Rosh
0f7d5cfcd1 (edit_dialog_command_execute): when switch to another window, do not select it twice.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-07-09 19:13:20 +03:00
Andrew Borodin
cd90f2f98c Set WOP_TOP_SELECT options for panel widgets: WPanel, WView and WTree.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-07-09 19:13:20 +03:00
Andrew Borodin
87df81697a (layout_box): don't update dialog view after close.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-07-04 09:02:53 +03:00
Andrew Borodin
cf221f7f5f Ticket #3655: the "Output lines" option has no effect.
This bug was introduced in a8101d8403.

(layout_box): set up the output_lines value after close "Layout" dialog
box.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-07-04 09:02:53 +03:00
Andrew Borodin
52871230a2 Ticket #3639: fix window resizing when panels are hidden.
This reverts commit f278eaec99.
2016-06-28 09:34:11 +03:00
Andrew Borodin
cb06f8c585 (help_interactive_display): fix arguments of dlg_create() call.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-06-18 10:21:42 +03:00
Andrew Borodin
b4af91dfc0 Reorganize WDialog flags.
* DLG_FULLSCREEN: move and rename to WPOS_FULLSCREEN.
 * DLG_CENTER: move and rename to WPOS_CENTER.
 * DLG_TRYUP: move and rename to WPOS_TRYUP.
 * WDialog::fullscreen: remove, use WPOS_FULLSCREEN instead.
 * WDialog::compact: new field. Use instead of DLG_COMPACT.
 * WDialog:🎏 remove.
 * dlg_flags_t: remove.
 * dlg_create: add new agruments: pos_flags, compact. Remove
argument: flags.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-06-02 20:41:00 +03:00
Andrew Borodin
163d9cd94a Rename DLG_WANT_TAB to WOP_WANT_TAB and move it to widget_options_t.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-06-02 20:34:38 +03:00
Andrew Borodin
d44220c75f If widget wants cursor, define that explicitly.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-06-02 20:34:38 +03:00
Andrew Borodin
db0d01b9d6 Add WST_MODAL state.
* WDialog::modal: remove. Use WST_MODAL instead.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-06-02 20:34:38 +03:00
Andrew Borodin
fd4e56bf39 WOP_TOP_SELECT: new widget option
...to place widget on top of other widgets in dialog.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-06-02 20:34:38 +03:00
Andrew Borodin
4b72fb5f5e Join widget_state_t and dlg_state_t.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-06-02 20:34:38 +03:00
Andrew Borodin
0a2877edef Move WOP_WANT_IDLE option to widget_state_t flags
...and rename to WST_IDLE.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-06-02 20:34:38 +03:00
Andrew Borodin
b337287336 Move WOP_DISABLED option to widget_state_t flags
...and rename to WST_DISABLED.

  * Widget::state: new field.
  * (widget_set_state): new function.
  * (widget_set_options): symplify.
  * (input_set_options): remove.
  * MSG_ENABLE, MSG_DISABLE: new messages.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-06-02 20:34:38 +03:00
Andrew Borodin
f5a1dfcef4 (widget_get_options): new widget API.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-06-02 20:34:38 +03:00
Andrew Borodin
4a0cd948df Change prefix of widget options: W_ -> WOP_.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-06-02 20:34:38 +03:00
Andrew Borodin
7f8ab40a44 Do not recreate "String not found" error string every time.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-22 14:16:19 +03:00
Andrew Borodin
3af54b0e93 mcview: make backward search interruptible.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-22 14:16:19 +03:00
Andrew Borodin
c13e4b3c0e (mcview_search_update_steps): fix calculation of update step.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-22 14:16:19 +03:00
Andrew Borodin
81a55537de mcedit: make backward search interruptible.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-22 14:16:19 +03:00
Andrew Borodin
90c67f9220 (editcmd_find): minor refactoring.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-22 14:16:19 +03:00
Andrew Borodin
74e671fb59 Check error string before show message.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-22 14:16:19 +03:00
Andrew Borodin
1c22d44970 Ticket #3637: fix memory leaks in search engine.
(mc_search_set_error): new search API to set the code and message
of search error.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-22 14:16:19 +03:00
Ben Woods
1afe2a091a Ticket #3643: fix FTBFS in cons.handler.c on FreeBSD 11
Replace `min` with `MIN` macro missed in bc14ff44.

Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2016-05-11 21:16:29 +02:00
Andrew Borodin
1a5aff3188 Clarify center scrolling of multi-column lists.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-07 18:20:43 +03:00
Mike Smithson
a4b51c3e81 Ticket #3130: implement center scrolling of panel.
Behavior: cause the panel to begin scrolling when the cursor
reaches the middle of the panel, so that the cursor tends to stay in
the middle of the panel on long listings. Only when you reach the
beginning or the end of the listing will the cursor move to the first or
last file.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-07 18:20:16 +03:00
Andrew Borodin
e251c67ef7 (feed_subshell): change type of fail_on_error from int to gboolean.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-07 16:28:47 +03:00
Andrew Borodin
4449f525e2 (dview_save_options): clarify boolean options.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-07 16:19:02 +03:00
Andrew Borodin
2151edaff2 Get rid of global variables mc_main_config and mc_panels_config.
Use mc_global.main_config and mc_global.panels_congig instead.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-07 16:19:02 +03:00
Andreas Mohr
f03bb30a5a (update_split): cleanup cppcheck warning.
Cleanup following cppcheck warnings:

[src/filemanager/layout.c:231]: (style) Clarify calculation precedence for '&' and '?'.

Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-07 16:19:02 +03:00
Sergei Trofimovich
5b594fffeb MidnightCommander/mc#97: src/filemanager/mountlist.c: add makedev() declaration.
On glibc-2.23 link fails as

    $ mc-9999/src/filemanager/mountlist.c:750: undefined reference to `makedev'

Reported-by: Thomas D.
Bug: https://bugs.gentoo.org/579858
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-07 16:19:02 +03:00
Andrew Borodin
bc14ff44c8 Remove min() and max() macros. Use MIN() and MAX() macros from GLib.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-07 16:19:02 +03:00
Andrew Borodin
3bea889648 (edit_replace_cmd): change type of 2nd argument from int to gboolean.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-07 16:19:02 +03:00
Andrew Borodin
288c4490bf mcedit: fix type of function arguments:
(edit_move_{up,down}): fix 3rd argument: gboolean instead of int.
(edit_move_{up,down}_paragraph]): fix 2nd argument: gboolean instead of int.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-07 16:19:02 +03:00
Andrew Borodin
0641e942e5 (input_is_empty): new WInput API.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-07 16:19:02 +03:00
Andrew Borodin
4d65a731c2 mcview: refactoring of mcview_get_utf().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-07 16:19:02 +03:00
Andrew Borodin
8cd8dbeb58 diffview: refactoring of dview_get_byte() and dview_get_utf().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-07 16:19:02 +03:00
Andreas Mohr
eef076cef6 cppcheck: Cleanup Passing NULL after the last typed argument warning
Cleanup Passing NULL after the last typed argument warning.

Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-07 16:19:02 +03:00
Andreas Mohr
72258dcca6 args.c: Make Solaris Studio happy
Make Solaris Studio 12.4 & 12.5 happy.

"args.c", line 180: warning: initialization type mismatch
"args.c", line 188: warning: initialization type mismatch

Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-07 16:19:02 +03:00
Andrew Borodin
874be2de1e mcedit: rename functions:
edit_buffer_move_forward -> edit_buffer_get_forward_offset
edit_buffer_move_backward -> edit_buffer_get_backward_offset

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-07 16:19:02 +03:00
Andrew Borodin
2b8b1c56ea edit_buffer: clarify of buffer size update.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-07 16:19:02 +03:00
Andrew Borodin
954af9fec9 Ticket #3607: code cleanup bebore 4.8.17 release.
Clarify include of fileloc.h.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-07 16:19:02 +03:00
Yuri Khan
abb4996589 Ticket #3640: Subshell cursor position lost after window resizing.
Refactoring: rename functions:

do_enter_ca_mode -> tty_enter_ca_mode
do_exit_ca_mode -> tty_exit_ca_mode

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-05 10:01:13 +03:00
Yuri Khan
f278eaec99 Ticket #3639: fix window resizing when panels are hidden.
Calling tty_change_screen_size() causes a switch to the alternate screen:

   * Resizing the window causes a SIGWINCH sent to the mc process.
   * sigwinch_handler() sets the flag mc_global.tty.winch_flag to 1.
   * The select() call in feed_subshell() is interrupted.
   * feed_subshell() notices the winch_flag and calls tty_change_screen_size().
   * tty_change_screen_size() calls SLsmg_reinit_smg().
   * SLsmg_reinit_smg() sees that Smg_Mode is currently SMG_MODE_NONE
     (because it was set that way back in reset_smg() that was called
     when panels were hidden).
   * SLsmg_reinit_smg() calls SLsmg_init_smg().
   * SLsmg_init_smg() calls init_smg_for_mode(SMG_MODE_FULLSCREEN).
   * init_smg_for_mode() calls SLtt_init_video().
   * SLtt_init_video() sends the smcup terminfo sequence to the terminal.
   * SLtt_init_video() calls SLtt_init_keypad().
   * SLtt_init_keypad() sends the smkx terminfo sequence to the terminal
     and flushes the output buffer. (If $TERM starts with xterm or exactly
     matches screen, this function returns immediately without flushing the
     buffer, so the issue will not be visible.) The terminal switches to
     alternate screen and clears it.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-05-05 09:56:21 +03:00
Mooffie
a1d2c81d15 Ticket #3622: extfs/uzip: fix date parsing
By default, on Unix systems, unzip gets compiled with MDY date order. Debian
based distros compile it with YMD order, for which this patch adds support.

Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2016-05-01 14:23:35 +02:00
Andreas Mohr
903773ceed Ticket #3610: remove executable bit from FISH helper scripts
Prevent them from getting accidentally run by users and fix rpmlint
warning found by OBS Framework (build.opensuse.org)

mc.x86_64: W: script-without-shebang /usr/lib/mc/fish/append
mc.x86_64: W: script-without-shebang /usr/lib/mc/fish/chmod
mc.x86_64: W: script-without-shebang /usr/lib/mc/fish/chown
mc.x86_64: W: script-without-shebang /usr/lib/mc/fish/fexists
mc.x86_64: W: script-without-shebang /usr/lib/mc/fish/get
mc.x86_64: W: script-without-shebang /usr/lib/mc/fish/hardlink
mc.x86_64: W: script-without-shebang /usr/lib/mc/fish/info
mc.x86_64: W: script-without-shebang /usr/lib/mc/fish/ln
mc.x86_64: W: script-without-shebang /usr/lib/mc/fish/ls
mc.x86_64: W: script-without-shebang /usr/lib/mc/fish/mkdir
mc.x86_64: W: script-without-shebang /usr/lib/mc/fish/mv
mc.x86_64: W: script-without-shebang /usr/lib/mc/fish/rmdir
mc.x86_64: W: script-without-shebang /usr/lib/mc/fish/send
mc.x86_64: W: script-without-shebang /usr/lib/mc/fish/unlink
mc.x86_64: W: script-without-shebang /usr/lib/mc/fish/utime

Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2016-04-30 18:02:25 +02:00
Andrew Borodin
cedcb28912 (copy_file_file): reduce variable scopes.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-25 13:15:12 +03:00
Andrew Borodin
f866d41746 (copy_file_file): get rid of one goto.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-25 13:15:12 +03:00
Andrew Borodin
abfadbb27f (copy_file_file): rename variables.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-25 13:15:12 +03:00
Andrew Borodin
18f6b85005 (copy_file_file): define copy buffer size in depend on destination file system block size.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-25 13:15:12 +03:00
Andrew Borodin
9523401374 (io_blksize): add intermediate variable.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-25 13:15:12 +03:00
Andrew Borodin
e7c01c7781 Ticket #2193: use Coreutils way to define buffer size to copy file.
m4.include/stat-size.m4, lib/stat-size.h: get these files from Gnulib.
src/filemanager/ioblksize.h: get this file from Coreutils.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-25 13:12:51 +03:00
Andreas Mohr
263012123c Ticket #3611: fix FISH ls helper (Perl)
In #3599 a Perl warning was introduced in fish_list_perl(), so
fish_list_perl() was skipped (return code 255) and fallback ls function
was used instead.

Additionally, all % chars must quoted because of g_strconcat() after
reading script file into a string.

Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2016-04-21 21:37:35 +02:00
Andreas Mohr
d033e17a23 src/setup.c: cleanup -Wcast-qual warning.
Signed-off-by: Andreas Mohr <and@gmx.li>
2016-04-16 10:23:45 +03:00
Andreas Mohr
9a48fb4b0c src/clipboard.c: cleanup Wcast-qual warning.
Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-16 10:23:45 +03:00
Andreas Mohr
311ef4c669 src/viewer/search.c: cleanup some -Wcast-qual warning.
Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-16 10:23:45 +03:00
Andreas Mohr
f9f08fbfd7 src/vfs/extfs.c: cleanup -Wcast-qual warnings.
Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-16 10:23:45 +03:00
Andreas Mohr
0fae3ded3e src/filemanager/find.c: cleanup -Wcast-qual warning.
Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-16 10:23:45 +03:00
Andrew Borodin
8fd2fd69d7 src/filemanager/file.c: cleanup -Wcast-qual warning.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-16 10:23:45 +03:00
Andreas Mohr
e9730afef5 src/filemanager/file.c: cleanup -Wcast-qual warning.
Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-16 10:23:45 +03:00
Andreas Mohr
6005a63cad src/filemanager/panel.c: cleanup -Wcast-qual warning.
Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-16 10:23:45 +03:00
Andreas Mohr
3e7695619f src/editor/syntax.c: cleanup -Wcast-qual warnings.
Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-16 10:23:45 +03:00
Andreas Mohr
d640a34ada src/editor/editcmd.c: cleanup some -Wcast-qual warnings.
Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-16 10:23:45 +03:00
Andreas Mohr
edff1cff6f src/editor/choosesyntax.c: cleanup -Wcast-qual warning.
Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-16 10:23:44 +03:00
Andreas Mohr
9cb22c41a6 src/diffviewer/ydiff.c: cleanup -Wcast-qual warning.
Signed-off-by: Andreas Mohr <and@gmx.li>
2016-04-16 10:23:44 +03:00
Andrew Borodin
0b46b4690f (dview_get_utf): apply const qualifier to str argument. 2016-04-16 10:23:44 +03:00
Andreas Mohr
16f229114a Ticket #3598: cleanup some -Wcast-qual compiler warnings.
Introduce CONST_WIDGET helper and use it.

Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-16 10:23:43 +03:00
Andrew Borodin
8490ca7be4 Drop old mouse API and use the new one.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-01 15:29:55 +03:00
Mooffie
781b810c13 Fix menu handling.
We now send mouse events to widgets in reverse Z-order, as done in common GUIs.
This makes it easy to implement "invisible" menubars correctly.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-01 15:29:55 +03:00
Andrew Borodin
c9a437a9c2 Optimize menu activation.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-01 15:29:55 +03:00
Andrew Borodin
1adc6a53d1 mcedit: rename MCEDIT_DRAG_NORMAL to MCEDIT_DRAG_NONE.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-01 15:29:55 +03:00
Andrew Borodin
46963b3e71 mcedit: use the new mouse API.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-01 15:29:55 +03:00
Mooffie
be00764bc8 WEdit: get rid of mouse event pump.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-01 15:29:55 +03:00
Andrew Borodin
c86e45e482 WEdit: use the new mouse API.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-01 15:29:55 +03:00
Andrew Borodin
2cf4c11aa8 Help: use the new mouse API.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-01 14:16:08 +03:00
Andrew Borodin
f926b25fe5 Viewer: use the new mouse API.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-01 14:16:08 +03:00
Andrew Borodin
4317ceaf84 Diff viewer: usethe new mouse API.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-01 14:16:08 +03:00
Andrew Borodin
4b420aa85c WTree: use the new mouse API.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-04-01 14:16:08 +03:00
Andrew Borodin
5debec4917 (panel_mouse_callback): minor optimization. 2016-04-01 14:16:08 +03:00
Andrew Borodin
54456a678f WPanel: use the new mouse API. 2016-04-01 14:16:08 +03:00
Andrew Borodin
a056be3dc3 Ticket #3621: fix segfault when enter in some cpio archives.
(cpio_create_entry): fix NULL dereference (i. e. in case of stale link).

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-03-28 09:05:29 +03:00
Andreas Mohr
e1ad66e90e Ticket #3605: extfs: fix buffer overflow.
When handling with copy/move commands inside of archive we can lead into buffer overflow
steps to roproduce:
    create simple 7z archive
    open it
    rename single filename
    hit buffer overflow

found by clang/AddressSanitizer

==17794==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x602000273593 at pc 0x00000045f2a9 bp 0x7ffc94aa8e20 sp 0x7ffc94aa85d0
READ of size 2 at 0x602000273593 thread T0
    #0 0x45f2a8 in __interceptor_strchr.part.44 (/usr/bin/mc+0x45f2a8)
    #1 0x70fb72 in extfs_find_entry_int /tmp/portage/app-misc/mc-9999/work/mc-9999/src/vfs/extfs/extfs.c:312:13
    #2 0x70f562 in extfs_find_entry /tmp/portage/app-misc/mc-9999/work/mc-9999/src/vfs/extfs/extfs.c:331:11
    #3 0x712131 in extfs_internal_stat /tmp/portage/app-misc/mc-9999/work/mc-9999/src/vfs/extfs/extfs.c:1117:13
    #4 0x7f3de308ab59 in mc_stat /tmp/portage/app-misc/mc-9999/work/mc-9999/lib/vfs/interface.c:556:46
    #5 0x538575 in file_mask_dialog /tmp/portage/app-misc/mc-9999/work/mc-9999/src/filemanager/filegui.c:1340:25
    #6 0x6e0753 in panel_operate /tmp/portage/app-misc/mc-9999/work/mc-9999/src/filemanager/file.c:2718:13
    #7 0x6bdabd in rename_cmd /tmp/portage/app-misc/mc-9999/work/mc-9999/src/filemanager/cmd.c:811:9
    #8 0x551ef4 in midnight_execute_cmd /tmp/portage/app-misc/mc-9999/work/mc-9999/src/filemanager/midnight.c:1307:9
    #9 0x7f3de30a49e7 in buttonbar_callback /tmp/portage/app-misc/mc-9999/work/mc-9999/lib/widget/buttonbar.c:172:42
    #10 0x7f3de30b2305 in dlg_try_hotkey /tmp/portage/app-misc/mc-9999/work/mc-9999/lib/widget/dialog.c:464:23
    #11 0x7f3de30b199a in dlg_key_event /tmp/portage/app-misc/mc-9999/work/mc-9999/lib/widget/dialog.c:509:19
    #12 0x7f3de30b2ef9 in frontend_dlg_run /tmp/portage/app-misc/mc-9999/work/mc-9999/lib/widget/dialog.c:570:9
    #13 0x7f3de30b2af5 in dlg_run /tmp/portage/app-misc/mc-9999/work/mc-9999/lib/widget/dialog.c:1267:5
    #14 0x5507bb in do_nc /tmp/portage/app-misc/mc-9999/work/mc-9999/src/filemanager/midnight.c:1827:9
    #15 0x50b874 in main /tmp/portage/app-misc/mc-9999/work/mc-9999/src/main.c:403:21
    #16 0x7f3de1ec78fb in __libc_start_main (/lib64/libc.so.6+0x208fb)
    #17 0x427f48 in _start (/usr/bin/mc+0x427f48)

Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-03-20 11:54:52 +03:00
zazaho
48cfd3b28d Ticket #3620: patchfs: fix syntax error.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-03-16 09:23:34 +03:00
Mooffie
4e62be3b7e Split MSG_ACTION into MSG_ACTION and MSG_NOTIFY.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2016-03-12 14:49:40 +03:00