--- 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