summaryrefslogtreecommitdiffstats
path: root/newlib/libc/locale/lmonetary.c
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/locale/lmonetary.c')
-rw-r--r--newlib/libc/locale/lmonetary.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/newlib/libc/locale/lmonetary.c b/newlib/libc/locale/lmonetary.c
index d31e88ccd..745ade517 100644
--- a/newlib/libc/locale/lmonetary.c
+++ b/newlib/libc/locale/lmonetary.c
@@ -70,9 +70,28 @@ cnv(const char *str) {
}
int
-__monetary_load_locale(const char *name) {
-
+__monetary_load_locale(const char *name , void *f_wctomb, const char *charset)
+{
int ret;
+
+#ifdef __CYGWIN__
+ extern int __set_lc_monetary_from_win (const char *,
+ struct lc_monetary_T *,
+ void *, const char *);
+ int old_monetary_using_locale = _monetary_using_locale;
+ _monetary_using_locale = 0;
+ ret = __set_lc_monetary_from_win (name, &_monetary_locale,
+ f_wctomb, charset);
+ /* ret == -1: error, ret == 0: C/POSIX, ret > 0: valid */
+ if (ret < 0)
+ _monetary_using_locale = old_monetary_using_locale;
+ else
+ {
+ _monetary_using_locale = ret;
+ __mlocale_changed = 1;
+ ret = 0;
+ }
+#else
__mlocale_changed = 1;
ret = __part_load_locale(name, &_monetary_using_locale,
_monetary_locale_buf, "LC_MONETARY",
@@ -94,6 +113,7 @@ __monetary_load_locale(const char *name) {
M_ASSIGN_CHAR(p_sign_posn);
M_ASSIGN_CHAR(n_sign_posn);
}
+#endif
return ret;
}