mc fails to build when using musl as the libc provider. This is due to
the CTRL() macro not being defined in <termios.h>. We could include
<sys/ttydefaults.h> explicitly but it's easier just to ensure CTRL is
defined.
This patch taken from the Sabotage Linux distro which fixes this. This
patch has also been tested and works with the OpenEmbedded build
system.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
export PS1=$'\[\e[38:5:214m\]orange$\[\e[0m\]'
mc
Expected: "orange$" prompt shows up in black under the panels.
Actual: some additional garbage.
The 256-color and true-color escape sequences should allow either ';' or
':' inside as separator, actually, ':' is the more correct according to
ECMA-48. Some terminal emulators (e.g. xterm, gnome-terminal) support
this.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Such dialog allows:
* show status of operation;
* control operation using dialog buttons (Abort, Suspend, Resume, etc).
Status dialog is raised after specified delay after operation start.
If operation duration is less than delay, the status dialog is not raised.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Initial step: created a simple timer.
Unlike GTimer, mc timer doesn't use a lot of multiplications and
divisions to convert seconds to nanoseconds and back. mc timer use only
multiplications to convert seconds to microseconds.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
The "topmiddle" and "bottommiddle" characters are defined incorrectly
in many skins. This is because the correct definition wouldn't work
with S-Lang build. The only place these characters are used is the
diffviewer if either the +/- signs or the line numbers are shown,
enabled by pressing S or L. The correct definition of these characters
currently show up as 'v' and 'w' characters.
The fix makes the diffviewer use tty_print_alt_char() as it is being used
in other parts of the code, and hence it fixes the bug.
It also fixes the skin definitions.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Use GQueue instead of GList to store listbox entries.
g_list_append() function is slow because it uses g_list_last()
internally to traverse from the beginning to the end of a list, so
forming a list of results has O(n*n) complexity instead of O(n).
GQueue contains pointers to head and tail of list and list length.
So in this case we don't need seach end of list every time when we
want append listbox entry to the listbox.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
If you navigate in your shell to a directory containing symlinks and
then start mc, mc will show the canonical path instead. It would be nice
to make it show the directory with the symlinks.
Example: in your shell execute these:
user:~$ mkdir -p /tmp/a/b /tmp/x ; ln -s /tmp/a/b /tmp/x/y
user:~$ cd /tmp/x/y
user:/tmp/x/y$ mc
In mc you'll find yourself in /tmp/a/b, though it'd be nicer to see
/tmp/x/y at the top, and correspondingly navigating to the parent would
take you to /tmp/x.
If you start bash or zsh from /tmp/x/y, the new instance will start
displaying the working directory as such. They do this via the PWD env
variable. On one hand, they set and maintain PWD to point to the current
directory, using the path as specified by the user (possibly containing
symbolic links). On the other hand, they check its value at startup. If
$PWD points to the same physical directory as the actual working
directory then they use this value. If $PWD points somewhere else then
it's simply ignored (so it's a hint only as to which symlinks to use to
get to the working directory, but never alters the actual cwd).
Now mc also does the same at startup (with respect of "Cd follows
links" option). Relative directories specified in the command line are
applied after possibly replacing the canonical cwd with $PWD. This way
for example
user:/tmp/x/y$ mc . ..
opens two panels in /tmp/x/y and /tmp/x instead of /tmp/a/b and /tmp/a
(whereas /tmp/x is actually a different directory than /tmp/a).
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>