]> sourceware.org Git - newlib-cygwin.git/commitdiff
Introduce __current_locale_charset/__locale_charset
authorCorinna Vinschen <corinna@vinschen.de>
Sat, 20 Aug 2016 14:05:56 +0000 (16:05 +0200)
committerCorinna Vinschen <corinna@vinschen.de>
Sat, 20 Aug 2016 15:14:56 +0000 (17:14 +0200)
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>
newlib/libc/ctype/jp2uc.c
newlib/libc/locale/nl_langinfo.c
newlib/libc/locale/setlocale.h
winsup/cygwin/nlsfuncs.cc
winsup/cygwin/regex/regcomp.c

index 40d777add92b0acde351d2ba7524f26458d28fc9..f5bd7dbf217564719dae37cb0e72fc2b8ff483a1 100644 (file)
@@ -154,11 +154,11 @@ _DEFUN (__jp2uc, (c, type), wint_t c _AND int type)
 wint_t
 _DEFUN (_jp2uc, (c), wint_t c)
 {
-  if (!strcmp (__locale_charset (), "JIS"))
+  if (!strcmp (__current_locale_charset (), "JIS"))
     c = __jp2uc (c, JP_JIS);
-  else if (!strcmp (__locale_charset (), "SJIS"))
+  else if (!strcmp (__current_locale_charset (), "SJIS"))
     c = __jp2uc (c, JP_SJIS);
-  else if (!strcmp (__locale_charset (), "EUCJP"))
+  else if (!strcmp (__current_locale_charset (), "EUCJP"))
     c = __jp2uc (c, JP_EUCJP);
   return c;
 }
index c7e27cfb700ec9b157f3108abda2f1236dbe0656..5acfb9a32439566e39019edd17a984bfa410f984 100644 (file)
@@ -212,7 +212,7 @@ _DEFUN(nl_langinfo, (item),
 #endif /* __HAVE_LOCALE_INFO__ */
        case CODESET:
 #ifdef __CYGWIN__
-               ret = (char *) __locale_charset ();
+               ret = (char *) __current_locale_charset ();
 #endif
 do_codeset:
 #ifdef __CYGWIN__
index 4275750ecb120112247a6f556583511bd91b71b1..99bd4668beffbc376d25791a23c9063da59d7dcb 100644 (file)
@@ -373,7 +373,17 @@ __get_current_messages_locale (void)
 #endif /* !__HAVE_LOCALE_INFO__ */
 
 _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__
   return __get_current_ctype_locale ()->codeset;
index 9ff1ef2b84d8a44bb9d828e8520d451d847ad851..3e3b5f42a4181b6e3911da7926a039a326752dbf 100644 (file)
@@ -1527,7 +1527,8 @@ internal_setlocale ()
   if (cygheap->locale.mbtowc == __global_locale.mbtowc)
     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. */
   path = getenv ("PATH");
   if (path && *path)   /* $PATH can be potentially unset. */
index 0dc59ffcc9ecbbb42cbfefd08d09a2e330367a77..63ca4f1317c38c7c552f57b49b29cb2515cfcfa2 100644 (file)
@@ -1132,7 +1132,7 @@ wgetnext(struct parse *p)
           invalid ASCII chars.  To be more Linux-compatible, we align the
           behaviour to glibc here.  Allow any character value if the current
           local's codeset is ASCII. */
-       if (*__locale_charset () == 'A') /* SCII */
+       if (*__current_locale_charset () == 'A') /* SCII */
          return (wint_t) (unsigned char) *p->next++;
 #endif
        memset(&mbs, 0, sizeof(mbs));
@@ -1503,7 +1503,7 @@ findmust(struct parse *p, struct re_guts *g)
         */
        if (MB_CUR_MAX > 1 &&
 #ifdef __CYGWIN__
-           strcmp(__locale_charset (), "UTF-8") != 0)
+           strcmp(__current_locale_charset (), "UTF-8") != 0)
 #else
            strcmp(_CurrentRuneLocale->__encoding, "UTF-8") != 0)
 #endif
This page took 0.040598 seconds and 5 git commands to generate.