diff --git a/Userland/Libraries/LibC/langinfo.cpp b/Userland/Libraries/LibC/langinfo.cpp index a44f70afe16..c59aa8f49a6 100644 --- a/Userland/Libraries/LibC/langinfo.cpp +++ b/Userland/Libraries/LibC/langinfo.cpp @@ -96,4 +96,10 @@ char* nl_langinfo(nl_item item) // so this cast is probably fine. return const_cast(__nl_langinfo(item)); } + +char* nl_langinfo_l(nl_item item, locale_t) +{ + // FIXME: Support other locales. + return nl_langinfo(item); +} } diff --git a/Userland/Libraries/LibC/langinfo.h b/Userland/Libraries/LibC/langinfo.h index f5836915ba6..2a8e44a34c5 100644 --- a/Userland/Libraries/LibC/langinfo.h +++ b/Userland/Libraries/LibC/langinfo.h @@ -8,6 +8,7 @@ // Includes essentially mandated by POSIX: // https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/langinfo.h.html +#include #include #include @@ -80,5 +81,6 @@ enum { }; char* nl_langinfo(nl_item); +char* nl_langinfo_l(nl_item, locale_t); __END_DECLS diff --git a/Userland/Libraries/LibC/locale.cpp b/Userland/Libraries/LibC/locale.cpp index 36ff8010d42..ff1d9a2c100 100644 --- a/Userland/Libraries/LibC/locale.cpp +++ b/Userland/Libraries/LibC/locale.cpp @@ -64,4 +64,21 @@ struct lconv* localeconv() { return &default_locale; } + +void freelocale(locale_t) +{ + // FIXME: Implement this. +} + +locale_t newlocale(int, char const*, locale_t) +{ + // FIXME: Implement this. + return nullptr; +} + +locale_t uselocale(locale_t loc) +{ + // FIXME: Implement this. + return loc; +} } diff --git a/Userland/Libraries/LibC/locale.h b/Userland/Libraries/LibC/locale.h index 0fe99ba7d81..b12e77a8172 100644 --- a/Userland/Libraries/LibC/locale.h +++ b/Userland/Libraries/LibC/locale.h @@ -27,6 +27,14 @@ enum { #define LC_MESSAGES LC_MESSAGES }; +#define LC_NUMERIC_MASK (1 << LC_NUMERIC) +#define LC_CTYPE_MASK (1 << LC_CTYPE) +#define LC_COLLATE_MASK (1 << LC_COLLATE) +#define LC_TIME_MASK (1 << LC_TIME) +#define LC_MONETARY_MASK (1 << LC_MONETARY) +#define LC_MESSAGES_MASK (1 << LC_MESSAGES) +#define LC_ALL_MASK (LC_NUMERIC_MASK | LC_CTYPE_MASK | LC_COLLATE_MASK | LC_TIME_MASK | LC_MONETARY_MASK | LC_MESSAGES_MASK) + struct lconv { char* decimal_point; char* thousands_sep; @@ -54,7 +62,13 @@ struct lconv { char int_n_sign_posn; }; +struct __locale_t_impl; +typedef struct __locale_t_impl* locale_t; + struct lconv* localeconv(void); +void freelocale(locale_t); +locale_t newlocale(int, char const*, locale_t); char* setlocale(int category, char const* locale); +locale_t uselocale(locale_t); __END_DECLS