* locale/programs/ld-collate.c (collate_output): Also handle
	IGNOREd characters in the simple way when generating the multibyte
	table.

	* locale/programs/ld-ctype.c (allocate_arrays): Move codeset_name
	handling to ...
	(ctype_finish): ...here.  Check for missing codeset name.
This commit is contained in:
Ulrich Drepper 2000-01-25 01:00:37 +00:00
parent 973209d8b0
commit db76d9433c
6 changed files with 60 additions and 9 deletions

View File

@ -1,5 +1,13 @@
2000-01-24 Ulrich Drepper <drepper@cygnus.com> 2000-01-24 Ulrich Drepper <drepper@cygnus.com>
* locale/programs/ld-collate.c (collate_output): Also handle
IGNOREd characters in the simple way when generating the multibyte
table.
* locale/programs/ld-ctype.c (allocate_arrays): Move codeset_name
handling to ...
(ctype_finish): ...here. Check for missing codeset name.
* sysdeps/unix/sysv/linux/Dist: Add ipc_priv.h. * sysdeps/unix/sysv/linux/Dist: Add ipc_priv.h.
* sysdeps/unix/sysv/linux/alpha/Dist: Likewise. * sysdeps/unix/sysv/linux/alpha/Dist: Likewise.

View File

@ -2000,7 +2000,7 @@ collate_output (struct localedef_t *locale, struct charmap_t *charmap,
for (ch = 1; ch < 256; ++ch) for (ch = 1; ch < 256; ++ch)
if (collate->mbheads[ch]->mbnext == NULL if (collate->mbheads[ch]->mbnext == NULL
&& collate->mbheads[ch]->nmbs == 1) && collate->mbheads[ch]->nmbs <= 1)
{ {
tablemb[ch] = output_weight (&weightpool, collate, tablemb[ch] = output_weight (&weightpool, collate,
collate->mbheads[ch]); collate->mbheads[ch]);
@ -2025,6 +2025,9 @@ collate_output (struct localedef_t *locale, struct charmap_t *charmap,
struct element_t *runp = collate->mbheads[ch]; struct element_t *runp = collate->mbheads[ch];
struct element_t *lastp; struct element_t *lastp;
assert ((obstack_object_size (&extrapool)
& (__alignof__ (int32_t) - 1)) == 0);
tablemb[ch] = -obstack_object_size (&extrapool); tablemb[ch] = -obstack_object_size (&extrapool);
do do
@ -2081,6 +2084,7 @@ collate_output (struct localedef_t *locale, struct charmap_t *charmap,
/* Now walk backward from here to the beginning. */ /* Now walk backward from here to the beginning. */
curp = runp; curp = runp;
assert (runp->nmbs <= 256);
obstack_1grow_fast (&extrapool, curp->nmbs - 1); obstack_1grow_fast (&extrapool, curp->nmbs - 1);
for (i = 1; i < curp->nmbs; ++i) for (i = 1; i < curp->nmbs; ++i)
obstack_1grow_fast (&extrapool, curp->mbs[i]); obstack_1grow_fast (&extrapool, curp->mbs[i]);
@ -2125,13 +2129,17 @@ collate_output (struct localedef_t *locale, struct charmap_t *charmap,
added = ((sizeof (int32_t) + 1 + runp->nmbs - 1 added = ((sizeof (int32_t) + 1 + runp->nmbs - 1
+ __alignof__ (int32_t) - 1) + __alignof__ (int32_t) - 1)
& ~(__alignof__ (int32_t) - 1)); & ~(__alignof__ (int32_t) - 1));
assert ((obstack_object_size (&extrapool)
& (__alignof__ (int32_t) - 1)) == 0);
obstack_make_room (&extrapool, added); obstack_make_room (&extrapool, added);
if (sizeof (int32_t) == sizeof (int)) if (sizeof (int32_t) == sizeof (int))
obstack_int_grow_fast (&extrapool, weightidx); obstack_int_grow_fast (&extrapool, weightidx);
else else
obstack_grow (&extrapool, &weightidx, sizeof (int32_t)); obstack_grow (&extrapool, &weightidx, sizeof (int32_t));
assert (runp->nmbs <= 256);
obstack_1grow_fast (&extrapool, runp->nmbs - 1); obstack_1grow_fast (&extrapool, runp->nmbs - 1);
for (i = 1; i < runp->nmbs; ++i) for (i = 1; i < runp->nmbs; ++i)
obstack_1grow_fast (&extrapool, runp->mbs[i]); obstack_1grow_fast (&extrapool, runp->mbs[i]);
} }
@ -2147,11 +2155,14 @@ collate_output (struct localedef_t *locale, struct charmap_t *charmap,
} }
while (runp != NULL); while (runp != NULL);
assert ((obstack_object_size (&extrapool)
& (__alignof__ (int32_t) - 1)) == 0);
/* If the final entry in the list is not a single character we /* If the final entry in the list is not a single character we
add an UNDEFINED entry here. */ add an UNDEFINED entry here. */
if (lastp->nmbs != 1) if (lastp->nmbs != 1)
{ {
int added = ((sizeof (int32_t) + 1 + 1 + __alignof__ (int32_t)) int added = ((sizeof (int32_t) + 1 + 1 + __alignof__ (int32_t) - 1)
& ~(__alignof__ (int32_t) - 1)); & ~(__alignof__ (int32_t) - 1));
obstack_make_room (&extrapool, added); obstack_make_room (&extrapool, added);

View File

@ -379,6 +379,17 @@ ctype_finish (struct localedef_t *locale, struct charmap_t *charmap)
ctype->repertoire = repertoire_read (repertoire_name); ctype->repertoire = repertoire_read (repertoire_name);
} }
/* We need the name of the currently used 8-bit character set to
make correct conversion between this 8-bit representation and the
ISO 10646 character set used internally for wide characters. */
ctype->codeset_name = charmap->code_set_name;
if (ctype->codeset_name == NULL)
{
if (! be_quiet)
error (0, 0, "no character set name specified in charmap");
ctype->codeset_name = "//UNKNOWN//";
}
/* Set default value for classes not specified. */ /* Set default value for classes not specified. */
set_class_defaults (ctype, charmap, ctype->repertoire); set_class_defaults (ctype, charmap, ctype->repertoire);
@ -3304,11 +3315,6 @@ Computing table size for character classes might take a while..."),
/* Set MB_CUR_MAX. */ /* Set MB_CUR_MAX. */
ctype->mb_cur_max = charmap->mb_cur_max; ctype->mb_cur_max = charmap->mb_cur_max;
/* We need the name of the currently used 8-bit character set to
make correct conversion between this 8-bit representation and the
ISO 10646 character set used internally for wide characters. */
ctype->codeset_name = charmap->code_set_name;
/* Now determine the table for the transliteration information. /* Now determine the table for the transliteration information.
XXX It is not yet clear to me whether it is worth implementing a XXX It is not yet clear to me whether it is worth implementing a

View File

@ -1,5 +1,8 @@
2000-01-24 Ulrich Drepper <drepper@cygnus.com> 2000-01-24 Ulrich Drepper <drepper@cygnus.com>
* tst-locale.sh: Also enable test5.
* tests/test5.ds: New file.
* locales/gl_ES: New file. * locales/gl_ES: New file.
Contributed by Jacobo Tarrio <jtarrio@ceu.fi.udc.es>. Contributed by Jacobo Tarrio <jtarrio@ceu.fi.udc.es>.

24
localedata/tests/test5.ds Normal file
View File

@ -0,0 +1,24 @@
escape_char /
<k0101> <UAC00>
<k0102> <UAC01>
<k0103> <UAC02>
<k4001> <U2170>
<k4002> <U2171>
<k4003> <U2172>
<k4036> <U0394>
<k5001> <U2500>
<k5002> <U2502>
<k5003> <U250C>
<k6001> <U3395>
<k6002> <U3396>
<k6003> <U3397>
<0> <U0030>
<1> <U0031>
<2> <U0032>
<3> <U0033>
<4> <U0034>
<5> <U0035>
<6> <U0036>
<7> <U0037>
<8> <U0038>
<9> <U0039>

View File

@ -44,8 +44,7 @@ test_locale tests/test1.cm tests/test1.def test1 mnemonic.ds
test_locale tests/test2.cm tests/test2.def test2 mnemonic.ds test_locale tests/test2.cm tests/test2.def test2 mnemonic.ds
test_locale tests/test3.cm tests/test3.def test3 mnemonic.ds test_locale tests/test3.cm tests/test3.def test3 mnemonic.ds
test_locale tests/test4.cm tests/test4.def test4 mnemonic.ds test_locale tests/test4.cm tests/test4.def test4 mnemonic.ds
# I know that multi-byte charsets do not yet work. --drepper test_locale tests/test5.cm tests/test5.def test5 tests/test5.ds
# test_locale tests/test5.cm tests/test5.def test5 mnemonic.ds
exit 0 exit 0