On Wed, 21 Oct 2015, Martin Sebor wrote:

> That would go against the usual (i.e., POSIX) expected effect
> of the environment variable.  Specifically for GCC (or the c99
> utility), POSIX requires LC_CTYPE to determine the locale used
> to parse the input, and LC_MESSAGE to determine the locale of
> diagnostic messages.  If the c99 utility on your system doesn't
> honor that I would recommend opening a bug.

LC_MESSAGES determines "the language and cultural conventions in which 
messages should be written" (not necessarily the interpretation of 
multibyte characters in that output).  (If an explicit character set is 
specified for LC_MESSAGES that's different from that in LC_CTYPE, you 
probably have a broken environment - multibyte characters need to have a 
consistent interpretation throughout the process - note for example that 
printf-family functions, when they do conversions for output, do so using 
LC_CTYPE, and expect the format to be a valid multibyte string in the 
LC_CTYPE locale.  That said, there may be a case for gcc_init_libintl more 
closely emulating what gettext/libintl's get_output_charset does, e.g. 
regarding checking OUTPUT_CHARSET before nl_langinfo (CODESET).  "The 
locale settings of individual categories cannot be truly independent and 
still guarantee correct results.")

-- 
Joseph S. Myers
jos...@codesourcery.com

Reply via email to