diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2010-01-22 13:03:42 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2010-01-22 13:03:42 +0000 |
commit | fe57329f991a0b347d40a5c97d9a62285eb708fe (patch) | |
tree | 4e6a2b000d865212b1d854c9d0ce8b1f0e0d5e88 /newlib/libc/locale/timelocal.c | |
parent | 2d7f21da1e428214d8a18e3ebea9e822586b516f (diff) | |
download | cygnal-fe57329f991a0b347d40a5c97d9a62285eb708fe.tar.gz cygnal-fe57329f991a0b347d40a5c97d9a62285eb708fe.tar.bz2 cygnal-fe57329f991a0b347d40a5c97d9a62285eb708fe.zip |
* 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/timelocal.c')
-rw-r--r-- | newlib/libc/locale/timelocal.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/newlib/libc/locale/timelocal.c b/newlib/libc/locale/timelocal.c index 5b097ad7c..0fe53bf42 100644 --- a/newlib/libc/locale/timelocal.c +++ b/newlib/libc/locale/timelocal.c @@ -70,11 +70,8 @@ static const struct lc_time_T _C_time_locale = { */ "%a %b %e %H:%M:%S %Y", - /* am */ - "AM", - - /* pm */ - "PM", + /* am pm */ + { "AM", "PM" }, /* date_fmt */ "%a %b %e %H:%M:%S %Z %Y", @@ -106,14 +103,29 @@ __get_current_time_locale(void) { } int -__time_load_locale(const char *name) { +__time_load_locale(const char *name, void *f_wctomb, const char *charset) { int ret; +#ifdef __CYGWIN__ + extern int __set_lc_time_from_win (const char *, struct lc_time_T *, + void *, const char *); + int old_time_using_locale = _time_using_locale; + _time_using_locale = 0; + ret = __set_lc_time_from_win (name, &_time_locale, f_wctomb, charset); + /* ret == -1: error, ret == 0: C/POSIX, ret > 0: valid */ + if (ret < 0) + _time_using_locale = old_time_using_locale; + else + { + _time_using_locale = ret; + ret = 0; + } +#else ret = __part_load_locale(name, &_time_using_locale, time_locale_buf, "LC_TIME", LCTIME_SIZE, LCTIME_SIZE, (const char **)&_time_locale); - +#endif return (ret); } |