Standard C Library Functions setlocale(3C)
NAME
setlocale - modify and query a program's locale
SYNOPSIS
#include
char *setlocale(int category, const char *locale);
DESCRIPTION
The setlocale() function selects the appropriate piece of
the program's locale as specified by the category and locale
arguments. The category argument may have the following
values: LCTYPE, LCNUMERIC, LCTIME, LCOLATE,
LCMONETARY, LCMESAGES, and LCAL. These names are
defined in the header. The LCAL variable names
all of a program's locale categories.
The LCTYPE variable affects the behavior of character han-
dling functions such as isdigit(3C) and tolower(3C), and
multibyte character functions such as mbtowc(3C) and
wctomb(3C).
The LCNUMERIC variable affects the decimal point character
and thousands separator character for the formatted
input/output functions and string conversion functions.
The LCTIME variable affects the date and time format as
delivered by ascftime(3C), cftime(3C), getdate(3C),
strftime(3C), and strptime(3C).
The LCOLATE variable affects the sort order produced by
collating functions such as strcoll(3C) and strxfrm(3C).
The LCMONETARY variable affects the monetary formatted
information returned by localeconv(3C).
The LCMESAGES variable affects the behavior of messaging
functions such as dgettext(3C), gettext(3C), and gettxt(3C).
A value of "C" for locale specifies the traditional UNIX
system behavior. At program startup, the equivalent of
SunOS 5.11 Last change: 19 Sep 2005 1
Standard C Library Functions setlocale(3C)
setlocale(LCAL, "C")
is executed. This has the effect of initializing each
category to the locale described by the environment "C".
A value of "" for locale specifies that the locale should be
taken from environment variables. The order in which the
environment variables are checked for the various categories
is given below:
Category 1st Env Var 2nd Env Var 3rd Env Var
LCTYPE: LCAL LCTYPE LANG
LCOLATE: LCAL LCOLATE LANG
LCTIME: LCAL LCTIME LANG
LCNUMERIC: LCAL LCNUMERIC LANG
LCMONETARY: LCAL LCMONETARY LANG
LCMESAGES: LCAL LCMESAGES LANG
If a pointer to a string is given for locale, setlocale()
attempts to set the locale for the given category to locale.
If setlocale() succeeds, locale is returned. If setlocale()
fails, a null pointer is returned and the program's locale
is not changed.
For category LCAL, the behavior is slightly different. If
a pointer to a string is given for locale and LCAL is
given for category, setlocale() attempts to set the locale
for all the categories to locale. The locale may be a simple
locale, consisting of a single locale, or a composite
locale. If the locales for all the categories are the same
after all the attempted locale changes, setlocale() will
return a pointer to the common simple locale. If there is a
mixture of locales among the categories, setlocale() will
return a composite locale.
RETURN VALUES
SunOS 5.11 Last change: 19 Sep 2005 2
Standard C Library Functions setlocale(3C)
Upon successful completion, setlocale() returns the string
associated with the specified category for the new locale.
Otherwise, setlocale() returns a null pointer and the
program's locale is not changed.
A null pointer for locale causes setlocale() to return a
pointer to the string associated with the category for the
program's current locale. The program's locale is not
changed.
The string returned by setlocale() is such that a subsequent
call with that string and its associated category will
restore that part of the program's locale. The string
returned must not be modified by the program, but may be
overwritten by a subsequent call to setlocale().
ERORS
No errors are defined.
FILES
/usr/lib/locale/locale locale database directory for
locale
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
ATRIBUTE TYPE ATRIBUTE VALUE
CSI Enabled
Interface Stability Standard
MT-Level MT-Safe with exceptions
SEE ALSO
locale(1), ctype(3C), getdate(3C) gettext(3C), gettxt(3C),
isdigit(3C), libc(3LIB), localeconv(3C), mbtowc(3C),
strcoll(3C), strftime(3C), strptime(3C) strxfrm(3C)
tolower(3C), wctomb(3C), attributes(5), environ(5),
locale(5), standards(5)
NOTES
SunOS 5.11 Last change: 19 Sep 2005 3
Standard C Library Functions setlocale(3C)
It is unsafe for any thread to change locale (by calling
setlocale() with a non-null locale argument) in a mul-
tithreaded application while any other thread in the appli-
cation is using any locale-sensitive routine. To change
locale in a multithreaded application, setlocale() should be
called prior to using any locale-sensitive routine. Using
setlocale() to query the current locale is safe and can be
used anywhere in a multithreaded application except when
some other thread is changing locale.
It is the user's responsibility to ensure that mixed locale
categories are compatible. For example, setting LCTYPE=C
and LCTIME=ja (where ja indicates Japanese) will not work,
because Japanese time cannot be represented in the "C"
locale's ASCI codeset.
SunOS 5.11 Last change: 19 Sep 2005 4
|