mirror of git://sourceware.org/git/glibc.git
Update.
* locale/programs/ld-collate.c: Implement "copy" in LC_COLLATE.
This commit is contained in:
parent
6bfd664721
commit
d980842cab
|
|
@ -1,5 +1,7 @@
|
||||||
1999-12-10 Ulrich Drepper <drepper@cygnus.com>
|
1999-12-10 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
|
* locale/programs/ld-collate.c: Implement "copy" in LC_COLLATE.
|
||||||
|
|
||||||
* locale/programs/ld-collate.c (collate_read): Add handling of
|
* locale/programs/ld-collate.c (collate_read): Add handling of
|
||||||
reorder-after.
|
reorder-after.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -714,15 +714,19 @@ insert_value (struct linereader *ldfile, struct token *arg,
|
||||||
|
|
||||||
static void
|
static void
|
||||||
collate_startup (struct linereader *ldfile, struct localedef_t *locale,
|
collate_startup (struct linereader *ldfile, struct localedef_t *locale,
|
||||||
int ignore_content)
|
struct localedef_t *copy_locale, int ignore_content)
|
||||||
{
|
{
|
||||||
if (!ignore_content)
|
if (!ignore_content)
|
||||||
{
|
{
|
||||||
struct locale_collate_t *collate;
|
struct locale_collate_t *collate;
|
||||||
|
|
||||||
collate = locale->categories[LC_COLLATE].collate =
|
if (copy_locale == NULL)
|
||||||
(struct locale_collate_t *) xcalloc (1,
|
collate = locale->categories[LC_COLLATE].collate =
|
||||||
sizeof (struct locale_collate_t));
|
(struct locale_collate_t *) xcalloc (1,
|
||||||
|
sizeof (struct locale_collate_t));
|
||||||
|
else
|
||||||
|
collate = locale->categories[LC_COLLATE].collate =
|
||||||
|
copy_locale->categories[LC_COLLATE].collate;
|
||||||
|
|
||||||
/* Init the various data structures. */
|
/* Init the various data structures. */
|
||||||
init_hash (&collate->elem_table, 100);
|
init_hash (&collate->elem_table, 100);
|
||||||
|
|
@ -763,6 +767,7 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
|
||||||
enum token_t nowtok;
|
enum token_t nowtok;
|
||||||
int state = 0;
|
int state = 0;
|
||||||
int was_ellipsis = 0;
|
int was_ellipsis = 0;
|
||||||
|
struct localedef_t *copy_locale = NULL;
|
||||||
|
|
||||||
/* Get the repertoire we have to use. */
|
/* Get the repertoire we have to use. */
|
||||||
if (repertoire_name != NULL)
|
if (repertoire_name != NULL)
|
||||||
|
|
@ -786,6 +791,7 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
|
||||||
{
|
{
|
||||||
SYNTAX_ERROR (_("%s: syntax error"), "LC_COLLATE");
|
SYNTAX_ERROR (_("%s: syntax error"), "LC_COLLATE");
|
||||||
|
|
||||||
|
skip_category:
|
||||||
do
|
do
|
||||||
now = lr_token (ldfile, charmap, NULL);
|
now = lr_token (ldfile, charmap, NULL);
|
||||||
while (now->tok != tok_eof && now->tok != tok_end);
|
while (now->tok != tok_eof && now->tok != tok_end);
|
||||||
|
|
@ -805,7 +811,16 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX Use the name */
|
/* Get the locale definition. */
|
||||||
|
copy_locale = find_locale (LC_COLLATE, now->val.str.startmb,
|
||||||
|
repertoire_name, charmap);
|
||||||
|
if ((copy_locale->avail & COLLATE_LOCALE) == 0)
|
||||||
|
{
|
||||||
|
/* Not yet loaded. So do it now. */
|
||||||
|
if (locfile_read (copy_locale, charmap) != 0)
|
||||||
|
goto skip_category;
|
||||||
|
}
|
||||||
|
|
||||||
lr_ignore_rest (ldfile, 1);
|
lr_ignore_rest (ldfile, 1);
|
||||||
|
|
||||||
now = lr_token (ldfile, charmap, NULL);
|
now = lr_token (ldfile, charmap, NULL);
|
||||||
|
|
@ -813,7 +828,7 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Prepare the data structures. */
|
/* Prepare the data structures. */
|
||||||
collate_startup (ldfile, result, ignore_content);
|
collate_startup (ldfile, result, copy_locale, ignore_content);
|
||||||
collate = result->categories[LC_COLLATE].collate;
|
collate = result->categories[LC_COLLATE].collate;
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue