Up: Locale

### 9.1 `setlocale`, `localeconv`—select or query locale

Synopsis

         #include <locale.h>
         char *setlocale(int category, const char *locale);
         lconv *localeconv(void);

         char *_setlocale_r(void *reent,
             int category, const char *locale);
         lconv *_localeconv_r(void *reent);

Description
`setlocale` is the facility defined by ANSI C to condition the execution environment for international collating and formatting information; `localeconv` reports on the settings of the current locale.

This is a minimal implementation, supporting only the required `"C"` value for locale; strings representing other locales are not honored unless _MB_CAPABLE is defined in which case three new extensions are allowed for LC_CTYPE or LC_MESSAGES only: `"C-JIS"`, `"C-EUCJP"`, `"C-SJIS"`, or `"C-ISO-8859-1"`. (`""` is also accepted; it represents the default locale for an implementation, here equivalent to `"C"`.)

If you use `NULL` as the locale argument, `setlocale` returns a pointer to the string representing the current locale (always `"C"` in this implementation). The acceptable values for category are defined in ``locale.h`' as macros beginning with `"LC_"`, but this implementation does not check the values you pass in the category argument.

`localeconv` returns a pointer to a structure (also defined in ``locale.h`') describing the locale-specific conventions currently in effect.

`_localeconv_r` and `_setlocale_r` are reentrant versions of `localeconv` and `setlocale` respectively. The extra argument reent is a pointer to a reentrancy structure.

Returns
`setlocale` returns either a pointer to a string naming the locale currently in effect (always `"C"` for this implementation, or, if the locale request cannot be honored, `NULL`.

`localeconv` returns a pointer to a structure of type `lconv`, which describes the formatting and collating conventions in effect (in this implementation, always those of the C locale).

Portability
ANSI C requires `setlocale`, but the only locale required across all implementations is the C locale.

No supporting OS subroutines are required.