about summary refs log tree commit diff
path: root/locale/programs/ld-ctype.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-07-29 06:45:51 +0000
committerUlrich Drepper <drepper@redhat.com>2000-07-29 06:45:51 +0000
commit69c69fe11da745ee591a17570c2be5b529ec2fa6 (patch)
treea6a20ad924fc78b78dc855d9c12cda1649f5ad71 /locale/programs/ld-ctype.c
parent5e4633932782f08412e8cee75236f4f458591a3d (diff)
downloadglibc-69c69fe11da745ee591a17570c2be5b529ec2fa6.tar.gz
glibc-69c69fe11da745ee591a17570c2be5b529ec2fa6.tar.xz
glibc-69c69fe11da745ee591a17570c2be5b529ec2fa6.zip
Update.
2000-07-28  Ulrich Drepper  <drepper@redhat.com>

	* stdio-common/_i18n_itoa.c: Removed.
	* stdio-common/_i18n_itoa.h: Removed.
	* stdio-common/_i18n_itowa.c: Removed.
	* stdio-common/_i18n_itowa.h: Removed.
	* stdio-common/_i18n_number.h: New file.
	* stdio-common/Depend: New file.
	* stdio-common/printf-parse.h: Handle I modifier correctly.  Optimize.
	* stdio-common/vfprintf.c: Rewrite buffer handling for integer
	printing.  Change printing of numbers with locale specific digits to
	use new code in _i18n_number.h.

	* stdio-common/bug13.c: Improve messages.

	* locale/programs/ld-ctype.c (ctype_read): Improve error message.
	(set_class_defaults): Always search also for Uxxxx names.
	Detect insufficient number of outdigits.

	* locale/Makefile (C-translit.h): Use mv not $(move-if-changed).
Diffstat (limited to 'locale/programs/ld-ctype.c')
-rw-r--r--locale/programs/ld-ctype.c29
1 files changed, 26 insertions, 3 deletions
diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c
index ebfc1e42a4..1c1c492cb0 100644
--- a/locale/programs/ld-ctype.c
+++ b/locale/programs/ld-ctype.c
@@ -2274,7 +2274,8 @@ ctype_read (struct linereader *ldfile, struct localedef_t *result,
 			  lr_error (ldfile, _("\
 %s: field `%s' does not contain exactly ten entries"),
 			    "LC_CTYPE", "outdigit");
-			  goto err_label;
+			  lr_ignore_rest (ldfile, 0);
+			  break;
 			}
 
 		      ctype->mboutdigits[ctype->outdigits_act] = seq;
@@ -2781,6 +2782,12 @@ set_class_defaults (struct locale_ctype_t *ctype, struct charmap_t *charmap,
 	  seq = charmap_find_value (charmap, tmp, 1);
 	  if (seq == NULL)
 	    {
+	      char buf[10];
+	      sprintf (buf, "U%08X", ch);
+	      seq = charmap_find_value (charmap, buf, 9);
+	    }
+	  if (seq == NULL)
+	    {
 	      if (!be_quiet)
 		error (0, 0, _("\
 %s: character `%s' not defined in charmap while needed as default value"),
@@ -3133,6 +3140,12 @@ character `%s' not defined while needed as default value"),
 	  seq_from = charmap_find_value (charmap, &tmp[1], 1);
 	  if (seq_from == NULL)
 	    {
+	      char buf[10];
+	      sprintf (buf, "U%08X", ch);
+	      seq_from = charmap_find_value (charmap, buf, 9);
+	    }
+	  if (seq_from == NULL)
+	    {
 	      if (!be_quiet)
 		error (0, 0, _("\
 %s: character `%s' not defined while needed as default value"),
@@ -3152,6 +3165,12 @@ character `%s' not defined while needed as default value"),
 	      seq_to = charmap_find_value (charmap, &tmp[1], 1);
 	      if (seq_to == NULL)
 		{
+		  char buf[10];
+		  sprintf (buf, "U%08X", ch + ('A' - 'a'));
+		  seq_to = charmap_find_value (charmap, buf, 9);
+		}
+	      if (seq_to == NULL)
+		{
 		  if (!be_quiet)
 		    error (0, 0, _("\
 %s: character `%s' not defined while needed as default value"),
@@ -3191,9 +3210,13 @@ character `%s' not defined while needed as default value"),
 	  ctype->map256_collection[1][ctype->map256_collection[0][cnt]] = cnt;
     }
 
-  if (ctype->outdigits_act == 0)
+  if (ctype->outdigits_act != 10)
     {
-      for (cnt = 0; cnt < 10; ++cnt)
+      if (ctype->outdigits_act != 0)
+	error (0,0, _("%s: field `%s' does not contain exactly ten entries"),
+	       "LC_CTYPE", "outdigit");
+
+      for (cnt = ctype->outdigits_act; cnt < 10; ++cnt)
 	{
 	  ctype->mboutdigits[cnt] = charmap_find_symbol (charmap,
 							 digits + cnt, 1);