diff --git a/libc/include/locale.h b/libc/include/locale.h new file mode 100644 index 0000000000..74c82cb7fd --- /dev/null +++ b/libc/include/locale.h @@ -0,0 +1,63 @@ +#pragma once + +#include +#include + +// https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/locale.h.html#tag_13_24 + +#define LC_ALL 1 +#define LC_COLLATE 2 +#define LC_CTYPE 3 +#define LC_MESSAGES 4 +#define LC_MONETARY 5 +#define LC_NUMERIC 6 +#define LC_TIME 7 + +#define LC_COLLATE_MASK 0x01 +#define LC_CTYPE_MASK 0x02 +#define LC_MESSAGES_MASK 0x04 +#define LC_MONETARY_MASK 0x08 +#define LC_NUMERIC_MASK 0x10 +#define LC_TIME_MASK 0x20 +#define LC_ALL_MASK 0x3F + +__BEGIN_DECLS + +struct lconv +{ + char* currency_symbol; + char* decimal_point; + char frac_digits; + char* grouping; + char* int_curr_symbol; + char int_frac_digits; + char int_n_cs_precedes; + char int_n_sep_by_space; + char int_n_sign_posn; + char int_p_cs_precedes; + char int_p_sep_by_space; + char int_p_sign_posn; + char* mon_decimal_point; + char* mon_grouping; + char* mon_thousands_sep; + char* negative_sign; + char n_cs_precedes; + char n_sep_by_space; + char n_sign_posn; + char* positive_sign; + char p_cs_precedes; + char p_sep_by_space; + char p_sign_posn; + char* thousands_sep; +}; + +typedef int locale_t; + +locale_t duplocale(locale_t); +void freelocale(locale_t); +struct lconv localeconv(void); +locale_t newlocale(int, const char*, locale_t); +char* setlocale(int, const char*); +locale_t uselocale(locale_t); + +__END_DECLS