From 2e642327ea2600333de87c1f678e3b96080ff2ce Mon Sep 17 00:00:00 2001 From: Bananymous Date: Fri, 9 Aug 2024 16:56:48 +0300 Subject: [PATCH] LibC: Implement localeconv() --- userspace/libraries/LibC/locale.cpp | 34 ++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/userspace/libraries/LibC/locale.cpp b/userspace/libraries/LibC/locale.cpp index 2fd67a54..ca2d05aa 100644 --- a/userspace/libraries/LibC/locale.cpp +++ b/userspace/libraries/LibC/locale.cpp @@ -1,5 +1,6 @@ #include +#include #include #include #include @@ -35,6 +36,38 @@ static const char* locale_to_str(locale_t locale) ASSERT_NOT_REACHED(); } +struct lconv* localeconv(void) +{ + constexpr char CHAR_MAX = __SCHAR_MAX__; + + static lconv lconv; + lconv.currency_symbol = const_cast(""); + lconv.decimal_point = const_cast("."); + lconv.frac_digits = CHAR_MAX; + lconv.grouping = const_cast(""); + lconv.int_curr_symbol = const_cast(""); + lconv.int_frac_digits = CHAR_MAX; + lconv.int_n_cs_precedes = CHAR_MAX; + lconv.int_n_sep_by_space = CHAR_MAX; + lconv.int_n_sign_posn = CHAR_MAX; + lconv.int_p_cs_precedes = CHAR_MAX; + lconv.int_p_sep_by_space = CHAR_MAX; + lconv.int_p_sign_posn = CHAR_MAX; + lconv.mon_decimal_point = const_cast(""); + lconv.mon_grouping = const_cast(""); + lconv.mon_thousands_sep = const_cast(""); + lconv.negative_sign = const_cast(""); + lconv.n_cs_precedes = CHAR_MAX; + lconv.n_sep_by_space = CHAR_MAX; + lconv.n_sign_posn = CHAR_MAX; + lconv.positive_sign = const_cast(""); + lconv.p_cs_precedes = CHAR_MAX; + lconv.p_sep_by_space = CHAR_MAX; + lconv.p_sign_posn = CHAR_MAX; + lconv.thousands_sep = const_cast(""); + return &lconv; +} + char* setlocale(int category, const char* locale_str) { static char s_locale_buffer[128]; @@ -94,7 +127,6 @@ char* setlocale(int category, const char* locale_str) return s_locale_buffer; } - locale_t __getlocale(int category) { switch (category)