devel/man-to-mdwn.pl: portable locale environment variable setting
authorTomi Ollila <tomi.ollila@iki.fi>
Thu, 9 Jun 2016 19:35:12 +0000 (22:35 +0300)
committerDavid Bremner <david@tethera.net>
Sat, 11 Jun 2016 16:01:30 +0000 (13:01 -0300)
Setting locale environment variables (LC_* and LANG) to e.g.
en_US.utf8 works fine on Linux, and that is what locale -a
returns (in Linux). However this does not work e.g. in some *BSD
systems.
In these systems, en_US.UTF-8 works. This also works in Linux
systems (which may look like a surprising thing on the first sight(*)).
But that *UTF-8 format seems to be widely used in the Linux system:
Grep it through the files in /etc/, for example.

Easy way to test: Run the following command lines. First should
complain about setting locale failed, and second should not.

$ LC_ALL=en_US.UTF-1 perl -e ''
$ LC_ALL=en_US.UTF-8 perl -e ''

(*) and who knows what the "standard" is...

devel/man-to-mdwn.pl

index f9d31b73a23749dae71061c45beca7d28d5a7862..a3c40695c4ea778ba1d373bbf75bc86f17126a41 100755 (executable)
@@ -66,7 +66,7 @@ while (my ($k, $v) = each %fhash)
 
     my @lines;
     open I, '-|', qw/env -i/, "PATH=$ENV{PATH}",
-       qw/TERM=vt100 LANG=en_US.utf8 LC_ALL=en_US.utf8/,
+       qw/TERM=vt100 LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8/,
        qw/GROFF_NO_SGR=1 MAN_KEEP_FORMATTING=1 MANWIDTH=80/,
        qw/man/, $v or die "$!";
     binmode I, ':utf8';