about summary refs log tree commit diff stats
path: root/src/wrapped32/wrappedlibc.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-08-31 17:20:01 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-08-31 17:20:01 +0200
commit5468d8b08ead84ea4e71d3799d6ced9e1219db05 (patch)
tree8a0c81cb0a27b617d67f54c702bfb6ed8dafbb9b /src/wrapped32/wrappedlibc.c
parent497f6297615b74739f79882fdd401a09cd9e4391 (diff)
downloadbox64-5468d8b08ead84ea4e71d3799d6ced9e1219db05.tar.gz
box64-5468d8b08ead84ea4e71d3799d6ced9e1219db05.zip
[BOX32] One more 32bits wrapped function for libvstdlib_s.so
Diffstat (limited to 'src/wrapped32/wrappedlibc.c')
-rwxr-xr-xsrc/wrapped32/wrappedlibc.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/wrapped32/wrappedlibc.c b/src/wrapped32/wrappedlibc.c
index 52a8c408..5100dd00 100755
--- a/src/wrapped32/wrappedlibc.c
+++ b/src/wrapped32/wrappedlibc.c
@@ -2495,6 +2495,50 @@ EXPORT void* my32_backtrace_symbols(x64emu_t* emu, ptr_t* buffer, int size)
     return ret;
 }
 
+struct i386_lconv
+{
+  ptr_t decimal_point;  // char *
+  ptr_t thousands_sep;  // char *
+  ptr_t grouping;       // char *
+  ptr_t int_curr_symbol; // char *
+  ptr_t currency_symbol; // char *
+  ptr_t mon_decimal_point; // char *
+  ptr_t mon_thousands_sep; // char *
+  ptr_t mon_grouping; // char *
+  ptr_t positive_sign; // char *
+  ptr_t negative_sign; // char *
+  char int_frac_digits;
+  char frac_digits;
+  char p_cs_precedes;
+  char p_sep_by_space;
+  char n_cs_precedes;
+  char n_sep_by_space;
+  char p_sign_posn;
+  char n_sign_posn;
+  char int_p_cs_precedes;
+  char int_p_sep_by_space;
+  char int_n_cs_precedes;
+  char int_n_sep_by_space;
+  char int_p_sign_posn;
+  char int_n_sign_posn;
+};
+EXPORT void* my32_localeconv(x64emu_t* emu)
+{
+    static struct i386_lconv ret = {0};
+    struct lconv* l = localeconv();
+    ret.decimal_point = to_cstring(l->decimal_point);
+    ret.grouping = to_cstring(l->grouping);
+    ret.int_curr_symbol = to_cstring(l->int_curr_symbol);
+    ret.currency_symbol = to_cstring(l->currency_symbol);
+    ret.mon_decimal_point = to_cstring(l->mon_decimal_point);
+    ret.mon_thousands_sep = to_cstring(l->mon_thousands_sep);
+    ret.mon_grouping = to_cstring(l->mon_grouping);
+    ret.positive_sign = to_cstring(l->positive_sign);
+    ret.negative_sign = to_cstring(l->negative_sign);
+    memcpy(&ret.int_frac_digits, &l->int_frac_digits, 14);
+    return &ret;
+}
+
 
 EXPORT struct __processor_model
 {