Introduce __current_locale_charset/__locale_charset
The former __locale_charset always fetched the current locale's charset. We need the per-locale charset, too, in future. Rename __locale_charset to __current_locale_charset and change __locale_charset to take a locale_t as parameter. Accommodate througout. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
06ac671811
commit
7630e38462
|
@ -154,11 +154,11 @@ _DEFUN (__jp2uc, (c, type), wint_t c _AND int type)
|
||||||
wint_t
|
wint_t
|
||||||
_DEFUN (_jp2uc, (c), wint_t c)
|
_DEFUN (_jp2uc, (c), wint_t c)
|
||||||
{
|
{
|
||||||
if (!strcmp (__locale_charset (), "JIS"))
|
if (!strcmp (__current_locale_charset (), "JIS"))
|
||||||
c = __jp2uc (c, JP_JIS);
|
c = __jp2uc (c, JP_JIS);
|
||||||
else if (!strcmp (__locale_charset (), "SJIS"))
|
else if (!strcmp (__current_locale_charset (), "SJIS"))
|
||||||
c = __jp2uc (c, JP_SJIS);
|
c = __jp2uc (c, JP_SJIS);
|
||||||
else if (!strcmp (__locale_charset (), "EUCJP"))
|
else if (!strcmp (__current_locale_charset (), "EUCJP"))
|
||||||
c = __jp2uc (c, JP_EUCJP);
|
c = __jp2uc (c, JP_EUCJP);
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
|
@ -212,7 +212,7 @@ _DEFUN(nl_langinfo, (item),
|
||||||
#endif /* __HAVE_LOCALE_INFO__ */
|
#endif /* __HAVE_LOCALE_INFO__ */
|
||||||
case CODESET:
|
case CODESET:
|
||||||
#ifdef __CYGWIN__
|
#ifdef __CYGWIN__
|
||||||
ret = (char *) __locale_charset ();
|
ret = (char *) __current_locale_charset ();
|
||||||
#endif
|
#endif
|
||||||
do_codeset:
|
do_codeset:
|
||||||
#ifdef __CYGWIN__
|
#ifdef __CYGWIN__
|
||||||
|
|
|
@ -373,7 +373,17 @@ __get_current_messages_locale (void)
|
||||||
#endif /* !__HAVE_LOCALE_INFO__ */
|
#endif /* !__HAVE_LOCALE_INFO__ */
|
||||||
|
|
||||||
_ELIDABLE_INLINE const char *
|
_ELIDABLE_INLINE const char *
|
||||||
__locale_charset (void)
|
__locale_charset (struct __locale_t *locale)
|
||||||
|
{
|
||||||
|
#ifdef __HAVE_LOCALE_INFO__
|
||||||
|
return __get_ctype_locale (locale)->codeset;
|
||||||
|
#else
|
||||||
|
return locale->ctype_codeset;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
_ELIDABLE_INLINE const char *
|
||||||
|
__current_locale_charset (void)
|
||||||
{
|
{
|
||||||
#ifdef __HAVE_LOCALE_INFO__
|
#ifdef __HAVE_LOCALE_INFO__
|
||||||
return __get_current_ctype_locale ()->codeset;
|
return __get_current_ctype_locale ()->codeset;
|
||||||
|
|
|
@ -1527,7 +1527,8 @@ internal_setlocale ()
|
||||||
if (cygheap->locale.mbtowc == __global_locale.mbtowc)
|
if (cygheap->locale.mbtowc == __global_locale.mbtowc)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
debug_printf ("Cygwin charset chang to %s", __locale_charset ());
|
debug_printf ("Global charset set to %s",
|
||||||
|
__locale_charset (&__global_locale));
|
||||||
/* Fetch PATH and CWD and convert to wchar_t in previous charset. */
|
/* Fetch PATH and CWD and convert to wchar_t in previous charset. */
|
||||||
path = getenv ("PATH");
|
path = getenv ("PATH");
|
||||||
if (path && *path) /* $PATH can be potentially unset. */
|
if (path && *path) /* $PATH can be potentially unset. */
|
||||||
|
|
|
@ -1132,7 +1132,7 @@ wgetnext(struct parse *p)
|
||||||
invalid ASCII chars. To be more Linux-compatible, we align the
|
invalid ASCII chars. To be more Linux-compatible, we align the
|
||||||
behaviour to glibc here. Allow any character value if the current
|
behaviour to glibc here. Allow any character value if the current
|
||||||
local's codeset is ASCII. */
|
local's codeset is ASCII. */
|
||||||
if (*__locale_charset () == 'A') /* SCII */
|
if (*__current_locale_charset () == 'A') /* SCII */
|
||||||
return (wint_t) (unsigned char) *p->next++;
|
return (wint_t) (unsigned char) *p->next++;
|
||||||
#endif
|
#endif
|
||||||
memset(&mbs, 0, sizeof(mbs));
|
memset(&mbs, 0, sizeof(mbs));
|
||||||
|
@ -1503,7 +1503,7 @@ findmust(struct parse *p, struct re_guts *g)
|
||||||
*/
|
*/
|
||||||
if (MB_CUR_MAX > 1 &&
|
if (MB_CUR_MAX > 1 &&
|
||||||
#ifdef __CYGWIN__
|
#ifdef __CYGWIN__
|
||||||
strcmp(__locale_charset (), "UTF-8") != 0)
|
strcmp(__current_locale_charset (), "UTF-8") != 0)
|
||||||
#else
|
#else
|
||||||
strcmp(_CurrentRuneLocale->__encoding, "UTF-8") != 0)
|
strcmp(_CurrentRuneLocale->__encoding, "UTF-8") != 0)
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue