update to mc with internal slang-2.0.5

This commit is contained in:
Jindrich Novy 2005-11-14 14:40:23 +00:00
parent d42c8bee89
commit ebf06bc500
3 changed files with 199 additions and 84 deletions

View File

@ -1,6 +1,42 @@
--- mc-4.6.1a/src/widget.c.laf 2005-11-06 08:49:25.000000000 +0100 --- mc-4.6.1a/src/main.c.laf 2005-11-13 17:08:54.000000000 +0100
+++ mc-4.6.1a/src/widget.c 2005-11-06 16:06:21.000000000 +0100 +++ mc-4.6.1a/src/main.c 2005-11-14 15:08:43.000000000 +0100
@@ -1948,52 +1948,74 @@ input_new (int y, int x, int color, int @@ -270,6 +270,9 @@ int midnight_shutdown = 0;
/* The user's shell */
const char *shell = NULL;
+/* Is the LANG UTF-8 ? */
+gboolean is_utf8 = FALSE;
+
/* The xterm title */
char *xterm_title_str = NULL;
@@ -2167,6 +2170,13 @@ main (int argc, char *argv[])
/* if on, it displays the information that files have been moved to ~/.mc */
int show_change_notice = 0;
+ /* Check whether we have UTF-8 locale */
+ char *lang = getenv("LANG");
+ size_t len = strlen(lang);
+
+ if ( len >= 5 && !strcasecmp(&lang[len-5],"UTF-8") )
+ is_utf8 = TRUE;
+
/* We had LC_CTYPE before, LC_ALL includs LC_TYPE as well */
setlocale (LC_ALL, "");
bindtextdomain ("mc", LOCALEDIR);
--- mc-4.6.1a/src/main.h.laf 2005-11-13 17:08:54.000000000 +0100
+++ mc-4.6.1a/src/main.h 2005-11-14 15:18:21.000000000 +0100
@@ -67,6 +67,7 @@ extern int alternate_plus_minus;
extern int only_leading_plus_minus;
extern int output_starts_shell;
extern int midnight_shutdown;
+extern gboolean is_utf8;
extern char *xterm_title_str;
extern char cmd_buf [512];
extern const char *shell;
--- mc-4.6.1a/src/widget.c.laf 2005-11-13 17:08:54.000000000 +0100
+++ mc-4.6.1a/src/widget.c 2005-11-14 15:22:00.000000000 +0100
@@ -1948,52 +1948,86 @@ input_new (int y, int x, int color, int
return in; return in;
} }
@ -38,7 +74,10 @@
+ addch ('^'); + addch ('^');
+#else +#else
+ if (color) attrset (MARKED_COLOR); + if (color) attrset (MARKED_COLOR);
+ if (is_utf8)
+ SLsmg_write_string("▲"); + SLsmg_write_string("▲");
+ else
+ addch ('^');
+ if (color) attrset (NORMAL_COLOR); + if (color) attrset (NORMAL_COLOR);
+#endif +#endif
@ -51,12 +90,15 @@
+#ifndef UTF8 +#ifndef UTF8
+ if (selected == count-1) + if (selected == count-1)
+ one_vline (); + one_vline ();
else + else
- addch ('v');
+ addch ('v'); + addch ('v');
+#else +#else
+ if (color) attrset (MARKED_COLOR); + if (color) attrset (MARKED_COLOR);
+ if (is_utf8)
+ SLsmg_write_string("▼"); + SLsmg_write_string("▼");
else
- addch ('v');
+ addch('v');
+ if (color) attrset (NORMAL_COLOR); + if (color) attrset (NORMAL_COLOR);
+#endif +#endif
@ -84,10 +126,16 @@
+ else + else
+ addch ('*'); + addch ('*');
+#else +#else
+ if (is_utf8)
+ SLsmg_write_string("▒"); + SLsmg_write_string("▒");
+ else
+ one_vline();
+ else { + else {
+ if (color) attrset (MARKED_COLOR); + if (color) attrset (MARKED_COLOR);
+ SLsmg_write_string("◌"); + if (is_utf8)
+ SLsmg_write_string("●");
+ else
+ addch('*');
+ if (color) attrset (NORMAL_COLOR); + if (color) attrset (NORMAL_COLOR);
+ } + }
+#endif +#endif
@ -108,7 +156,7 @@
listbox_draw (WListbox *l, int focused) listbox_draw (WListbox *l, int focused)
{ {
WLEntry *e; WLEntry *e;
@@ -2034,7 +2056,7 @@ listbox_draw (WListbox *l, int focused) @@ -2034,7 +2068,7 @@ listbox_draw (WListbox *l, int focused)
if (!l->scrollbar) if (!l->scrollbar)
return; return;
attrset (normalc); attrset (normalc);
@ -117,9 +165,9 @@
} }
/* Returns the number of items between s and e, /* Returns the number of items between s and e,
--- mc-4.6.1a/src/screen.c.laf 2005-11-06 08:49:25.000000000 +0100 --- mc-4.6.1a/src/screen.c.laf 2005-11-13 17:08:54.000000000 +0100
+++ mc-4.6.1a/src/screen.c 2005-11-06 16:04:59.000000000 +0100 +++ mc-4.6.1a/src/screen.c 2005-11-13 17:08:54.000000000 +0100
@@ -887,6 +887,9 @@ show_dir (WPanel *panel) @@ -888,6 +888,9 @@ show_dir (WPanel *panel)
} }
#endif /* HAVE_SLANG */ #endif /* HAVE_SLANG */
@ -129,7 +177,7 @@
if (panel->active) if (panel->active)
attrset (REVERSE_COLOR); attrset (REVERSE_COLOR);
@@ -1503,7 +1506,7 @@ use_display_format (WPanel *panel, const @@ -1504,7 +1507,7 @@ use_display_format (WPanel *panel, const
panel->dirty = 1; panel->dirty = 1;
/* Status needn't to be split */ /* Status needn't to be split */
@ -138,8 +186,8 @@
? 1 ? 1
: (panel->split+1))) - (!isstatus && panel->split); : (panel->split+1))) - (!isstatus && panel->split);
--- mc-4.6.1a/src/widget.h.laf 2005-11-06 08:49:25.000000000 +0100 --- mc-4.6.1a/src/widget.h.laf 2005-11-13 17:08:54.000000000 +0100
+++ mc-4.6.1a/src/widget.h 2005-11-06 15:53:45.000000000 +0100 +++ mc-4.6.1a/src/widget.h 2005-11-13 17:08:54.000000000 +0100
@@ -170,6 +170,10 @@ void button_set_text (WButton *b, const @@ -170,6 +170,10 @@ void button_set_text (WButton *b, const
/* Listbox manager */ /* Listbox manager */
WLEntry *listbox_get_data (WListbox *l, int pos); WLEntry *listbox_get_data (WListbox *l, int pos);

View File

@ -1,5 +1,5 @@
--- mc-4.6.1a/acinclude.m4.utf8 2005-09-28 23:49:06.000000000 +0200 --- mc-4.6.1a/acinclude.m4.utf8 2005-11-11 02:14:52.000000000 +0100
+++ mc-4.6.1a/acinclude.m4 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/acinclude.m4 2005-11-13 16:31:59.000000000 +0100
@@ -768,14 +768,14 @@ AC_DEFUN([MC_WITH_SLANG], [ @@ -768,14 +768,14 @@ AC_DEFUN([MC_WITH_SLANG], [
fi fi
@ -24,7 +24,7 @@
if test x$with_screen = xslang; then if test x$with_screen = xslang; then
AC_DEFINE(HAVE_SYSTEM_SLANG, 1, AC_DEFINE(HAVE_SYSTEM_SLANG, 1,
--- mc-4.6.1a/src/layout.c.utf8 2005-09-05 03:40:45.000000000 +0200 --- mc-4.6.1a/src/layout.c.utf8 2005-09-05 03:40:45.000000000 +0200
+++ mc-4.6.1a/src/layout.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/layout.c 2005-11-13 16:31:59.000000000 +0100
@@ -369,36 +369,36 @@ init_layout (void) @@ -369,36 +369,36 @@ init_layout (void)
while (i--) { while (i--) {
@ -99,7 +99,7 @@
widget_set_size (&the_menubar->widget, 0, 0, 1, COLS); widget_set_size (&the_menubar->widget, 0, 0, 1, COLS);
--- mc-4.6.1a/src/tty.c.utf8 2005-09-05 05:05:39.000000000 +0200 --- mc-4.6.1a/src/tty.c.utf8 2005-09-05 05:05:39.000000000 +0200
+++ mc-4.6.1a/src/tty.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/tty.c 2005-11-13 16:31:59.000000000 +0100
@@ -123,10 +123,12 @@ tty_print_char(int c) @@ -123,10 +123,12 @@ tty_print_char(int c)
* defined or not. Congratulations! At least, they left the API call * defined or not. Congratulations! At least, they left the API call
* for SLsmg_write_nchars as it has always been. * for SLsmg_write_nchars as it has always been.
@ -118,7 +118,7 @@
addch(c); addch(c);
#endif #endif
--- mc-4.6.1a/src/option.c.utf8 2005-05-27 05:35:15.000000000 +0200 --- mc-4.6.1a/src/option.c.utf8 2005-05-27 05:35:15.000000000 +0200
+++ mc-4.6.1a/src/option.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/option.c 2005-11-13 16:31:59.000000000 +0100
@@ -123,12 +123,12 @@ init_configure (void) @@ -123,12 +123,12 @@ init_configure (void)
title2 = _(" Pause after run... "); title2 = _(" Pause after run... ");
title3 = _(" Other options "); title3 = _(" Other options ");
@ -167,7 +167,7 @@
i18n_config_flag = 1; i18n_config_flag = 1;
} }
--- mc-4.6.1a/src/menu.h.utf8 2004-12-03 20:17:47.000000000 +0100 --- mc-4.6.1a/src/menu.h.utf8 2004-12-03 20:17:47.000000000 +0100
+++ mc-4.6.1a/src/menu.h 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/menu.h 2005-11-13 16:31:59.000000000 +0100
@@ -21,6 +21,8 @@ typedef struct Menu { @@ -21,6 +21,8 @@ typedef struct Menu {
menu_entry *entries; menu_entry *entries;
int start_x; /* position relative to menubar start */ int start_x; /* position relative to menubar start */
@ -178,7 +178,7 @@
extern int menubar_visible; extern int menubar_visible;
--- mc-4.6.1a/src/menu.c.utf8 2005-09-05 04:12:09.000000000 +0200 --- mc-4.6.1a/src/menu.c.utf8 2005-09-05 04:12:09.000000000 +0200
+++ mc-4.6.1a/src/menu.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/menu.c 2005-11-13 16:31:59.000000000 +0100
@@ -22,6 +22,7 @@ @@ -22,6 +22,7 @@
#include <string.h> #include <string.h>
@ -381,7 +381,7 @@
g_free (menu->help_node); g_free (menu->help_node);
g_free (menu); g_free (menu);
--- mc-4.6.1a/src/filegui.c.utf8 2005-05-27 05:35:15.000000000 +0200 --- mc-4.6.1a/src/filegui.c.utf8 2005-05-27 05:35:15.000000000 +0200
+++ mc-4.6.1a/src/filegui.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/filegui.c 2005-11-13 16:31:59.000000000 +0100
@@ -65,6 +65,7 @@ @@ -65,6 +65,7 @@
#include "filegui.h" #include "filegui.h"
#include "key.h" /* get_event */ #include "key.h" /* get_event */
@ -528,7 +528,7 @@
return dest_dir; return dest_dir;
} }
--- mc-4.6.1a/src/panelize.c.utf8 2005-05-27 05:35:15.000000000 +0200 --- mc-4.6.1a/src/panelize.c.utf8 2005-05-27 05:35:15.000000000 +0200
+++ mc-4.6.1a/src/panelize.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/panelize.c 2005-11-13 16:31:59.000000000 +0100
@@ -127,7 +127,7 @@ init_panelize (void) @@ -127,7 +127,7 @@ init_panelize (void)
i = sizeof (panelize_but) / sizeof (panelize_but[0]); i = sizeof (panelize_but) / sizeof (panelize_but[0]);
while (i--) { while (i--) {
@ -553,9 +553,9 @@
#endif /* ENABLE_NLS */ #endif /* ENABLE_NLS */
--- mc-4.6.1a/src/main.c.utf8 2005-09-06 13:38:45.000000000 +0200 --- mc-4.6.1a/src/main.c.utf8 2005-11-02 12:50:52.000000000 +0100
+++ mc-4.6.1a/src/main.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/main.c 2005-11-13 16:31:59.000000000 +0100
@@ -697,7 +697,7 @@ load_prompt (int fd, void *unused) @@ -698,7 +698,7 @@ load_prompt (int fd, void *unused)
int prompt_len; int prompt_len;
tmp_prompt = strip_ctrl_codes (subshell_prompt); tmp_prompt = strip_ctrl_codes (subshell_prompt);
@ -564,7 +564,7 @@
/* Check for prompts too big */ /* Check for prompts too big */
if (COLS > 8 && prompt_len > COLS - 8) { if (COLS > 8 && prompt_len > COLS - 8) {
@@ -1610,7 +1610,11 @@ update_xterm_title_path (void) @@ -1611,7 +1611,11 @@ update_xterm_title_path (void)
if (xterm_flag && xterm_title) { if (xterm_flag && xterm_title) {
p = s = g_strdup (strip_home_and_password (current_panel->cwd)); p = s = g_strdup (strip_home_and_password (current_panel->cwd));
do { do {
@ -577,7 +577,7 @@
} while (*++s); } while (*++s);
fprintf (stdout, "\33]0;mc - %s\7", p); fprintf (stdout, "\33]0;mc - %s\7", p);
--- mc-4.6.1a/src/view.c.utf8 2005-10-04 23:07:20.000000000 +0200 --- mc-4.6.1a/src/view.c.utf8 2005-10-04 23:07:20.000000000 +0200
+++ mc-4.6.1a/src/view.c 2005-11-08 11:34:03.000000000 +0100 +++ mc-4.6.1a/src/view.c 2005-11-13 16:31:59.000000000 +0100
@@ -43,6 +43,10 @@ @@ -43,6 +43,10 @@
#include <sys/stat.h> #include <sys/stat.h>
#include <unistd.h> #include <unistd.h>
@ -707,8 +707,8 @@
} }
col++; col++;
attrset (NORMAL_COLOR); attrset (NORMAL_COLOR);
--- mc-4.6.1a/src/screen.c.utf8 2005-10-04 01:37:51.000000000 +0200 --- mc-4.6.1a/src/screen.c.utf8 2005-11-11 04:32:40.000000000 +0100
+++ mc-4.6.1a/src/screen.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/screen.c 2005-11-13 16:31:59.000000000 +0100
@@ -171,21 +171,56 @@ add_permission_string (char *dest, int w @@ -171,21 +171,56 @@ add_permission_string (char *dest, int w
static const char * static const char *
string_file_name (file_entry *fe, int len) string_file_name (file_entry *fe, int len)
@ -1009,7 +1009,7 @@
if (!isstatus && panel->split){ if (!isstatus && panel->split){
if (second_column) if (second_column)
@@ -691,7 +796,7 @@ display_mini_info (WPanel *panel) @@ -692,7 +797,7 @@ display_mini_info (WPanel *panel)
ngettext("%s in %d file", "%s in %d files", panel->marked), ngettext("%s in %d file", "%s in %d files", panel->marked),
b_bytes, panel->marked); b_bytes, panel->marked);
@ -1018,7 +1018,7 @@
buffer [cols] = 0; buffer [cols] = 0;
p += 2; p += 2;
} else } else
@@ -1100,6 +1205,12 @@ paint_frame (WPanel *panel) @@ -1101,6 +1206,12 @@ paint_frame (WPanel *panel)
int side, width; int side, width;
const char *txt; const char *txt;
@ -1031,7 +1031,7 @@
if (!panel->split) if (!panel->split)
adjust_top_file (panel); adjust_top_file (panel);
@@ -1124,16 +1235,38 @@ paint_frame (WPanel *panel) @@ -1125,16 +1236,38 @@ paint_frame (WPanel *panel)
if (format->string_fn){ if (format->string_fn){
txt = format->title; txt = format->title;
@ -1074,7 +1074,7 @@
attrset (NORMAL_COLOR); attrset (NORMAL_COLOR);
one_vline (); one_vline ();
--- mc-4.6.1a/src/widget.h.utf8 2005-06-14 15:02:31.000000000 +0200 --- mc-4.6.1a/src/widget.h.utf8 2005-06-14 15:02:31.000000000 +0200
+++ mc-4.6.1a/src/widget.h 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/widget.h 2005-11-13 16:31:59.000000000 +0100
@@ -22,6 +22,7 @@ typedef struct WButton { @@ -22,6 +22,7 @@ typedef struct WButton {
char *text; /* text of button */ char *text; /* text of button */
int hotkey; /* hot KEY */ int hotkey; /* hot KEY */
@ -1118,7 +1118,7 @@
int need_push; /* need to push the current Input on hist? */ int need_push; /* need to push the current Input on hist? */
char **completions; /* Possible completions array */ char **completions; /* Possible completions array */
--- mc-4.6.1a/src/tty.h.utf8 2005-09-05 04:14:29.000000000 +0200 --- mc-4.6.1a/src/tty.h.utf8 2005-09-05 04:14:29.000000000 +0200
+++ mc-4.6.1a/src/tty.h 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/tty.h 2005-11-13 16:31:59.000000000 +0100
@@ -8,6 +8,8 @@ @@ -8,6 +8,8 @@
of ifdefs in the other files small. of ifdefs in the other files small.
*/ */
@ -1129,7 +1129,7 @@
# include "myslang.h" # include "myslang.h"
#endif #endif
--- mc-4.6.1a/src/hotlist.c.utf8 2005-05-27 05:35:15.000000000 +0200 --- mc-4.6.1a/src/hotlist.c.utf8 2005-05-27 05:35:15.000000000 +0200
+++ mc-4.6.1a/src/hotlist.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/hotlist.c 2005-11-13 16:31:59.000000000 +0100
@@ -555,7 +555,7 @@ init_i18n_stuff(int list_type, int cols) @@ -555,7 +555,7 @@ init_i18n_stuff(int list_type, int cols)
row = hotlist_but [i].y; row = hotlist_but [i].y;
@ -1191,7 +1191,7 @@
strip_password (label_string, 1); strip_password (label_string, 1);
--- mc-4.6.1a/src/help.c.utf8 2005-07-22 11:29:50.000000000 +0200 --- mc-4.6.1a/src/help.c.utf8 2005-07-22 11:29:50.000000000 +0200
+++ mc-4.6.1a/src/help.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/help.c 2005-11-13 16:31:59.000000000 +0100
@@ -449,10 +449,28 @@ static void help_show (Dlg_head *h, cons @@ -449,10 +449,28 @@ static void help_show (Dlg_head *h, cons
#ifndef HAVE_SLANG #ifndef HAVE_SLANG
addch (acs_map [c]); addch (acs_map [c]);
@ -1235,7 +1235,7 @@
if (!filename) if (!filename)
g_free (hlpfile); g_free (hlpfile);
--- mc-4.6.1a/src/wtools.c.utf8 2005-09-05 05:21:32.000000000 +0200 --- mc-4.6.1a/src/wtools.c.utf8 2005-09-05 05:21:32.000000000 +0200
+++ mc-4.6.1a/src/wtools.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/wtools.c 2005-11-13 16:31:59.000000000 +0100
@@ -49,11 +49,11 @@ create_listbox_window (int cols, int lin @@ -49,11 +49,11 @@ create_listbox_window (int cols, int lin
/* Adjust sizes */ /* Adjust sizes */
lines = (lines > LINES - 6) ? LINES - 6 : lines; lines = (lines > LINES - 6) ? LINES - 6 : lines;
@ -1295,8 +1295,8 @@
quick_widgets[0].x_divisions = quick_widgets[1].x_divisions = len; quick_widgets[0].x_divisions = quick_widgets[1].x_divisions = len;
#endif /* ENABLE_NLS */ #endif /* ENABLE_NLS */
--- mc-4.6.1a/src/util.h.utf8 2005-10-04 17:20:10.000000000 +0200 --- mc-4.6.1a/src/util.h.utf8 2005-11-03 03:18:38.000000000 +0100
+++ mc-4.6.1a/src/util.h 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/util.h 2005-11-13 16:31:59.000000000 +0100
@@ -111,6 +111,13 @@ void init_uid_gid_cache (void); @@ -111,6 +111,13 @@ void init_uid_gid_cache (void);
char *get_group (int); char *get_group (int);
char *get_owner (int); char *get_owner (int);
@ -1312,7 +1312,7 @@
#define MIN_I18NTIMELENGTH 10 #define MIN_I18NTIMELENGTH 10
#define STD_I18NTIMELENGTH 12 #define STD_I18NTIMELENGTH 12
--- mc-4.6.1a/src/widget.c.utf8 2005-10-08 06:52:42.000000000 +0200 --- mc-4.6.1a/src/widget.c.utf8 2005-10-08 06:52:42.000000000 +0200
+++ mc-4.6.1a/src/widget.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/widget.c 2005-11-13 16:31:59.000000000 +0100
@@ -35,6 +35,9 @@ @@ -35,6 +35,9 @@
#include "global.h" #include "global.h"
@ -2028,8 +2028,8 @@
return in; return in;
} }
--- mc-4.6.1a/src/util.c.utf8 2005-10-04 17:20:10.000000000 +0200 --- mc-4.6.1a/src/util.c.utf8 2005-11-03 03:18:38.000000000 +0100
+++ mc-4.6.1a/src/util.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/util.c 2005-11-13 16:31:59.000000000 +0100
@@ -33,7 +33,11 @@ @@ -33,7 +33,11 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
@ -2471,7 +2471,7 @@
*w = 0; *w = 0;
return s; return s;
--- mc-4.6.1a/src/file.c.utf8 2005-09-17 13:45:13.000000000 +0200 --- mc-4.6.1a/src/file.c.utf8 2005-09-17 13:45:13.000000000 +0200
+++ mc-4.6.1a/src/file.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/file.c 2005-11-13 16:31:59.000000000 +0100
@@ -164,15 +164,20 @@ static const char * @@ -164,15 +164,20 @@ static const char *
do_transform_source (FileOpContext *ctx, const char *source) do_transform_source (FileOpContext *ctx, const char *source)
{ {
@ -2511,7 +2511,7 @@
} }
--- mc-4.6.1a/src/find.c.utf8 2005-07-07 21:34:56.000000000 +0200 --- mc-4.6.1a/src/find.c.utf8 2005-07-07 21:34:56.000000000 +0200
+++ mc-4.6.1a/src/find.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/find.c 2005-11-13 16:31:59.000000000 +0100
@@ -217,7 +217,7 @@ find_parameters (char **start_dir, char @@ -217,7 +217,7 @@ find_parameters (char **start_dir, char
int l1, maxlen = 0; int l1, maxlen = 0;
@ -2560,7 +2560,7 @@
list->list[next_free].f.marked = 0; list->list[next_free].f.marked = 0;
list->list[next_free].f.link_to_dir = link_to_dir; list->list[next_free].f.link_to_dir = link_to_dir;
--- mc-4.6.1a/src/myslang.h.utf8 2005-09-05 05:22:04.000000000 +0200 --- mc-4.6.1a/src/myslang.h.utf8 2005-09-05 05:22:04.000000000 +0200
+++ mc-4.6.1a/src/myslang.h 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/myslang.h 2005-11-13 16:31:59.000000000 +0100
@@ -11,6 +11,10 @@ @@ -11,6 +11,10 @@
#endif /* HAVE_SLANG_SLANG_H */ #endif /* HAVE_SLANG_SLANG_H */
#endif #endif
@ -2573,7 +2573,7 @@
KEY_BACKSPACE = 400, KEY_BACKSPACE = 400,
KEY_END, KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT, KEY_END, KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT,
--- mc-4.6.1a/src/achown.c.utf8 2005-09-05 03:36:58.000000000 +0200 --- mc-4.6.1a/src/achown.c.utf8 2005-09-05 03:36:58.000000000 +0200
+++ mc-4.6.1a/src/achown.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/achown.c 2005-11-13 16:31:59.000000000 +0100
@@ -584,6 +584,12 @@ init_chown_advanced (void) @@ -584,6 +584,12 @@ init_chown_advanced (void)
b_att[2] = button_new (XTRACT (6)); b_att[2] = button_new (XTRACT (6));
b_user = button_new (XTRACT (5)); b_user = button_new (XTRACT (5));
@ -2588,7 +2588,7 @@
add_widget (ch_dlg, b_group); add_widget (ch_dlg, b_group);
add_widget (ch_dlg, b_user); add_widget (ch_dlg, b_user);
--- mc-4.6.1a/src/dialog.c.utf8 2005-09-05 05:20:27.000000000 +0200 --- mc-4.6.1a/src/dialog.c.utf8 2005-09-05 05:20:27.000000000 +0200
+++ mc-4.6.1a/src/dialog.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/dialog.c 2005-11-13 16:31:59.000000000 +0100
@@ -166,7 +166,7 @@ common_dialog_repaint (struct Dlg_head * @@ -166,7 +166,7 @@ common_dialog_repaint (struct Dlg_head *
if (h->title) { if (h->title) {
@ -2599,7 +2599,7 @@
} }
} }
--- mc-4.6.1a/src/boxes.c.utf8 2005-06-14 15:02:31.000000000 +0200 --- mc-4.6.1a/src/boxes.c.utf8 2005-06-14 15:02:31.000000000 +0200
+++ mc-4.6.1a/src/boxes.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/boxes.c 2005-11-13 16:31:59.000000000 +0100
@@ -153,23 +153,23 @@ display_init (int radio_sel, char *init_ @@ -153,23 +153,23 @@ display_init (int radio_sel, char *init_
display_title = _(display_title); display_title = _(display_title);
for (i = 0; i < LIST_TYPES; i++) { for (i = 0; i < LIST_TYPES; i++) {
@ -2773,7 +2773,7 @@
i18n_flag = 1; i18n_flag = 1;
} }
--- mc-4.6.1a/src/learn.c.utf8 2005-05-27 05:35:15.000000000 +0200 --- mc-4.6.1a/src/learn.c.utf8 2005-05-27 05:35:15.000000000 +0200
+++ mc-4.6.1a/src/learn.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/src/learn.c 2005-11-13 16:31:59.000000000 +0100
@@ -237,7 +237,7 @@ init_learn (void) @@ -237,7 +237,7 @@ init_learn (void)
learn_but[0].x = 78 / 2 + 4; learn_but[0].x = 78 / 2 + 4;
@ -2784,7 +2784,7 @@
learn_title = _(learn_title); learn_title = _(learn_title);
i18n_flag = 1; i18n_flag = 1;
--- mc-4.6.1a/edit/edit-widget.h.utf8 2005-08-15 22:34:26.000000000 +0200 --- mc-4.6.1a/edit/edit-widget.h.utf8 2005-08-15 22:34:26.000000000 +0200
+++ mc-4.6.1a/edit/edit-widget.h 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/edit/edit-widget.h 2005-11-13 16:31:59.000000000 +0100
@@ -30,6 +30,11 @@ typedef struct edit_key_map_type { @@ -30,6 +30,11 @@ typedef struct edit_key_map_type {
long command; long command;
} edit_key_map_type; } edit_key_map_type;
@ -2825,7 +2825,7 @@
unsigned long stack_size_mask; unsigned long stack_size_mask;
unsigned long stack_bottom; unsigned long stack_bottom;
--- mc-4.6.1a/edit/editkeys.c.utf8 2005-08-10 18:47:44.000000000 +0200 --- mc-4.6.1a/edit/editkeys.c.utf8 2005-08-10 18:47:44.000000000 +0200
+++ mc-4.6.1a/edit/editkeys.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/edit/editkeys.c 2005-11-13 16:31:59.000000000 +0100
@@ -181,10 +181,10 @@ static const edit_key_map_type common_ke @@ -181,10 +181,10 @@ static const edit_key_map_type common_ke
* 'command' is one of the editor commands from editcmddef.h. * 'command' is one of the editor commands from editcmddef.h.
*/ */
@ -2881,7 +2881,7 @@
return 0; return 0;
} }
--- mc-4.6.1a/edit/editwidget.c.utf8 2005-09-07 10:54:12.000000000 +0200 --- mc-4.6.1a/edit/editwidget.c.utf8 2005-09-07 10:54:12.000000000 +0200
+++ mc-4.6.1a/edit/editwidget.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/edit/editwidget.c 2005-11-13 16:31:59.000000000 +0100
@@ -344,7 +344,8 @@ edit_callback (Widget *w, widget_msg_t m @@ -344,7 +344,8 @@ edit_callback (Widget *w, widget_msg_t m
case WIDGET_KEY: case WIDGET_KEY:
@ -2893,7 +2893,7 @@
/* The user may override the access-keys for the menu bar. */ /* The user may override the access-keys for the menu bar. */
if (edit_translate_key (e, parm, &cmd, &ch)) { if (edit_translate_key (e, parm, &cmd, &ch)) {
--- mc-4.6.1a/edit/editcmd.c.utf8 2005-10-04 23:15:06.000000000 +0200 --- mc-4.6.1a/edit/editcmd.c.utf8 2005-10-04 23:15:06.000000000 +0200
+++ mc-4.6.1a/edit/editcmd.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/edit/editcmd.c 2005-11-13 16:30:21.000000000 +0100
@@ -61,7 +61,7 @@ @@ -61,7 +61,7 @@
#define edit_get_save_file(f,h) input_expand_dialog (h, _(" Enter file name: "), f) #define edit_get_save_file(f,h) input_expand_dialog (h, _(" Enter file name: "), f)
@ -3837,26 +3837,27 @@
/* collect max MAX_WORD_COMPLETIONS completions */ /* collect max MAX_WORD_COMPLETIONS completions */
while (*num < MAX_WORD_COMPLETIONS) { while (*num < MAX_WORD_COMPLETIONS) {
@@ -2739,11 +3062,16 @@ edit_collect_completions (WEdit *edit, l @@ -2739,11 +3062,14 @@ edit_collect_completions (WEdit *edit, l
buffers1[start >> S_EDIT_BUF_SIZE][start & M_EDIT_BUF_SIZE]; buffers1[start >> S_EDIT_BUF_SIZE][start & M_EDIT_BUF_SIZE];
skip = 0; skip = 0;
for (i = 0; i < *num; i++) { for (i = 0; i < *num; i++) {
+#ifndef UTF8 - if (strncmp
if (strncmp - ((char *) &compl[i].text[word_len],
((char *) &compl[i].text[word_len], - (char *) &bufpos[word_len], max (len,
(char *) &bufpos[word_len], max (len,
- compl[i].len) - - compl[i].len) -
- word_len) == 0) { - word_len) == 0) {
+#ifndef UTF8
+ if (strncmp ((char *) &compl[i].text[word_len],
+ (char *) &bufpos[word_len],
+#else /* UTF8 */ +#else /* UTF8 */
+ if (wcsncmp + if (wcsncmp ((wchar_t *) &compl[i].text[word_len],
+ ((wchar_t *) &compl[i].text[word_len], + (wchar_t *) &bufpos[word_len],
+ (wchar_t *) &bufpos[word_len], max (len,
+#endif /* UTF8 */ +#endif /* UTF8 */
+ compl[i].len) - word_len) == 0) { + max (len, compl[i].len) - word_len) == 0) {
skip = 1; skip = 1;
break; /* skip it, already added */ break; /* skip it, already added */
} }
@@ -2751,7 +3079,7 @@ edit_collect_completions (WEdit *edit, l @@ -2751,7 +3077,7 @@ edit_collect_completions (WEdit *edit, l
if (skip) if (skip)
continue; continue;
@ -3865,7 +3866,7 @@
compl[*num].len = len; compl[*num].len = len;
for (i = 0; i < len; i++) for (i = 0; i < len; i++)
compl[*num].text[i] = *(bufpos + i); compl[*num].text[i] = *(bufpos + i);
@@ -2765,6 +3093,18 @@ edit_collect_completions (WEdit *edit, l @@ -2765,6 +3091,18 @@ edit_collect_completions (WEdit *edit, l
return max_len; return max_len;
} }
@ -3884,7 +3885,7 @@
/* let the user select its preferred completion */ /* let the user select its preferred completion */
static void static void
@@ -2777,6 +3117,9 @@ edit_completion_dialog (WEdit * edit, in @@ -2777,6 +3115,9 @@ edit_completion_dialog (WEdit * edit, in
WListbox *compl_list; WListbox *compl_list;
int compl_dlg_h; /* completion dialog height */ int compl_dlg_h; /* completion dialog height */
int compl_dlg_w; /* completion dialog width */ int compl_dlg_w; /* completion dialog width */
@ -3894,7 +3895,7 @@
/* calculate the dialog metrics */ /* calculate the dialog metrics */
compl_dlg_h = num_compl + 2; compl_dlg_h = num_compl + 2;
@@ -2812,9 +3155,18 @@ edit_completion_dialog (WEdit * edit, in @@ -2812,9 +3153,18 @@ edit_completion_dialog (WEdit * edit, in
add_widget (compl_dlg, compl_list); add_widget (compl_dlg, compl_list);
/* fill the listbox with the completions */ /* fill the listbox with the completions */
@ -3913,7 +3914,7 @@
/* pop up the dialog */ /* pop up the dialog */
run_dlg (compl_dlg); run_dlg (compl_dlg);
@@ -2822,9 +3174,17 @@ edit_completion_dialog (WEdit * edit, in @@ -2822,9 +3172,17 @@ edit_completion_dialog (WEdit * edit, in
/* apply the choosen completion */ /* apply the choosen completion */
if (compl_dlg->ret_value == B_ENTER) { if (compl_dlg->ret_value == B_ENTER) {
listbox_get_current (compl_list, &curr, NULL); listbox_get_current (compl_list, &curr, NULL);
@ -3932,7 +3933,7 @@
} }
/* destroy dialog before return */ /* destroy dialog before return */
@@ -2841,8 +3201,9 @@ edit_complete_word_cmd (WEdit *edit) @@ -2841,8 +3199,9 @@ edit_complete_word_cmd (WEdit *edit)
{ {
int word_len = 0, i, num_compl = 0, max_len; int word_len = 0, i, num_compl = 0, max_len;
long word_start = 0; long word_start = 0;
@ -3944,7 +3945,7 @@
struct selection compl[MAX_WORD_COMPLETIONS]; /* completions */ struct selection compl[MAX_WORD_COMPLETIONS]; /* completions */
/* don't want to disturb another search */ /* don't want to disturb another search */
@@ -2859,16 +3220,32 @@ edit_complete_word_cmd (WEdit *edit) @@ -2859,16 +3218,32 @@ edit_complete_word_cmd (WEdit *edit)
/* prepare match expression */ /* prepare match expression */
bufpos = &edit->buffers1[word_start >> S_EDIT_BUF_SIZE] bufpos = &edit->buffers1[word_start >> S_EDIT_BUF_SIZE]
[word_start & M_EDIT_BUF_SIZE]; [word_start & M_EDIT_BUF_SIZE];
@ -3978,7 +3979,7 @@
if (num_compl > 0) { if (num_compl > 0) {
/* insert completed word if there is only one match */ /* insert completed word if there is only one match */
--- mc-4.6.1a/edit/wordproc.c.utf8 2005-05-27 05:35:12.000000000 +0200 --- mc-4.6.1a/edit/wordproc.c.utf8 2005-05-27 05:35:12.000000000 +0200
+++ mc-4.6.1a/edit/wordproc.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/edit/wordproc.c 2005-11-13 16:31:59.000000000 +0100
@@ -40,7 +40,12 @@ @@ -40,7 +40,12 @@
#define tab_width option_tab_spacing #define tab_width option_tab_spacing
@ -4199,7 +4200,7 @@
return; return;
} }
--- mc-4.6.1a/edit/edit.h.utf8 2005-09-07 10:54:12.000000000 +0200 --- mc-4.6.1a/edit/edit.h.utf8 2005-09-07 10:54:12.000000000 +0200
+++ mc-4.6.1a/edit/edit.h 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/edit/edit.h 2005-11-13 16:31:59.000000000 +0100
@@ -25,6 +25,27 @@ @@ -25,6 +25,27 @@
#include <stdio.h> #include <stdio.h>
@ -4293,7 +4294,7 @@
#define get_sys_error(s) (s) #define get_sys_error(s) (s)
--- mc-4.6.1a/edit/editdraw.c.utf8 2005-09-05 04:14:29.000000000 +0200 --- mc-4.6.1a/edit/editdraw.c.utf8 2005-09-05 04:14:29.000000000 +0200
+++ mc-4.6.1a/edit/editdraw.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/edit/editdraw.c 2005-11-13 16:31:59.000000000 +0100
@@ -69,11 +69,16 @@ static void status_string (WEdit * edit, @@ -69,11 +69,16 @@ static void status_string (WEdit * edit,
* as decimal and as hex. * as decimal and as hex.
*/ */
@ -4513,7 +4514,7 @@
print_to_widget (edit, row, start_col, start_col_real, end_col, line); print_to_widget (edit, row, start_col, start_col_real, end_col, line);
} }
--- mc-4.6.1a/edit/edit.c.utf8 2005-09-07 10:54:11.000000000 +0200 --- mc-4.6.1a/edit/edit.c.utf8 2005-09-07 10:54:11.000000000 +0200
+++ mc-4.6.1a/edit/edit.c 2005-11-08 11:07:36.000000000 +0100 +++ mc-4.6.1a/edit/edit.c 2005-11-13 16:31:59.000000000 +0100
@@ -103,7 +103,7 @@ char *option_backup_ext = NULL; @@ -103,7 +103,7 @@ char *option_backup_ext = NULL;
static void edit_move_to_prev_col (WEdit *edit, long p); static void edit_move_to_prev_col (WEdit *edit, long p);
static void user_menu (WEdit *edit); static void user_menu (WEdit *edit);
@ -5114,3 +5115,59 @@
if (edit->overwrite) { if (edit->overwrite) {
if (edit_get_byte (edit, edit->curs1) != '\n') if (edit_get_byte (edit, edit->curs1) != '\n')
edit_delete (edit); edit_delete (edit);
--- mc-4.6.1a/src/help.c.utf8 2005-11-12 17:46:32.000000000 +0100
+++ mc-4.6.1a/src/help.c 2005-11-12 17:52:11.000000000 +0100
@@ -449,7 +449,7 @@ static void help_show (Dlg_head *h, cons
#ifndef HAVE_SLANG
addch (acs_map [c]);
#else
-#ifdef UTF8
+#if defined(UTF8) && SLANG_VERSION < 20000
SLsmg_draw_object (h->y + line + 2, h->x + col + 2, acs_map [c]);
#else
SLsmg_draw_object (h->y + line + 2, h->x + col + 2, c);
--- mc-4.6.1a/src/myslang.h.utf8 2005-11-12 17:46:32.000000000 +0100
+++ mc-4.6.1a/src/myslang.h 2005-11-12 18:09:27.000000000 +0100
@@ -11,6 +11,12 @@
#endif /* HAVE_SLANG_SLANG_H */
#endif
+#if SLANG_VERSION >= 20000
+#define UTF8 1
+#define SLsmg_Is_Unicode SLsmg_is_utf8_mode()
+void SLsmg_write_nwchars(wchar_t *s, size_t n);
+#endif
+
#ifdef UTF8
# include <wchar.h>
#endif
--- mc-4.6.1a/src/slint.c.utf8 2005-09-05 04:14:29.000000000 +0200
+++ mc-4.6.1a/src/slint.c 2005-11-12 17:49:21.000000000 +0100
@@ -141,7 +141,9 @@ void
slang_init (void)
{
SLtt_get_terminfo ();
-
+#if SLANG_VERSION >= 20000
+ SLutf8_enable (-1);
+#endif
/*
* If the terminal in not in terminfo but begins with a well-known
* string such as "linux" or "xterm" S-Lang will go on, but the
--- mc-4.6.1a/src/util.c.utf8 2005-11-12 17:46:32.000000000 +0100
+++ mc-4.6.1a/src/util.c 2005-11-12 17:55:17.000000000 +0100
@@ -56,6 +56,14 @@
static const char app_text [] = "Midnight-Commander";
int easy_patterns = 1;
+#if SLANG_VERSION >= 20000
+void SLsmg_write_nwchars(wchar_t *s, size_t n)
+{
+ while(n--)
+ SLsmg_write_char(*s++);
+}
+#endif
+
extern void str_replace(char *s, char from, char to)
{
for (; *s != '\0'; s++) {

26
mc.spec
View File

@ -1,15 +1,14 @@
Summary: User-friendly text console file manager and visual shell. Summary: User-friendly text console file manager and visual shell.
Name: mc Name: mc
Version: 4.6.1a Version: 4.6.1a
Release: 0.21 Release: 0.23
Epoch: 1 Epoch: 1
License: GPL License: GPL
Group: System Environment/Shells Group: System Environment/Shells
Source0: http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/mc-%{version}.tar.bz2 Source0: http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/mc-%{version}.tar.bz2
URL: http://www.ibiblio.org/mc/ URL: http://www.ibiblio.org/mc/
BuildRoot: %{_tmppath}/%{name}-%{version}-root BuildRoot: %{_tmppath}/%{name}-%{version}-root
BuildRequires: gpm-devel, slang-devel, glib2-devel BuildRequires: glib2-devel, e2fsprogs-devel
BuildRequires: e2fsprogs-devel
Requires: dev >= 0:3.3-3 Requires: dev >= 0:3.3-3
Patch0: mc-utf8.patch Patch0: mc-utf8.patch
@ -25,9 +24,9 @@ Patch8: mc-utf8-look-and-feel.patch
%description %description
Midnight Commander is a visual shell much like a file manager, only Midnight Commander is a visual shell much like a file manager, only
with many more features. It is a text mode application, but it also with many more features. It is a text mode application, but it also
includes mouse support if you are running GPM. Midnight Commander's includes mouse support. Midnight Commander's best features are its
best features are its ability to FTP, view tar and zip files, and to ability to FTP, view tar and zip files, and to poke into RPMs for
poke into RPMs for specific files. specific files.
%prep %prep
%setup -q -n %{name}-%{version} %setup -q -n %{name}-%{version}
@ -103,7 +102,7 @@ popd
%build %build
export CFLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $RPM_OPT_FLAGS" export CFLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $RPM_OPT_FLAGS"
%configure --with-screen=slang \ %configure --with-screen=mcslang \
--host=%{_host} --build=%{_build} \ --host=%{_host} --build=%{_build} \
--target=%{_target_platform} \ --target=%{_target_platform} \
--program-prefix=%{?_program_prefix} \ --program-prefix=%{?_program_prefix} \
@ -122,7 +121,8 @@ export CFLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $RPM_OPT_FLAGS"
--infodir=%{_infodir} \ --infodir=%{_infodir} \
--enable-charset \ --enable-charset \
--with-samba \ --with-samba \
--without-x --without-x \
--without-gpm-mouse
make %{?_smp_mflags} make %{?_smp_mflags}
%install %install
@ -177,6 +177,16 @@ rm -rf $RPM_BUILD_ROOT
%dir %{_datadir}/mc %dir %{_datadir}/mc
%changelog %changelog
* Mon Nov 14 2005 Jindrich Novy <jnovy@redhat.com> 4.6.1a-0.22
- update from upstream CVS for the new slang support
- use internal slang-2.0.5 in mc for now
- temporarily drop slang-devel dependency
- don't use gpm to avoid hangs caused by it (#168076, #172921),
console mouse support works even without gpm
- display scrollbars correctly even if UTF-8 locale isn't set (#173014)
- add slang2 support to utf8 patch (Leonard den Ottolander)
- update %%description
* Mon Nov 5 2005 Jindrich Novy <jnovy@redhat.com> 4.6.1a-0.21 * Mon Nov 5 2005 Jindrich Novy <jnovy@redhat.com> 4.6.1a-0.21
- add vertical scrollbars to main panels and listboxes - add vertical scrollbars to main panels and listboxes
- fix memleak in menu.c caused by UTF-8 patch - fix memleak in menu.c caused by UTF-8 patch