Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2010-01-22 16:03:42 +0300
committerCorinna Vinschen <corinna@vinschen.de>2010-01-22 16:03:42 +0300
commitfe57329f991a0b347d40a5c97d9a62285eb708fe (patch)
tree4e6a2b000d865212b1d854c9d0ce8b1f0e0d5e88 /newlib/libc/locale/lmonetary.c
parent2d7f21da1e428214d8a18e3ebea9e822586b516f (diff)
* libc/locale/lmonetary.c (__monetary_load_locale): Take additional
parameters for wide char to multibyte conversion. Call __set_lc_monetary_from_win on Cygwin. * libc/locale/lmonetary.h: Make C++-safe. (__monetary_load_locale): Change declaration. * libc/locale/lnumeric.c (__numeric_load_locale): Take additional parameters for wide char to multibyte conversion. Call __set_lc_numeric_from_win on Cygwin. * libc/locale/lnumeric.h: Make C++-safe. (__numeric_load_locale): Change declaration. * libc/locale/locale.c (lconv): De-constify for Cygwin. (__set_charset_from_locale): Rename from __set_charset_from_codepage. Take locale as parameter instead of a codepage. (loadlocale): Allow "EUC-JP" for "EUCJP" and "EUC-KR" for "EUCKR". Change documnetation accordingly. Enable LC_COLLATE, LC_MONETARY, LC_NUMERIC, and LC_TIME handling on Cygwin. (_localeconv_r): On Cygwin, copy values from monetary and numeric domain if change has been noted. * libc/locale/nl_langinfo.c (nl_langinfo): Accommodate change of am/pm layout in struct lc_time_T. * libc/locale/timelocal.c (_C_time_locale): Accommodate redefinition of am/pm members. (__time_load_locale): Take additional parameters for wide char to multibyte conversion. Call __set_lc_time_from_win on Cygwin. * libc/locale/timelocal.h: Make C++-safe. (struct lc_time_T): Convert am and pm to a am_pm array for easier consumption by strftime and strptime. (__time_load_locale): Change declaration. * libc/time/strftime.c: Change documentation to reflect changes to strftime. Remove locale constant strings in favor of access to locale-specifc data. (_ctloc): Define access method for locale-specifc data. (TOLOWER): Define for tolower conversion. (strftime): Throughout, convert locale-specific formats to use locale-specific data. Add GNU-specific "%P" format. * libc/time/strptime.c: Remove locale constant strings in favor of access to locale-specifc data. (_ctloc): Define access method for locale-specifc data. (strptime): Throughout, convert locale-specific formats to use locale-specific data.
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;
}