src/filemanager/dir.c: refactored growing of dir_list into a separate
function.
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
...and move update_xterm_title_path() and title_path_prepare()
from src/main.c to src/filemanager/layout.c
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
steps to reproduce:
1) create text
111111111111111111
222222222222222222
333333333333333333
444444444444444444
555555555555555555
2) select text from line 2 to line 4
3) move cursor to line 3
4) press F6
The block was moved but should't.
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
fsusage: port back to Solaris
* src/filemanager/mountlist.c (get_fs_usage): Fix busted logic causing
compile-time error (fsd not declared) on Solaris 10.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* src/filemanager/mountlist.c [STAT_STATVFS && (__linux__ && (__GLIBC__||__UCLIBC__))]:
Undefine STAT_STATFS2_FRSIZE to exclude code not used in this case.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
fs usage: fix block size returned on older Linux 2.6.
* src/filemanager/mountlist.c: Fall back to (struct statfs).f_frsize
which is available since Linux 2.6.
* m4.include/fsusage.m4 (STAT_STATFS2_FRSIZE): Always define
when the member is available so it can be used as a fallback.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Sync with gnulib c25bdbae48977a527dff69150f59fb0746d31b51:
fs usage: check for GNU/Linux statvfs problem dynamically.
* src/filemanager/mountlist.c [STAT_STATVFS && __linux__ && (__GLIBC__||__UCLIBC__)]:
Define STAT_STATFS2_BSIZE too, since in this case the code now
checks dynamically whether statvfs is reliable, falling back on
Linux-style statfs otherwise.
(statvfs_works): New function, for dynamically testing statvfs.
(get_fs_usage) [STAT_STATVFS]: Use it.
* src/filemanager/filegui.c (filegui__check_attrs_on_fs): apply the same
statvfs_works function.
* m4.include/fsusage.m4 (gl_FILE_SYSTEM_USAGE): Remove static check for
statvfs on GNU/Linux hosts, since it's now done dynamically.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
If edit->column_highlight is on and the disk is so full that the editor
is unable even to write the magic (r <= 0), then subsequent if (len)
check might fail, since the value of len is undefined.
The solution is to initialize len with a non-zero value, so that the
function properly returns an error value in all cases (adding an
explicit return 0; is also possible, but then one must take care of
closing file descriptors, which is less convenient).
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
If mcedit is configured to use "Safe save" I'm unable to save changes to existing file.
Same problem is for editor_option_save_mode=2 (backup mode)
Saving to new file works.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
* F3/F4 on 'del' and 0-length files works, however it is impossible to change 'del'
files (cached content can be confusing)
* Koala files and other with non-ASCII characters are supported (implemented directory
reading routine in pure python - for now only D64 format is supported)
* Added workaround for filenames with space at the beginning (however, as it was stressed
before, it is more generic issue than this script. Maybe it is good idea to use pcre
instead of iterating and splitting?)
* minor bugfixes and code cleanup
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Due to date formatting, uc1541 extfs plugin is unusable, even tough the date formatting,
which is the one cause of the problem is coherent with the attached documentation (MM-DD-YYYY hh:mm).
Another problem with uc1541 script is connected rather with legal characters used in filename
rather than with script itself - in PET ASCII it is perfectly fine to use slash "/" character
in filenames, and as a side effect all files containing slash inside d64 image are represented
as directories on MC.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Added feature for the mcdiff for the bidirectional merge.
With F15 mcdiffviewer merge left panel to right panel direction.
original patch by Gergely Szasz <szaszg@hu.inter.net>
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
added bind "MergeOther" into mc.keymap.default, mc.keymap.emacs.
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
...in case of rename and delete directories.
Steps to reproduce the problem:
* Choose "file listing" mode for one panel and "directory tree" mode for the other.
* Perform all operations on the "file listing" panel.
* Create a new directory -> tree view will update correctly.
* Perform an operation, which changes this directory like rename/delete.
* Deleted directory will still show up on the "directory tree" view.
Renamed directory will show up with the new name, but the old name will also stay there.
Minor cleanup: remove extra parenthesis.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Steps to reproduce:
* run mc
* go to 'F9 -> left/right panel -> Tree'
Expected result: unique directory names.
Actual result: duplicate directory names
(one name with leading slash, second directory name without leading slash).
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
How to reproduce:
on sources: ctags -R .
with tags in current dir open any file (needn't be C source or headers)
Alt- (i.e. alt minus or Esc '-')
Current result: sigsegv
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Steps to reproduce:
* compile mc with aspell support
* remove all aspell's dictionaries
* run mc and try to open any file in the internal editor
* close the error dialog
* try to exit from editor
Expected behaviour: a file panels should be shown
Actual behaviour: the segfault here.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
If call panel history using mouse (click on [^] icon on panel top frame)
and then select any path from history, panel was not refreshed to show
actual file list in the new current directory.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Some ini files (keymaps, skins) are loaded in read-only mode. For those
files, we don't need load and keep comments.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Modify algorithm of keymap files load:
1) Unconditionally load /usr/share/mc/mc.keymap
2) Unconditionally load /etc/mc/mc.keymap
Then load one of following user-defined keymaps, stop on success:
3) set via --keymap command line option
4) set via MC_KEYMAP environment variable
5) set via keymap key in config file
6) ~/.config/mc/mc.keymap
Fix of double load of keymap file if name is same as name of
system-wide keymap file.
Update man pages.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
(expand_format): don't try expand format and return empty line
for modes that are not used formatted variables.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Test case:
* cp /path/to/any-file.rpm '/tmp/a n y - f i l e.rpm'
* run /usr/bin/mc, go to /tmp
* Press Enter on 'a n y - f i l e.rpm' file
Expected result: mc should be entered to RPM package as in directory
Actual result: gor errors:
Inconsistent extfs archive
error: open of /tmp/a\ failed: No such file or directory
...
error: open of e.rpm failed: No such file or directory
-r--r--r-- 1 root root 0 Jun 29 15:12 ERROR
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Set defines via CPPFLAGS variable not via CFLAGS one.
Use AM_CPPFLAGS and AM_CFLAGS variables instead of per-target ones.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
In Search dialog in mcedit M-n hotkey was used for normal search mode.
Therefore, M-n as HistoryPrev in the input line was in accessible.
Change hotkey for normal seach mode to M-r. Use this hotkey for normal diff
mode in mcdiffviewer to unify i18n resources.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
src/filemanager/filegui.c does not compile on Solaris due to missing macros.
AVE_STRUCT_STATVFS_F_BASETYPE and HAVE_STRUCT_STATVFS_F_FSTYPENAME macros
are not set or even defined in config.h. configure scrips does not even
check for those members.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
While copy/move file, the ENOSPC value of errno wasn't handled.
If destination file isn't comlete because of full partition, source file
is kept and destination one is removed unconditionally.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Steps to reproduce:
1. traverse through some directories,
2. press alt-y multiple times,
3. press alt-u multiple times,
4. press alt-y again a few times,
5. press alt-shift-h (notice no dirs to forward to), press esc,
6. press alt-u - nothing happens.
Initial step: (directory_history_add): make static and use vfs_path_t as argument.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Currently, dialog itself doesn't handle mouse events. It just
resends mouse event to each its widget. If we can several overlapped
widgets (especially, menu bar), there is some problem to decide which
widget must get event at first.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
sys/param.h needs to be included before sys/mount.h on FreeBSD 6,
otherwise compiling fails with undefined identifier NGROUPS.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
How to reproduce.
1. Goto ~. Run mc. Enable autosave panels setup before exit. Save options.
2. Open ~ dir in the left panel, / in the right one. Make right panel active.
3. Close mc.
4. With mc-wrapper, following is performed:
4.1. Run mc. Now ~ in the right panel, / in the left one.
4.2. Close mc.
4.3. Run mc. Now ~ in the left panel again, / in the right one.
4.4. ...and so on.
5. Without mc-wrapper, following is performed:
5.1. Run mc. Now ~ in both panels.
Expected behavior with current_is_left=false
1. if mc start as mc dir dir2, dir1 is opened in the left panel, dir2 in
the right one.
2. if mc starts as mc (without dir1 and dir2), active (right) panel
contains working directory, other (left) one contains other_dir from
panel.ini.
3. if mc start as mc dir1, dir1 is opened in the left panel, right panel
contains working directory.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
mc dir1 dir2
The bug: order of parameters assignment depends on current_is_left
option in panels.ini file: if current_is_left=0, then dir1 is opened
in the left panel, dir2 in the right one. If current_is_left=1,
then dir1 is opened in the right panel, dir2 in the left one.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
1) login to any ftp or fish resource
2) select ftp/fish entry and change current path
3) go back to old path
4) press Ctrl+X A (open "Active VFS directories" dialog)
Expected result: should be correct path to current VFS path
Actual result: path is incorrect.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
After cd from directory to ".." in remote VFS, directory selection is
reset (".." is selected instead of the previous directory).
Bug was introduced in c457eaf9b1.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
After exit from archive located in the root of FS, file selection is
reset (/bin is selected instead of the archive).
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>