mc/mc-CVS-utf8-help.patch

50 lines
1.1 KiB
Diff

--- mc-4.6.1-pre2b/src/help.c
+++ mc-4.6.1-pre2b/src/help.c
@@ -447,8 +447,22 @@
#else
SLsmg_draw_object (h->y + line + 2, h->x + col + 2, c);
#endif
+ } else {
+#ifdef UTF8
+ if (SLsmg_Is_Unicode) {
+ int len;
+ mbstate_t mbs;
+ wchar_t wc;
+ memset (&mbs, 0, sizeof (mbs));
+ len = mbrtowc(&wc, p, MB_CUR_MAX, &mbs);
+ if (len <= 0) len = 1; /* skip broken multibyte chars */
+
+ SLsmg_write_nwchars(&wc, 1);
+ p += len - 1;
} else
+#endif
addch (c);
+ }
col++;
break;
}
@@ -771,6 +785,12 @@
message (1, MSG_ERROR, _(" Cannot open file %s \n %s "), filename ? filename : hlpfile,
unix_error_string (errno));
}
+ else
+ {
+ char *conv = utf8_to_local(data);
+ g_free(data);
+ data = conv;
+ }
if (!filename)
g_free (hlpfile);
--- mc-4.6.1-pre2b/src/util.h
+++ mc-4.6.1-pre2b/src/util.h
@@ -97,6 +97,8 @@
int mbstrlen (const char *);
wchar_t *mbstr_to_wchar (const char *);
char *wchar_to_mbstr (const wchar_t *);
+char *utf8_to_local(char *str);
+
#define MAX_I18NTIMELENGTH 14
#define MIN_I18NTIMELENGTH 10