diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | locale/programs/ld-ctype.c | 23 | ||||
-rw-r--r-- | localedata/ChangeLog | 4 | ||||
-rw-r--r-- | localedata/locales/i18n | 47 |
4 files changed, 77 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index 1715b5d1e8..8739d37da7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2000-08-23 Ulrich Drepper <drepper@redhat.com> + + * locale/programs/ld-ctype.c (ctype_read): Allow more than one + default_missing character being specified, pick the first + representable. + 2000-08-23 Andreas Jaeger <aj@suse.de> * include/wchar.h: Add some pure attributes. diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c index 8904bcad02..b8a8695229 100644 --- a/locale/programs/ld-ctype.c +++ b/locale/programs/ld-ctype.c @@ -854,7 +854,7 @@ ctype_output (struct localedef_t *locale, struct charmap_t *charmap, ? (ctype->map_collection_nr - 2) : (ctype->nr_charclass + ctype->map_collection_nr))); struct iovec iov[2 + nelems + 2 * ctype->nr_charclass - + ctype->map_collection_nr + 2]; + + ctype->map_collection_nr + 4]; struct locale_file data; uint32_t idx[nelems + 1]; uint32_t default_missing_len; @@ -1112,6 +1112,12 @@ ctype_output (struct localedef_t *locale, struct charmap_t *charmap, break; case _NL_ITEM_INDEX(_NL_CTYPE_TRANSLIT_DEFAULT_MISSING_LEN): + /* Align entries. */ + iov[2 + elem + offset].iov_base = (void *) nulbytes; + iov[2 + elem + offset].iov_len = (4 - idx[elem] % 4) % 4; + idx[elem] += iov[2 + elem + offset].iov_len; + ++offset; + default_missing_len = (ctype->default_missing ? wcslen ((wchar_t *)ctype->default_missing) : 0); @@ -1129,6 +1135,12 @@ ctype_output (struct localedef_t *locale, struct charmap_t *charmap, break; case _NL_ITEM_INDEX(_NL_CTYPE_TRANSLIT_IGNORE_LEN): + /* Align entries. */ + iov[2 + elem + offset].iov_base = (void *) nulbytes; + iov[2 + elem + offset].iov_len = (4 - idx[elem] % 4) % 4; + idx[elem] += iov[2 + elem + offset].iov_len; + ++offset; + iov[2 + elem + offset].iov_base = &ctype->ntranslit_ignore; iov[2 + elem + offset].iov_len = sizeof (uint32_t); idx[elem + 1] = idx[elem] + iov[2 + elem + offset].iov_len; @@ -1200,7 +1212,7 @@ ctype_output (struct localedef_t *locale, struct charmap_t *charmap, } assert (2 + elem + offset == (nelems + 2 * ctype->nr_charclass - + ctype->map_collection_nr + 2 + 2)); + + ctype->map_collection_nr + 4 + 2)); write_locale_data (output_path, "LC_CTYPE", 2 + elem + offset, iov); } @@ -2620,6 +2632,9 @@ with character code range values one must use the absolute ellipsis `...'")); array. */ cnt = 0; + ldfile->translate_strings = 1; + ldfile->return_widestr = 1; + /* We proceed until we see the `translit_end' token. */ while (now = lr_token (ldfile, charmap, repertoire), now->tok != tok_translit_end && now->tok != tok_eof) @@ -2713,7 +2728,8 @@ previous definition was here")); ctype->default_missing_file = ldfile->fname; ctype->default_missing_lineno = ldfile->lineno; } - lr_ignore_rest (ldfile, 1); + /* We can have more entries, ignore them. */ + lr_ignore_rest (ldfile, 0); break; } else if (wstr == (uint32_t *) -1l) @@ -2744,6 +2760,7 @@ previous definition was here")); read_translit_entry (ldfile, ctype, now, charmap, repertoire); } + ldfile->return_widestr = 0; break; case tok_ident: diff --git a/localedata/ChangeLog b/localedata/ChangeLog index ce13b01ce5..bc9415218c 100644 --- a/localedata/ChangeLog +++ b/localedata/ChangeLog @@ -1,3 +1,7 @@ +2000-08-23 Ulrich Drepper <drepper@redhat.com> + + * locales/i18n: Add transliteration information. + 2000-08-22 Ulrich Drepper <drepper@redhat.com> * locales/ca_ES@euro: Country is Spain. diff --git a/localedata/locales/i18n b/localedata/locales/i18n index 6c2725cd1d..30d2ae4159 100644 --- a/localedata/locales/i18n +++ b/localedata/locales/i18n @@ -762,6 +762,53 @@ class "combining_level3"; / <U0CD5>;<U0CD6>;<U0D57>;<U0F39>;<U302A>..<U302F>;<U3099>;<U309A> % +translit_start + +% COPYRIGHT SIGN. +<U00A9> "<U0028><U0043><U0029>" +% LEFT-POINTING DOUBLE ANGLE QUOTATION MARK. +<U00AB> "<U003C><U003C>" +% REGISTERED SIGN. +<U00AE> "<U0028><U0052><U0029>" +% RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK. +<U00BB> "<U003E><U003E>" +% VULGAR FRACTION ONE QUARTER. +<U00BC> "<U0031><U002F><U0034>" +% VULGAR FRACTION ONE HALF. +<U00BD> "<U0031><U002F><U0032>" +% VULGAR FRACTION THREE QUARTERS. +<U00BE> "<U0033><U002F><U0034>" +% LATIN CAPITAL LETTER A WITH DIAERESIS. +<U00C4> "<U0041><U0308>";"<U0041><U0045>" +% LATIN CAPITAL LETTER A WITH RING ABOVE. +<U00C5> <U212B>;"<U0041><U030A>";"<U0041><U0041>" +% LATIN CAPITAL LETTER AE. +<U00C6> "<U0041><U0045>" +% LATIN CAPITAL LETTER O WITH DIAERESIS. +<U00D6> "<U004F><U0045>" +% LATIN CAPITAL LETTER U WITH DIAERESIS. +<U00DC> "<U0055><U0045>" +% LATIN SMALL LETTER SHARP S. +<U00DF> "<U0073><U0073>" +% LATIN SMALL LETTER A WITH DIAERESIS. +<U00E4> "<U0061><U0308>";"<U0061><U0065>" +% LATIN SMALL LETTER A WITH RING ABOVE. +<U00E5> "<U0061><U030A>";"<U0061><U0061>" +% LATIN SMALL LETTER AE. +<U00E6> "<U0061><U0065>" +% LATIN SMALL LETTER O WITH DIAERESIS. +<U00F6> "<U006F><U0065>" +% LATIN SMALL LETTER U WITH DIAERESIS. +<U00FC> "<U0075><U0065>" +% LEFT DOUBLE QUOTATION MARK. +<U201C> <U0022> +% RIGHT DOUBLE QUOTATION MARK. +<U201D> <U0022> + +default_missing <UFFFD>;<U003F> + +translit_end + END LC_CTYPE LC_COLLATE |