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:
		| @@ -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; | ||||
| } | ||||
|   | ||||
| @@ -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__ | ||||
|   | ||||
| @@ -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; | ||||
|   | ||||
| @@ -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. */ | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user