Submitted By: Alexander E. Patrakov Date: 2005-07-12 Initial Package Version: 4.8 Upstream Status: Hack, won't submit Origin: Alexander E. Patrakov Description: Info assumes that a string width in character cells is the same as its length in bytes. This patch avoids cases when this assumption is not true. diff -ur texinfo-4.8/info/info.c texinfo-4.8.hacked/info/info.c --- texinfo-4.8/info/info.c 2004-04-11 23:56:45.000000000 +0600 +++ texinfo-4.8.hacked/info/info.c 2005-07-12 12:11:34.852485776 +0600 @@ -154,6 +154,10 @@ #ifdef HAVE_SETLOCALE /* Set locale via LC_ALL. */ setlocale (LC_ALL, ""); + /* But don't use translated messages in the case when + string width and length can differ */ + if (MB_CUR_MAX > 1) + setlocale(LC_MESSAGES, "C"); #endif #ifdef ENABLE_NLS diff -ur texinfo-4.8/info/man.c texinfo-4.8.hacked/info/man.c --- texinfo-4.8/info/man.c 2004-04-11 23:56:46.000000000 +0600 +++ texinfo-4.8.hacked/info/man.c 2005-07-12 12:08:40.267026800 +0600 @@ -325,6 +325,17 @@ freopen (NULL_DEVICE, "r", stdin); dup2 (pipes[1], fileno (stdout)); + if (MB_CUR_MAX > 1) + { + /* Info has trouble wrapping man output if it contains + multibyte characters */ + setenv("LANGUAGE", "C", 1); + setenv("LANG", "C", 1); + setenv("LC_MESSAGES", "C", 1); + setenv("LC_CTYPE", "C", 1); + setenv("LC_ALL", "C", 1); + } + execv (formatter_args[0], formatter_args); /* If we get here, we couldn't exec, so close out the pipe and