aboutsummaryrefslogtreecommitdiff
path: root/locale
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-07-22 03:52:21 +0000
committerUlrich Drepper <drepper@redhat.com>2000-07-22 03:52:21 +0000
commitd58c3ad0212247b18f5feccd2580296f30816da2 (patch)
treebc0939a94b81a9e7d830ea2579a5b044a26c0e08 /locale
parent0c0c8bdeed0b6d5546e287300d1e210445991ae4 (diff)
downloadglibc-d58c3ad0212247b18f5feccd2580296f30816da2.zip
glibc-d58c3ad0212247b18f5feccd2580296f30816da2.tar.gz
glibc-d58c3ad0212247b18f5feccd2580296f30816da2.tar.bz2
Update.
* locale/programs/ld-collate.c (collate_read): Allow collating symbols be named in reorder-after instructions. Reported by Yoshito Kawada <KAWADA@jp.ibm.com>.
Diffstat (limited to 'locale')
-rw-r--r--locale/programs/ld-collate.c37
1 files changed, 30 insertions, 7 deletions
diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c
index 861269b..fc5b447 100644
--- a/locale/programs/ld-collate.c
+++ b/locale/programs/ld-collate.c
@@ -3365,14 +3365,37 @@ error while adding equivalent collating symbol"));
collate->cursor = insp;
else
{
- /* This is bad. The symbol after which we have to
- insert does not exist. */
- lr_error (ldfile, _("\
+ struct symbol_t *symbp;
+
+ if (find_entry (&collate->sym_table, arg->val.str.startmb,
+ arg->val.str.lenmb, (void **) &symbp) == 0)
+ {
+ if (symbp->order->last != NULL
+ || symbp->order->next != NULL)
+ collate->cursor = symbp->order;
+ else
+ {
+ /* This is a collating symbol but its position
+ is not yet defined. */
+ lr_error (ldfile, _("\
+%s: order for collating symbol %.*s not yet defined"),
+ "LC_COLLATE", (int) arg->val.str.lenmb,
+ arg->val.str.startmb);
+ collate->cursor = NULL;
+ no_error = 0;
+ }
+ }
+ else
+ {
+ /* This is bad. The symbol after which we have to
+ insert does not exist. */
+ lr_error (ldfile, _("\
%s: cannot reorder after %.*s: symbol not known"),
- "LC_COLLATE", (int) arg->val.str.lenmb,
- arg->val.str.startmb);
- collate->cursor = NULL;
- no_error = 0;
+ "LC_COLLATE", (int) arg->val.str.lenmb,
+ arg->val.str.startmb);
+ collate->cursor = NULL;
+ no_error = 0;
+ }
}
lr_ignore_rest (ldfile, no_error);