about summary refs log tree commit diff
path: root/locale/programs/ld-collate.c
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/programs/ld-collate.c
parent0c0c8bdeed0b6d5546e287300d1e210445991ae4 (diff)
downloadglibc-d58c3ad0212247b18f5feccd2580296f30816da2.tar.gz
glibc-d58c3ad0212247b18f5feccd2580296f30816da2.tar.xz
glibc-d58c3ad0212247b18f5feccd2580296f30816da2.zip
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/programs/ld-collate.c')
-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 861269bc70..fc5b447932 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);