4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Localization functions and macros.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials are licensed and made available under
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the terms and conditions of the BSD License that accompanies this distribution.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync http://opensource.org/licenses/bsd-license.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Copyright (c) 1991, 1993
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * The Regents of the University of California. All rights reserved.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Redistribution and use in source and binary forms, with or without
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * modification, are permitted provided that the following conditions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * are met:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * 1. Redistributions of source code must retain the above copyright
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * notice, this list of conditions and the following disclaimer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * 2. Redistributions in binary form must reproduce the above copyright
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * notice, this list of conditions and the following disclaimer in the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * documentation and/or other materials provided with the distribution.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * 3. Neither the name of the University nor the names of its contributors
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * may be used to endorse or promote products derived from this software
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * without specific prior written permission.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * SUCH DAMAGE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * @(#)locale.h 8.1 (Berkeley) 6/2/93
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * $NetBSD: locale.h,v 1.14 2005/02/03 04:39:32 perry Exp
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef _LOCALE_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define _LOCALE_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** This is a structure containing members pertaining to the formatting and display of numeric values.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Each member of this structure is commented with its value in the "C" locale.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The decimal_point member must point to a string with a length greater than zero.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync All other pointer members may point to "" in order to indicate that the value is not available
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync in the current locale, or that it is of zero length. Except for grouping and mon_grouping, the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync strings start and end in the initial shift state.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The remaining members, of type char, are non-negative numbers or CHAR_MAX, which indicates that
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the value is not available in the current locale.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Members grouping and mon_grouping point to strings where each element (character) of the string
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync indicates the size of the corresponding group of digits and is interpreted as follows:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - CHAR_MAX No further grouping is to be performed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - 0 The previous element is to be repeatedly used for the remainder of the digits.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - other The ISO specification states: "The integer value is the number of digits that
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync compose the current group. The next element is examined to determine the size
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the next group of digits before the current group." The EDK II implementation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync interprets this to mean that the groups are specified left-to-right.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The *_sep_by_space members are interpreted as follows:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - 0 No space separates the currency symbol and value.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - 1 If the currency symbol and sign string are adjacent, a space separates them from the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync value; otherwise, a space separates the currency symbol from the value.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - 2 If the currency symbol and sign string are adjacent, a space separates them;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync otherwise, a space separates the sign string from the value.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync For int_p_sep_by_space and int_n_sep_by_space, the fourth character of int_curr_symbol is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync used instead of a space.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The values of the *_sign_posn members are interpreted as follows:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - 0 Parentheses surround the quantity and currency symbol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - 1 The sign string precedes the quantity and currency symbol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - 2 The sign string succeeds the quantity and currency symbol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - 3 The sign string immediately precedes the currency symbol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - 4 The sign string immediately succeeds the currency symbol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct lconv {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char *decimal_point; /**< "." Non-monetary decimal-point. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char *thousands_sep; /**< "" Separates groups of digits before the decimal-point */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char *grouping; /**< "" A string whose elements (characters) indicate the size
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of each group of digits in formatted nonmonetary quantities. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char *int_curr_symbol; /**< "" A 4-character string providing the international currency
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync symbol. The first three characters contain the alphabetic
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync international currency symbol in accordance with those
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync specified in ISO 4217. The fourth character, immediately
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync preceding the null character, is the character used to separate
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the international currency symbol from the monetary quantity. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char *currency_symbol; /**< "" The local currency symbol for the current locale. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char *mon_decimal_point; /**< "" The decimal point used for monetary values. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char *mon_thousands_sep; /**< "" The separator for digit groups preceeding the decimal-point. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char *mon_grouping; /**< "" A string, like grouping, for monetary values. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char *positive_sign; /**< "" A string to indicate a non-negative monetary value. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char *negative_sign; /**< "" A string to indicate a negative monetary value. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char int_frac_digits; /**< CHAR_MAX The number of digits after the decimal-point for international
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync monetary values. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char frac_digits; /**< CHAR_MAX The number of digits after the decimal-point for local
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync monetary values. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char p_cs_precedes; /**< CHAR_MAX Set to 1 or 0 if the currency_symbol respectively precedes or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync succeeds the value for non-negative local monetary values. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char p_sep_by_space; /**< CHAR_MAX Value specifying the separation between the currency_symbol,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the sign string, and the value for non-negative local values. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char n_cs_precedes; /**< CHAR_MAX Set to 1 or 0 if the currency_symbol respectively precedes or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync succeeds the value for negative local monetary values. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char n_sep_by_space; /**< CHAR_MAX Value specifying the separation between the currency_symbol,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the sign string, and the value for negative local values. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char p_sign_posn; /**< CHAR_MAX Value specifying the positioning of the positive_sign for a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync non-negative local monetary quantity. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char n_sign_posn; /**< CHAR_MAX Value specifying the positioning of the negative_sign for a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync negative local monetary quantity. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char int_p_cs_precedes; /**< CHAR_MAX Set to 1 or 0 if the currency_symbol respectively precedes or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync succeeds the value for non-negative international monetary values. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char int_n_cs_precedes; /**< CHAR_MAX Set to 1 or 0 if the currency_symbol respectively precedes or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync succeeds the value for negative international monetary values. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char int_p_sep_by_space; /**< CHAR_MAX Value specifying the separation between the currency_symbol,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the sign string, and the value for non-negative international values. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char int_n_sep_by_space; /**< CHAR_MAX Value specifying the separation between the currency_symbol,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the sign string, and the value for negative international values. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char int_p_sign_posn; /**< CHAR_MAX Value specifying the positioning of the positive_sign for a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync non-negative international monetary quantity. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char int_n_sign_posn; /**< CHAR_MAX Value specifying the positioning of the negative_sign for a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync negative international monetary quantity. */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync These macros expand to integer expressions suitable for use as the first
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync argument (category) to the setlocale() function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Only the first six macros are required by the C language specification.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Implementations are free to extend this list, as has been done with LC_MESSAGES,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync with additional macro definitions, beginning with the characters LC_ and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync an uppercase letter.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LC_ALL 0 ///< The application's entire locale.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LC_COLLATE 1 ///< Affects the behavior of the strcoll and strxfrm functions.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LC_CTYPE 2 ///< Affects the behavior of the character handling, multibyte, and wide character functions.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LC_MONETARY 3 ///< Affects monetary formatting information.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LC_NUMERIC 4 ///< Affects the decimal-point character and non-monetary formatting information.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LC_TIME 5 ///< Affects the behavior of the strftime and wcsftime functions.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LC_MESSAGES 6
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define _LC_LAST 7 ///< Number of defined macros. Marks end.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/*@}*/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <sys/EfiCdefs.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @fn char *setlocale(int category, const char *locale)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @brief The setlocale function is used to retrieve or change parts or all of the current locale.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @details If locale is NULL, or the same as the current locale, this function just retrieves the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync values for the specified category in the current locale. Otherwise, the specified category
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync in the current locale is set to the corresponding values from the specified locale and a pointer
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync to the new values is returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] category The portion of the current locale to be affected by this call.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The LC_ macros list the supported categories and the meaning of each.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] locale A value of "C" for locale specifies the minimal environment for C translation;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync A value of "" specifies the native environment, which is "C" for this
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync implementation. If locale is NULL, the current locale is specified.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return A pointer to the string associated with the specified category for the new locale,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync a pointer to the string associated with the category for the current locale,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync or NULL if category or locale can not be honored. The return value should not be
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync modified by the program, but may be overwritten by subsequent calls to either
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync setlocale or localeconv.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @fn struct lconv *localeconv(void)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @brief The localeconv function returns a pointer to a lconv structure containing the appropriate
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync values for the current locale.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return A pointer to a filled-in lconv structure. The returned structure should not be
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync modified by the program, but may be overwritten by subsequent calls to either
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync setlocale or localeconv.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync__BEGIN_DECLS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __SETLOCALE_SOURCE__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char *setlocale(int category, const char *locale);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char *__setlocale(int category, const char *locale);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else /* !__SETLOCALE_SOURCE__ */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char *setlocale(int category, const char *locale) __RENAME(__setlocale_mb_len_max_32);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif /* !__SETLOCALE_SOURCE__ */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct lconv *localeconv(void);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char *__setlocale_mb_len_max_32(int category, const char *locale);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync__END_DECLS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif /* _LOCALE_H_ */