Multi-screen engine doesn't handle correctly some cases.
Example:
1. Run mc.
2. Open some file in internal editor.
3. Switch back to the file panels.
4. Open another file in internal editor. As a result, two editors are opened.
5. Close current editor. Now you are in file panels.
6. Run screen list dialog (Meta-`).
6a. The 1st editor is highlighted as current screen. This is wrong.
Current screen is file panels.
6b. Cannot switch to the opened editor in this dialog.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
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>
On some FreeBSD servers with tcsh shell the following bug occurs
sometimes: trying to exit from mc it hangs. More detail:
1. run mc, press F10, press Enter - hangs
2. run mc, press F10, choose Command->File->Exit - NOT hangs.
This hang up is a result of subshell_chdir() call after subshell
close (after exit_subshell() call). When the F10 key is handled in
dlg_try_hotkey() function, the do_select_widget() is called. As a
result, the WIDGET_FOCUS message is sent to the active panel and panel
calls subshell_chdir(). But subshell is already closed at this
moment and midnight_dlg is in DLG_CLOSED state.
The solution: don't send DLG_DRAW, DLG_FOCUS and DLG_UNFOCUS messages to
the inactive dialog (that is not in DLG_ACTIVE state). Since dialog is
about destroying (in DLG_CLOSED state) or not visible in screen (in
DLG_SUSPENDED state) it is not needed in any visual changes.
Thanks Tempread for investigation of the problem root.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* fixed include? keyword
* fixed $ in the end of regexps
Valid highlighting of regexps can't be done with syntaxcolor.
Ruby uses '/' to divide numbers and for defining regexps.
Signed-off-by: Mikhail S. Pobolovets <styx.mp@gmail.com>
Two common line jump protocols supported by mc are:
* mcedit +lineno file
* mcedit file:lineno
Unfortunately, in the implementation of the first protocol, if line
number equals to zero, which is often used to position the cursor at the
beginning of the file, it is completely ignored and file "+0" is opened
instead.
This patch fixes aforementioned issue.
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
* 2237_man_pages:
Ticket #2253: fixed formatting of DONT_SPLIT option.
Fixed Russian man page.
Fixed a typo and bad grammar in man2hlp.
Fixed man2hlp warnings by renaming conflicting LANG variable to HLP_LANG.
Now date of modification is automatically filled in header of man page.
Fixed typos in docs.
Performed a RegExp mass replacement in the manual pages of
Typo fixes (English man page).
Ticket #2237: Automatic date and version substitution for man pages
Currently the date and the version of Midnight Commander in the man
pages has to be changed manually every release. This is being done
sporadically and as the result, the man pages shipped for e.g. 4.7.2
release contain the 4.7.0-pre1 signature, which is quite confusing.
With this patch, the version is substituted with @DISTR_VERSION@ for all
the man pages and the date is automatically updated to the English man
pages. Other man pages still have the manually updated date of the last
translation.
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
The following functions:
directory_history_add
directory_history_next
directory_history_prev
directory_history_list
get_parent_dir_name
_do_panel_cd
do_panel_cd
were moved from main.[ch] to screen.c and panel.h.
Type accuracy.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
These functions were used before implementation of panel key bindings.
Now these wrappers are unneded.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
mcdiff: some warnings fixed.
search.c: In function ‘mcdiffview_do_search_backward’:
search.c:183: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
ydiff.c: In function ‘cvt_fget’:
ydiff.c:1653: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
ydiff.c: In function ‘dview_execute_cmd’:
ydiff.c:3085: warning: overflow in implicit constant conversion [-Woverflow]
fixed mcdiff search.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>