summaryrefslogtreecommitdiff
path: root/05/locale.h
diff options
context:
space:
mode:
authorpommicket <pommicket@gmail.com>2022-02-15 16:48:18 -0500
committerpommicket <pommicket@gmail.com>2022-02-15 16:48:18 -0500
commit95e7ec1ab5c1de11719be901a8b8451a49fa6c7b (patch)
tree28d8a1059cade518255ae41fd26d06d263184f02 /05/locale.h
parent23198d16f445e3596e6d309a5d36b144fb32e058 (diff)
locale.h
Diffstat (limited to '05/locale.h')
-rw-r--r--05/locale.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/05/locale.h b/05/locale.h
new file mode 100644
index 0000000..af90729
--- /dev/null
+++ b/05/locale.h
@@ -0,0 +1,60 @@
+#ifndef _LOCALE_H
+#define _LOCALE_H
+
+#include <stdc_common.h>
+
+struct lconv {
+ char *decimal_point; /* "." */
+ char *thousands_sep; /* "" */
+ char *grouping; /* "" */
+ char *int_curr_symbol; /* "" */
+ char *currency_symbol; /* "" */
+ char *mon_decimal_point; /* "" */
+ char *mon_thousands_sep; /* "" */
+ char *mon_grouping; /* "" */
+ char *positive_sign; /* "" */
+ char *negative_sign; /* "" */
+ char int_frac_digits; /* CHAR_MAX */
+ char frac_digits; /* CHAR_MAX */
+ char p_cs_precedes; /* CHAR_MAX */
+ char p_sep_by_space; /* CHAR_MAX */
+ char n_cs_precedes; /* CHAR_MAX */
+ char n_sep_by_space; /* CHAR_MAX */
+ char p_sign_posn; /* CHAR_MAX */
+ char n_sign_posn; /* CHAR_MAX */
+};
+
+// these are GCC's constants, but it doesn't really matter which constants we use.
+#define LC_ALL 6
+#define LC_COLLATE 3
+#define LC_CTYPE 0
+#define LC_MONETARY 4
+#define LC_NUMERIC 1
+#define LC_TIME 2
+
+char *setlocale(int category, char *locale) {
+ if (!locale) return "C";
+ if (*locale == 'C' && !locale[1]) {
+ // yep
+ return "C";
+ }
+
+ // we only support the C locale
+ return NULL;
+
+}
+
+struct lconv *localeconv(void) {
+ static struct lconv conv = {
+ ".",
+ "", "", "",
+ "", "", "",
+ "", "", "",
+ CHAR_MAX, CHAR_MAX, CHAR_MAX,
+ CHAR_MAX, CHAR_MAX, CHAR_MAX,
+ CHAR_MAX, CHAR_MAX
+ };
+ return &conv;
+}
+
+#endif // _LOCALE_H