Fix setting of locale
authorMichael Reed <m.reed@mykolab.com>
Tue, 14 Jul 2015 02:41:54 +0000 (22:41 -0400)
committerMichael Reed <m.reed@mykolab.com>
Tue, 14 Jul 2015 02:54:13 +0000 (22:54 -0400)
commitafbf5e8ecc843044f751693661d8dbd0788814ef
tree7206d8f626bfb24bb69a30e435cfe4f2c06ed097
parent34a97f52caaeab111699e943303039c96c168b96
Fix setting of locale

OpenBSD, for example, doesn't have a locale named "UTF8", as illustrated
here:

  /usr/share/locale $ ls
  ARMSCII-8   CP866       ISO8859-13  ISO8859-2   ISO8859-5   ISO8859-9   KOI8-U
  CP1251      ISO8859-1   ISO8859-15  ISO8859-4   ISO8859-7   KOI8-R      UTF-8

This causes UTF-8 characters to not be displayed, despite the LC_CTYPE
environment variable being set to "en_US.UTF-8" (which corresponds to an
actual locale on the system).

To avoid this issue, instead of telling getlocale(3) to use a fixed
locale, tell it to use the system's locale. From `man 3 setlocale`:

  Only three locales are defined by default, the empty string "" which
  denotes the native environment, and the "C" and "POSIX" locales, which
  denote the C language environment.
src/main.c