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>
Steps to reproduce:
* run mc
* change encoding one of panels to any different from system encoding
* try to copy any file to panel with changed encoding
Expected result: files should be copied.
Actual result: error box here.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
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>
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>
Steps to reproduce:
* ./configure --disable-vfs
* make
Expected result: project should be builded successfully.
Actual result:
build stopped with errors:
lib/vfs/interface.c: In function 'mc_chdir':
lib/vfs/interface.c:714: error: 'struct vfs_s_super' has no member named 'path_element'
lib/vfs/interface.c:716: error: 'struct vfs_s_super' has no member named 'path_element'
lib/vfs/interface.c:717: error: 'struct vfs_s_super' has no member named 'path_element'
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Steps to reproduce:
* cd ftp://ftp.gnome.org/
* Run "cd" in the panel where the remote site is open
* cd ftp://ftp.kernel.org/
Actual result: The directory content from ftp.gnome.org FTP-server.
Expected results: The directory content from kernel.org FTP-server.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
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>
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>
How to reproduce:
* mkdir -p a/b/c
* touch a/b/c/d
* ln -s d a/b/c/e
* tar -cf bad.tar a
* rm -rf a
* cd bad.tar/utar://a/b/c
Expected result: 'e' should be valid symlink to 'd'
Actual result: 'e' looks like broken link
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
When mc is compiled with SEARCH_TYPE_PCRE (and without SEARCH_TYPE_GLIB,
e.g. on systems with old glib < 2.14) case (in)sensitive search works in opposite.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
On Mac OS X, in the iTerm2, when the LANG variable is set to en_US.utf-8
mcedit specifically does not correctly accept input (every character press
is interpreted as a '.'). However when LANG is set to en_US.UTF-8 mcedit
works correctly (see also http://code.google.com/p/iterm2/issues/detail?id=204).
On Linux, nl_langinfo(CODESET) returns upper case UTF-8 whether the LANG is set
to utf-8 or UTF-8.
On Mac OS X, it returns the same case as the LANG input.
So let tranform result of nl_langinfo(CODESET) to upper case unconditionally.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
If [Preallocate space] option is enabled, MC can't copy zero-length files:
"Cannot preallocate space for target file ... Invalid argument (22)"
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
fixed trouble with internal editor macro engine introduced by commit #68a8745f6dd7ded9437317a694225d599745e983
now record input char and commands.
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Unlike S-Lang, NCurses always wraps long lines and unable trancate that
to pring only visible part of text. Therefore we have to implement our
own addch() wrappers.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
New method of widget ID assignment:
now widget ID is a value of unsigned long type. Dlg_head structure now has
new filed widget_id that contains a ID of the next added widget. When new
widget is added into dialog, widget_id is set as ID of it and then
incremented.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* path elements now are separated and shown one-by-one
(eg. ftp://some.in.net instead of ~/some/path/ftp://some.in.net)
* encoding info is shown separated at top of header line
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
added bindings 'ScrollLeft', 'ScrollRight' for scroll long filenames in panel
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
some code & typo fixes.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Hexadecimal values like "2d f0" can be used as well as "0x2d 0xf0"
in all search dialogs where hexadecimal search is supported.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Until 4.7 '/' was forward and '?' backward search.
In current releases both keys are bound to ViewSearch
so one must manually choose Backwards option in the dialog.
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Initial state: forced suspend the previous screen when new screen has
been created. Forced resume the current screen when the previous screen
has been closed. Don't redraw suspended screens, just set sinch_pending
flag. Screen will be redrawn immediately after resume.
This commit allow ret rid of setup_panels() call if screen is resized
and filemanager is not active screen at that time.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
The ancient way of reporting mouse coordinates only supports coordinates
up to 231, so if your terminal is wider (or taller, but that's unlikely),
you cannot use your mouse in the rightmost columns.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
After #2361, smb vfs module doesn't work at all.
The error message "Cannot chdir to ..." raises after hostname enter.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Since content of keymap file is ASCII-only and case insensitive,
don't use some utf8-manipulation: g_ascii_strcasecmp() is used
instead of str_casecmp().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
added ".." at the top of file list (after external panelization)
added ".." at the top of file list (after 'find' panelization)
disable ctrl-r (refresh) for panelized content
added menu entry Left\Panelize, to restore panelized panel
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Minor changes in goto_parent_dir()
many code optimization
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
little fixup
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
When platform does not define HAVE_POSIX_FALLOCATE we get this error:
CC vfs.lo
../../../../mc/lib/vfs/vfs.c: In function 'vfs_preallocate':
../../../../mc/lib/vfs/vfs.c:613:12: error: 'dest_desc' undeclared (first use in this function)
../../../../mc/lib/vfs/vfs.c:613:12: note: each undeclared identifier is reported only once for each function it appears in
../../../../mc/lib/vfs/vfs.c:610:22: warning: unused parameter 'dest_vfs_fd' [-Wunused-parameter]
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
For FTP servers, that do not send ".." in directory listing, mc adds one space to the name of every file and directory. Attached patch should fix this problem.
Steps to reproduce:
cd /#ftp:ftp.symantec.com
Expected result:
Correct list of files/directories
Actual result:
File/directory names with leading spaces
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Sometimes when text contain multibyte UTF-8 chars, editor shows two dots instead of some letter.
When moving text cursor after that letter it will be displayed properly.
When moving cursor back (before letter) it will be displayed again as two dots.
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
added UTF8_CHAR_LEN
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
(vfs_s_close): vfs-specific data of file handler
vfs_file_handler_t::data is freed in vfs_s_subclass::fh_close method and
then can be used in vfs_s_subclass::file_store_one. Bug is related to
ftp and fish VFSes.
Added new vfs_s_subclass::fh_free_data method to free vfs-specific data
of file handler vfs_file_handler_t::data. Use it in ftp and vfs VFSes.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
(vfs_class_data_find_by_handle, vfs_class_find_by_handle): move same
code to the separate function vfs_get_openfile().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
If first element is relative, the result path should be also relative
not absolute.
If first element is empty, the result path is relative.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
input_complete.c:874:26: warning: use of logical && with constant
operand; switch to bitwise & or remove constant
[-Wconstant-logical-operand]
if (q && q[1] == '(' && INPUT_COMPLETE_COMMANDS)
^ ~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Required for some terminals (screen/tmux) to force needed mouse type
(BUTTON_EVENT by default).
Normal tracking mode sends an escape sequence on both button press and release.
Mouse highlight tracking notifies a program of a button press, receives a range of
lines from the program, highlights the region covered by the mouse within that
range until button release, and then sends the program the release coordinates.
It is enabled by specifying parameter 1001 to DECSET.
Button-event tracking is essentially the same as normal tracking, but xterm also
reports button-motion events. Motion events are reported only if the mouse pointer
has moved to a different character cell. It is enabled by specifying parameter 1002 to DECSET.
On button press or release, xterm sends the same codes used by normal tracking mode.
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
changed mc.1.in, added description of command line options -g, --oldmouse.
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Unification of tty_shutdown() function as for S-Lang as for NCurses.
Added do_exit_ca_mode() call to the NCurses-based tty_shutdown().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
The xterm_flag variable was initialized in setup_mc() but used
first time in init_key() and in tty_init() (in do_enter_ca_mode())
before setup_mc() call.
Now xterm initialized in early step of mc start up process and
xterm support and mouse are initialized in tty_init().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
(mc_search__hex_translate_to_regex): don't use length of original string
after leading whitespace trim.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
files starting with space can't be acessed by mc through ftp - it
shows the file as not having the leading space and attempts to
access it produce 'permission denied' errors.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
brace '}' (which probably isn't 100% correct), this should be checked in tests
for replace_handle_esc_seq function, not process_escape_sequence - it is the
replace_handle_esq_seq who decides whether it is an escape sequence or not.
Also, \x{4344} is usually a code for wide character (UTF-8), and not for "CD".
So we can either ignore the higher bits, or generate wide character codes...
The second would be convenient, but would also introduce a hard-coded UTF-8 charset.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Enables use of escape sequences inside regex replace strings,
Enables UTF-8 caseless search in PCRE.
Supported escape sequences: \DEC, \xHEX, \0OCT, \n, \t, \v,
\b, \r, \f, \a. Any of them could be enclosed into \{}.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
... to avoid artefacts after printing of non-printable symbols.
(tty_touch_lines): new function to mark modified lines of screen.
(do_refresh): mark lines as modified before redraw of non-fullscreen dialog
and clear entire screen before redraw of fullscreen dialog.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Now history is not saved if it was not modified and content of input
line is equal to history top entry. Thanks Francesco Cosoleto
<cosoleto at gmail dot com> for the original patch.
Also fixed a regression introduced in cff5925598:
after CK_HistoryNext and CK_HistoryPrev actions in input line,
the input line content is not put to the top of history.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
(hist_next): get rid of direct access to the next histroy item.
(history_show): remove redundant check.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* Removed vfs_path_element_t->raw_url_str;
* Changed some VFS prefixes (colon now used when need to split VFS prefix and VFS parameters);
* Removed vfs_translate_url() functions and related code;
* added converter of VFS parameters to string representation.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
* completed vfs_path_from_str();
* completed vfs_path_to_str() and vfs_path_to_str_elements_count();
* removed deprecated vfs_split();
* changes in all related code;
* new unit tests.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Created vfs_url_t structure
...and use it to parse and store network VFS options.
vfs_s_super structure now has a special member for network VFS options.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Formerly, each widget loaded its history self in its constructor.
Thus, history file was read as many times as many widgets with history
are in dialog.
Now all widget histories are read from ${XDG_CACHE_HOME}/mc/history
file at one time after dialog initialization.
The ev_history_load_save_t event is apllied to load histories.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Formerly, each widget saved its history self in WIDGET_DESTROY stage.
Thus, history file was read and written as many times as many widgets
with history are in dialog.
Now all widget histories are written to ${XDG_CACHE_HOME}/mc/history
file at one time before dialog destruction.
An ev_history_load_save_t event type is created to use new event engine
to save histories.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
...to some in-memory created config without write it to file.
(history_put): now uses history_save().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
What steps will reproduce the problem?
* View some text (log) file (F3), or edit (F4).
* Open search dialog (F7).
* Enter string starting with space and ending with space (I used " ERROR " without quotes), press Enter
* Press F7 to open search dialog again.
What is the expected output?
* Original string in search dialog (" ERROR " without quotes)
What do you see instead?
* "ERROR " (without leading space!)
What solution?
* In function mc_config_set_string_raw() use g_key_file_set_string() instead of g_key_file_set_value()
* change src/learn.c for handle new behavior
* write some tests for new behavior
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
How to reproduce:
1. Run mc.
2. Change both panels to listing modes.
3. Switch to the right panel.
4. Switch type of active right panel to info using menu.
Result: left panel is not active.
Expected result: left panel must become active.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Use GList for list of vfs_s_super objects in vfs_s_subclass.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
DragonFly BSD doesn't provide MAXNAMLEN macro to define size of d_name
member of dirent structure. NAME_MAX is used if MAXNAMLEN is not
provided by OS.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
When SIGINT signal is raised, the CK_Cancel message is handled by
dlg_execute_cmd() and midnight_dlg is closed.
The solution: CK_Cancel is sent to current dialog via callback, and if
current dialog doesn't handle CK_Cancel message, then handle it with common
way using dlg_execute_cmd().
Since Ctrl-g is used to generate SIGINT in MC, remove this shortcut from
all sections of keymaps except the [dialog] section.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
...instead of direct access to panels in VGS GC.
Inlcudes clean up.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
* moved from lib/vfs/mc-vfs to lib/vfs;
* split by directories for VFS-plugins and moved to src/vfs;
* lib/vfs/vfs-impl.h was merged into lib/vfs/vfs.h.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Example:
gboolean mkdir_callback(const gchar *event_group, const gchar *event_name, gpointer init_data, gpointer event_data)
{
... /* some action for handle event */
return TRUE; /* got chance to run other callbacks for this event or */
return FALSE; /* break execution for other callbacks */
}
mc_event_add ("filesystem", "mkdir", mkdir_callback, "some init data", NULL);
mc_event_add ("filesystem", "mkdir", mkdir_log_callback, "some init data", NULL);
mc_event_add ("filesystem", "mkdir", third_callback, NULL, NULL);
/*
Last add - first run. In this case execution order is
* third_callback
* mkdir_log_callback
* mkdir_callback
if third_callback fuctions will return FALSE, then other callbacks
(mkdir_log_callback and mkdir_callback) never run!
*/
... /* some code */
/* for example, after pressing F7 */
mc_event_raise("filesystem", "mkdir", "some event_data... path to directory");
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Now default key bindings are hardcoded as strings like values in keymap
file. Such presentation of key bindings allows simplify keymaps merge
when new bindings are added, replaced or removed old ones during MC
initialization.
Previously, to rebind some keys, used must redefine the entire section
where that bindings are in. New merge algorithm doesn't require the
redefinition of entire section in user's keymap file.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Most of keybind names are changed to unify that names.
Details see in doc/keybind-migration.txt file.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Added doc/keybind-migration.txt file to describe new keybinding names
used in mc.keymap.* files in 4.8.x series.
Cosmetics: reordering of keymap section declarations to provide identical
order totally in the source tree.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Now "EditPipeBlock (X)" action tries execute the
~/.local/share/mc/mcedit/macros.d/macro.X.sh script.
To bind action EditPipeBlock (X) to the any hotkey you need add this binding
into ~/.local/share/mc/mc.macros file like following:
[editor]
ctrl-Q=EditWordLeft:-1;EditWordRightHighlight:-1;EditPipeBlock:3;
ctrl-W=EditPipeBlock:1;
This means that "ctrl-W" hotkey initiates the EditPipeBlock (1) action,
editor handler translates this into execution of
~/.local/share/mc/mcedit/macros.d/macro.1.sh shell script.
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
some fixes
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
and one more fix
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
For example: "ctrl-w=action:code;action:code;action:code;"
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
The problem:
viewing binary files contain char 0x9A leads to massive screen corruption and Search
dialog pops up with 1;2c search string (multiple times depending on actual screen contents).
So it looks like the file 'presses' F7 or / and shift-right_arrow for every specified
character combination occurrence. In case of bigger files it's impossible to exit from
such viewer, as search dialog keeps popping up after closing.
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
It doesn't work as documented, but instead seems to *wrongly* identify/highlight symlinks instead.
Of course, the LINK type also fails to detect hardlinks.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
added action CK_Mark_Word to the mark current word
changed double-click the mouse handler of the editor
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Unfortunately not all systems claiming POSIX support actually define
AI_ADDRCONFIG macro, and those who define it not always implement it
(this is indeed optional). This patch makes ftpfs only set AI_ADDRCONFIG
flag to speed up lookups if it is defined, and in this case, retry the
lookup if it was rejected due to unimplemented flags.
Based upon the code by Joe Orton <jorton@redhat.com> from APR:
Copyright (C) 2003 Red Hat, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
* Restored old behaviour of A_BLINK attribute (intensity of background color instead of blinking foreground color);
* Added function tty_use_256colors() for determine terminals with 256colors support;
* Fixed background highlighting in NCurses and S-Lang.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
(higher priority rather then parameter from config file). Also added environment
variable MC_LOG_FILE for specify file name.
In additional, new section [Development] now handled. For specify if logging enabled, use
[Development]
logging = true
instead of [Midnight Commander].development.enable_logging option (WARNING: handling of
this option was removed in this commit!)
For specify file name use
[Development]
logfile = /path/to/file
If file name isn't specified, then default value will used (~/.cache/mc.log)
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Instead of hardcoded (via MC_USERCONF_DIR) path mc mc now used
dynamic directories specified by environment variables:
* XDG_CONFIG_HOME - dir for config files . By default is ~/.config/mc
* XDG_DATA_HOME - dir for some data, such as user defuned Syntax file, menu etc By default is ~/.local/share/mc
* XDG_CACHE_HOME - dir for temp files, such as cooledit.clip etc. By default is ~/.cache/mc
This is mainstream standard already adopted by many projects.
Old settings will be migrated at first time from ~/.mc to these dirs.
See http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html for more info.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
New "Simple panels swap" checkbox in "Panel options" configuration
dialog window. Unchecked by default.
Documentation update.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
fixed trouble with BS and Del in dialog input fields (in CP866 locale).
Signed-off-by: Vladislav Grishenko <themiron@mail.ru>
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Forget the old limit of 8 background and 16 foreground colors.
From now on Midnight Commander can use all the 256 colors,
as your favorite terminal emulator supports them - or not,
in which case it's not going to stay your favorite terminal for long.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
New keybinding "PanelSmartJumpUp" for the jump to the parent directory if command line is empty. Not defined by default.
This binding maybe used for bind 'Backspace' as hotkey for 'cd ..' (only if command line is empty).
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
lib/vfs/mc-vfs/samba/configure can't set the value of SAMBA_CFLAGS
in lib/vfs/mc-vfs/Makefile.am.
The solution: to avoid configuration code duplication, use environment
variables SMBCONFIGDIR and SMBCODEPAGEDIR to set up values of configdir
and codepagedir variables in lib/vfs/mc-vfs/samba/Makefile because
samba configure is child process of main configure.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Use PRIuMAX and PRIXMAX instead of ju and jX modifiers respectively
for formatted output of uintmax_t variables.
If PRIXMAX is not defined (i.e. in Solaris9), use PRIxMAX instead.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Don't mix GLib and GModule compiler and linker options.
Use gmodule-no-export if present to avoid use -Wl,--export-dynamic
option with some linkers. If gmodule-no-export is not available,
use generic gmodule.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
All file panels related stuff was moved to midnight.[ch].
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
menubar_set_visible(): new function to get rid of menubar_visible global variable
in widgtes library.
menu_set_name(): new function to avoid total recreation of main menu
after change panel layout.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Use single function to calculate of text lines and columns
because algorithm is the same for all encodings.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
On many distributions by default only the reduced version of p7zip (7zr)
is installed (e.g. on Debian p7zip package provides 7zr executable and
p7zip-full package provides 7za executable).
This patch adds the detection of 7zr in case if 7za is not available.
when searching in files for non english word with "Whole words" set "on" - then nothig will be found
try search word: "время" and also "time" in next example:
'time'
Время
'Time'
'время'
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
In case sensitive sort, the order of files and directories is following:
hidden dirs
dirs
hidden files
files
In case insensitive mode, directories are mixed and files are mixed too:
dirs (hidden and not are mixed)
files (hidden and not are mixed).
This commit defines the sort order independently of case sensitivity:
hidden dirs
dirs
hidden files
files
Files in UTF-8 locale require special handling: leading dot must not be
processed in g_utf8_casefold() funcion.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
The bug is caused by extra "continue" statement in case '*'/case '?' branch.
As a result, \ is added to converted string, but following N is not.
Example: when one renames many files using "*" to "a*z", "a*z" gets converted to "a\z" instead of correct "a\1z"
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Added capability to load codepage list from /usr/share/mc/mc.charsets
and /etc/mc/mc.charsets and merge them then.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Midnight Commander's color/skin engine often reuses the same color definition for multiple elements on the UI.
This unnecessarily limits the possibilities when playing with colors.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* commit 'origin/2287_persistent_bookmarks':
Fix in lib/logging.c for proper work on 64-bit platforms.
Change of bookmark drawing.
Fixed memory leak: destroy serialization bookmarks if file position is not saved.
Use GArray for bookmarks instead of raw array.
Minor optimization, type accuracy, includes fix.
Ticket #2287 (mcedit: persistent bookmarks)
Now --disable-vfs doesn't mean the total disabling of VFS.
With --disable-vfs option, the localfs module is built
to use the change of file panel encoding.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Save bookmarks of internal edit in filepos
Signed-off-by: Filip Sefrna <fsefrna@gmail.com>
Type accuracy.
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Factored out error checking from ftpfs_initconn into
ftpfs_init_data_socket and fixed the logic of the initialization of DATA
connection. Now initialization of passive connection is retried if
needed after the failure to open the socket.
Got rid of goto statements and divided the code in two parts (passive &
active). Initial state is now properly restored after the function runs.
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
Miscellaneous refactoring:
* Factored out the active IPV4/IPV6 FTP connection mode setup
routine in a separate function (ftpfs_setup_active) to make the
logic more clear.
* Factored out ftpfs_init_data_socket from ftpfs_initconn in order
to make it possible to fix the logic later on.
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
In current implementation few issues were fixed making passive
connection scheme more reliable:
* If it's IPV4, try PASV first, as some servers and ALGs get
confused by EPSV, and only then EPSV as a fallback
* When trying PASV or EPSV, actually try to connect to the provided
port and if the connection fails, still try the next method
* PASV and EPSV response parsing code was factored out in separate
routines for clarity
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
* Fixed endianness issue introduced by IPV6 patch, which prevented
active connections to be established via PORT mechanism.
FTP server always expects to see the port broken down into bytes
in network byte order, so the transformation to host byte order is
only needed when using EPRT.
* Some IPV4 FTP servers and FTP ALGs / NATs with connection tracking
become confused when you try to use EPSV or EPRT instead of PASV or
PORT respectively.
This commit changes current FTP connection scheme: if we deal with
an IPV4 host, instead of first trying to use EPRT, first try to
use PORT and only if it fails try EPRT as a fallback.
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
Initial step: added description for A1 and C1 keys.
A1 and C1 keybindings are applied to WTree, WInput and WPanel widgets.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Fixed modifiers and removed types recastin in envoronment
variables and messages forming.
Minor code cleanup.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* m4: AC_CONFIG_SUBDIRS() macros should be always called without relation to enable/disable samba support
* vfs/samba: configure.ac: renamed --with-configdir to --with-smb-configdir
* vfs/samba: configure.ac: renamed --with-codepagedir to --with-smb-codepagedir
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Removed mcserver and mcfs support.
Reasons:
(1) no longer builds
(2) no one is willing to support it
(3) possibly contains unfixed security holes
(4) makes no sense in view of the availability of FISH
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Some extfs script modes in the repository differ from the ones they get
when installed. This is annoying for those, who hardlink files to the
installed location instead of copying, because git status will show
these files as modified.
Fixing permissions in the repository will resolve this issue.
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
1. create directory named "????" and enter into this directory
2. point at any file in other panel
3. press F5 and Enter
Segfault
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Renamed and moved src/editor/editloc.[ch] -> lib/lock.[ch].
Renamed lock handling functions.
Fixed library order in src/Makefile.am.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
added selection with mouse
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Code cleanup: make visibility of some functions as static
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
fixed skins
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
new behavior: DEL - clear current field of dialog if text in the field is not modify and cursor not moved.
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Code cleanups: avoid compiler warnings
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
If filled region is larger than screen, NCurses doesn't fill it
unlike S-Lang. This patch fixes such behaviour: only visible part
of region is filled.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Panel options are moved to new dialog.
Panel setup options are collected in a special structure.
Includes clean up.
Code indentation.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Split assignments and conditions. Type accuracy. Minor optimization.
Thanks Vit Rosin for original patch.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Changes into lib directory
* samba: handling result of system() call
* rpc: handling write errors
* ftpfs: ignoring result of fwrite() on logfile (make compiler happy ;-))
* fish: proper handling of file io calls
* ignoring result of fwrite() on logfile (make compiler happy ;-))
* lib/util.c: handling fwrite() call errors in mc_util_write_backup_content()
* lib/utilunix.c:
* handling possible error on dup() in close_error_pipe()
* handling possible error on getcwd() in mc_realpath()
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
On some systems i18n_checktimelength may vary not only depending on the
locale but also on the current month. This patch introduces a cyclic
check that loops through all of the months to find out which one has the
longest name.
However, since this function is called on every pannel reload and now
makes 24 calls to str_term_width1 and strftime it makes sense to
introduce a cache for the resulting value.
Thanks to Sergey Fionov <fionov@gmail.com> for the initial patch.
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
added src/diffviewer/ydiff.[ch] into project tree
added entry 'View diff files' into 'Command' menu
added 'diffviewer' color pairs
fixed Makefile and configure.am
added new binding CmdDiffView into '[main]' section
Big thanx to 'Daniel Borca <dborca@yahoo.com>' for ydiff
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Added diffviewer own library
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Fixed CFLAGS for diffviewer.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
changed skins, added section
[diffviewer]
added=
changedline=
changednew=
changed=
removed=
folder=
error=
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Reimplementation of hardcoded shortcuts to keybindings.
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
My system wide .rarrc contains these switches
switches= -m5 -mdG -r -s -t -ol -tl
So whenever you list the contents of any archive or copy a file out of
it, RAR/UNRAR will traverse *all* sub directories (note -r, recursive
switch) in a current directory trying to find *all* archives with the
same name. So, the net result might be that unrar/rar will extract
the wrong file and spend a lot of time trying to find archives with
the same name.
That's why I strongly suggest disabling user/system configuration
for archive list and copyout operations (note the added -cfg switch).
I have contacted Eugene Roshal and he said that he won't disable -r switch
for extract and archive list operations, so, we can only fix this problem
on our side.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>