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.
This commit is contained in:
Ulrich Drepper 2000-08-23 08:25:46 +00:00
parent c9f79e0878
commit 4b156cb2fd
4 changed files with 77 additions and 3 deletions

View file

@ -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.

View file

@ -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:

View file

@ -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.

View file

@ -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