#ifndef _SETLOCALE_LOCAL_H_
#define _SETLOCALE_LOCAL_H_
#include <sys/queue.h>
#include <locale.h>
#include "ctype_local.h"
#define _LOCALENAME_LEN_MAX 33
#define _C_LOCALE "C"
#define _POSIX_LOCALE "POSIX"
extern const char *_PathLocale;
#define _LOCALE_ALIAS_NAME "locale.alias"
typedef void *_locale_part_t;
struct _locale_cache_t {
SLIST_ENTRY(_locale_cache_t) cache_link;
const char *monetary_name;
const char *numeric_name;
const char *message_name;
struct lconv ldata;
const char * errlist_prefix;
const char * const *errlist;
const char * const **errlistp;
};
struct _locale {
const struct _locale_cache_t *cache;
char query[_LOCALENAME_LEN_MAX * (_LC_LAST - 1)];
const char *part_name[_LC_LAST];
_locale_part_t part_impl[_LC_LAST];
};
typedef const char *(*_locale_set_t)(const char * __restrict,
struct _locale * __restrict);
__BEGIN_DECLS
_locale_set_t _find_category(int);
const char *_get_locale_env(const char *);
char *__setlocale(int, const char *);
const char *_generic_LC_ALL_setlocale(
const char * __restrict, struct _locale * __restrict);
const char *_dummy_LC_COLLATE_setlocale(
const char * __restrict, struct _locale * __restrict);
const char *_citrus_LC_CTYPE_setlocale(
const char * __restrict, struct _locale * __restrict);
const char *_citrus_LC_MONETARY_setlocale(
const char * __restrict, struct _locale * __restrict);
const char *_citrus_LC_NUMERIC_setlocale(
const char * __restrict, struct _locale * __restrict);
const char *_citrus_LC_TIME_setlocale(
const char * __restrict, struct _locale * __restrict);
const char *_citrus_LC_MESSAGES_setlocale(
const char * __restrict, struct _locale * __restrict);
int _setlocale_cache(locale_t, struct _locale_cache_t *);
__END_DECLS
#ifdef _LIBC
extern __dso_hidden const struct _locale_cache_t _C_cache;
static __inline struct _locale *
_current_locale(void)
{
return &_lc_global_locale;
}
#endif
extern size_t __mb_len_max_runtime;
#endif