45 lines
1.5 KiB
Diff
45 lines
1.5 KiB
Diff
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
|