diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-06-16 23:04:41 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-06-16 23:04:41 +0000 |
commit | 323fb88dac799cddfaa33cb80f7fc3395c2297e5 (patch) | |
tree | f853cfdf9b5bcde5a90324bb2115b225bb405ebd /wcsmbs/wcsmbsload.c | |
parent | f1d5c60ddef851078544e6b8456b18534b9a2a95 (diff) | |
download | glibc-323fb88dac799cddfaa33cb80f7fc3395c2297e5.zip glibc-323fb88dac799cddfaa33cb80f7fc3395c2297e5.tar.gz glibc-323fb88dac799cddfaa33cb80f7fc3395c2297e5.tar.bz2 |
Update.
2000-06-16 Ulrich Drepper <drepper@redhat.com>
* iconv/gconv_int.h (norm_add_slashes): Optionally add given suffix.
* iconv/gconv_open.c: Remove error handling specification from `from'
character set name.
* intl/loadmsgcat.c (_nl_load_domain): Call norm_add_slashes with
new parameter to always enable transliteration.
* locale/localeinfo.h (LIMAGIC): Bump number because of incompatible
change.
(struct locale_data): Add new members use_translit and options.
* locale/findlocale.c (_nl_find_locale): Set use_translit flag is
character set name contained modifier TRANSLIT.
* locale/loadlocale.c (_nl_load_locale): Initialize new use_translit
and options fields.
(_nl_unload_locale): Free options string if necessary.
* wcsmbs/wcsmbsload.c (__wcsmbs_load_conv): Enable translation if
the locale names suggested this.
* locale/C-address.c: Add two new initialilzers to adjust data
structure for new format.
* locale/C-collate.c: Likewise.
* locale/C-ctype.c: Likewise.
* locale/C-identification.c: Likewise.
* locale/C-measurement.c: Likewise.
* locale/C-messages.c: Likewise.
* locale/C-monetary.c: Likewise.
* locale/C-name.c: Likewise.
* locale/C-numeric.c: Likewise.
* locale/C-paper.c: Likewise.
* locale/C-telephone.c: Likewise.
* locale/C-time.c: Likewise.
* locale/setlocale.c: Add some more __builtin_expect.
Diffstat (limited to 'wcsmbs/wcsmbsload.c')
-rw-r--r-- | wcsmbs/wcsmbsload.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/wcsmbs/wcsmbsload.c b/wcsmbs/wcsmbsload.c index 55d19ff..b152b35 100644 --- a/wcsmbs/wcsmbsload.c +++ b/wcsmbs/wcsmbsload.c @@ -146,7 +146,7 @@ __wcsmbs_load_conv (const struct locale_data *new_category) /* We should repeat the test since while we waited some other thread might have run this function. */ - if (__wcsmbs_last_locale != new_category) + if (__builtin_expect (__wcsmbs_last_locale != new_category, 1)) { if (new_category->name == _nl_C_name) /* Yes, pointer comparison. */ { @@ -161,6 +161,7 @@ __wcsmbs_load_conv (const struct locale_data *new_category) const char *complete_name; struct __gconv_step *new_towc; struct __gconv_step *new_tomb; + int use_translit; /* Free the old conversions. */ __gconv_close_transform (__wcsmbs_gconv_fcts.tomb, 1); @@ -169,10 +170,17 @@ __wcsmbs_load_conv (const struct locale_data *new_category) /* Get name of charset of the locale. */ charset_name = new_category->values[_NL_ITEM_INDEX(CODESET)].string; + /* Does the user want transliteration? */ + use_translit = new_category->use_translit; + /* Normalize the name and add the slashes necessary for a complete lookup. */ - complete_name = norm_add_slashes (charset_name); + complete_name = norm_add_slashes (charset_name, + use_translit ? "TRANSLIT" : NULL); + /* It is not necessary to use transliteration in this direction + since the internal character set is supposed to be able to + represent all others. */ new_towc = getfct ("INTERNAL", complete_name); if (new_towc != NULL) new_tomb = getfct (complete_name, "INTERNAL"); |