NEWLOCALE(3C) Standard C Library Functions NEWLOCALE(3C)
NAME
duplocale, freelocale, newlocale - create, duplicate, and destroy locale
objects
SYNOPSIS
#include <locale.h>
locale_t newlocale(
int category_mask,
const char *locale,
locale_t base);
locale_t duplocale(
locale_t loc);
void freelocale(
locale_t loc);
DESCRIPTION
These functions manipulate locale objects that can be used
uselocale(3C) and functions that take arguments of type
locale_t.
The function
newlocale() can be used to create a new locale object. It
can also be used to modify an existing locale object, the new locale
object will be a replacement for the modified locale object. To create a
new locale, the argument
base should be passed the special argument
(
locale_t)0. This will use a copy of the current global locale as a
starting point. To modify an existing locale object, it should be passed
in as the argument
base. The new locale object is constructed by taking
the categories specified in
category_mask from the locale specified by
the string
locale, and filling in the remaining categories from the
locale
base. When
newlocale() returns, callers must no longer use
base and assume that
freelocale(3C) has been called on it. In addition to
locales defined on the system, the following three locales may always be
passed in as the string
locale:
"C" Specifies the traditional UNIX system behavior.
"POSIX"
An alternate name for the locale "C".
"" Indicates that the locale should be processed based in the values
in the environment. See
setlocale(3C) and
environ(7) for more
information.
The value of
category_mask is a bitwise-inclusive or of the following
macros which correspond to categories as defined in
locale(7) and
environ(7):
LC_CTYPE_MASK Character classification and case conversion.
LC_NUMERIC_MASK Numeric formatting.
LC_TIME_MASK Date and time formatting.
LC_COLLATE_MASK Collation order.
LC_MONETARY_MASK Monetary formatting.
LC_MESSAGES_MASK Formats of informative and diagnostic messages and interactive
responses.
LC_ALL_MASK Mask of all categories.
The function
duplocale() duplicates the locale object specified by
loc.
If the locale object passed is
LC_GLOBAL_LOCALE,
duplocale() creates a
copy of the current global locale as defined through calls to
setlocale(3C).
The function
freelocale() removes and releases all resources associated
with the locale object
loc. Programs must not call
freelocale() on
LC_GLOBAL_LOCALE.
RETURN VALUES
On success, the functions
newlocale() and
duplocale() return a new locale
object that can be used with functions that take a
locale_t. Locale
objects created this way should be freed with
freelocale(). On error,
the functions
newlocale() and
duplocale() return
(locale_t)0 and
errno is
set to indicate the error. The
freelocale() function does not set
errno.ERRORS
The
newlocale() and
duplocale() functions will fail if:
ENOMEM Insufficient memory was available to create the locale object or
to load the requested locale data.
The
newlocale() function will fail if:
EINVAL An unknown bit is specified in
category_mask.
ENOENT Locale data was not found for a category specified in
ATTRIBUTES
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Standard |
+--------------------+-----------------+
|MT-Level | Safe |
+--------------------+-----------------+
SEE ALSO
locale(1),
setlocale(3C),
uselocale(3C),
environ(7),
locale(7) November 26, 2017
NEWLOCALE(3C)