summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--locale/categories.def6
-rw-r--r--locale/programs/locale.c28
3 files changed, 14 insertions, 26 deletions
diff --git a/ChangeLog b/ChangeLog
index 9772132a4c..2c82d9ec95 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2000-10-31  Ulrich Drepper  <drepper@redhat.com>
 
+	* locale/programs/locale.c (print_item): Fix one more problem with
+	string lists.  Patch by Chen Xiangyang <chenxy@opencjk.org>.
+
+	* locale/categories.def: Add number of arguments to ctype-map-names
+	and ctype-class-names entries.  Mark era as stringlist.
+
 	* iconvdata/Makefile (modules): Add IBM856, IBM930, IBM933, IBM935,
 	IBM937, IBM939, and IBM1046.
 	(distribute): Add ibm856.c, ibm930.c, ibm933.c, ibm935.c, ibm937.c,
diff --git a/locale/categories.def b/locale/categories.def
index c5ef6dc802..14b02dfb02 100644
--- a/locale/categories.def
+++ b/locale/categories.def
@@ -71,8 +71,8 @@ DEFINE_CATEGORY
   DEFINE_ELEMENT (_NL_CTYPE_TOUPPER,      "ctype-toupper",      std, wstring)
   DEFINE_ELEMENT (_NL_CTYPE_TOLOWER,      "ctype-tolower",      std, wstring)
   DEFINE_ELEMENT (_NL_CTYPE_CLASS32,      "ctype-class32",      std, wstring)
-  DEFINE_ELEMENT (_NL_CTYPE_CLASS_NAMES,  "ctype-class-names",  std, stringlist)
-  DEFINE_ELEMENT (_NL_CTYPE_MAP_NAMES,	  "ctype-map-names",    std, stringlist)
+  DEFINE_ELEMENT (_NL_CTYPE_CLASS_NAMES,  "ctype-class-names",  std, stringlist, 10, 32)
+  DEFINE_ELEMENT (_NL_CTYPE_MAP_NAMES,	  "ctype-map-names",    std, stringlist, 2, 32)
   DEFINE_ELEMENT (_NL_CTYPE_WIDTH,	  "ctype-width",        std, bytearray)
   DEFINE_ELEMENT (_NL_CTYPE_MB_CUR_MAX,	  "ctype-mb-cur-max",   std, word)
   DEFINE_ELEMENT (_NL_CTYPE_CODESET_NAME, "charmap",		std, string)
@@ -211,7 +211,7 @@ DEFINE_CATEGORY
   DEFINE_ELEMENT (D_FMT,       "d_fmt",       std, string)
   DEFINE_ELEMENT (T_FMT,       "t_fmt",       std, string)
   DEFINE_ELEMENT (T_FMT_AMPM,  "t_fmt_ampm",  std, string)
-  DEFINE_ELEMENT (ERA,         "era",         opt, stringarray)
+  DEFINE_ELEMENT (ERA,         "era",         opt, stringlist, 0, 100)
   DEFINE_ELEMENT (ERA_YEAR,    "era_year",    opt, string)
   DEFINE_ELEMENT (ERA_D_FMT,   "era_d_fmt",   opt, string)
   DEFINE_ELEMENT (ALT_DIGITS,  "alt_digits",  opt, stringlist,  100, 100)
diff --git a/locale/programs/locale.c b/locale/programs/locale.c
index 0b61467c1f..92d63386fd 100644
--- a/locale/programs/locale.c
+++ b/locale/programs/locale.c
@@ -524,25 +524,6 @@ show_locale_vars (void)
 }
 
 
-/* Some of the "string" we print contain non-printable characters.  We
-   encode them here.  */
-static void
-print_escaped (const char *string)
-{
-  const unsigned char *ch;
-
-  ch = string;
-  while ('\0' != *ch)
-    {
-      if (isprint (*ch))
-	putchar (*ch);
-      else
-	printf("<0x%02x>", *ch);
-      ++ch;
-    }
-}
-
-
 /* Show the information request for NAME.  */
 static void
 show_info (const char *name)
@@ -556,7 +537,7 @@ show_info (const char *name)
 	case string:
 	  if (show_keyword_name)
 	    printf ("%s=\"", item->name);
-	  print_escaped (nl_langinfo (item->item_id) ? : "");
+	  fputs (nl_langinfo (item->item_id) ? : "", stdout);
 	  if (show_keyword_name)
 	    putchar ('"');
 	  putchar ('\n');
@@ -573,13 +554,13 @@ show_info (const char *name)
 	      {
 		val = nl_langinfo (item->item_id + cnt);
 		if (val != NULL)
-		  print_escaped (val);
+		  fputs (val, stdout);
 		putchar (';');
 	      }
 
 	    val = nl_langinfo (item->item_id + cnt);
 	    if (val != NULL)
-	      print_escaped (val);
+	      fputs (val, stdout);
 
 	    if (show_keyword_name)
 	      putchar ('"');
@@ -590,11 +571,12 @@ show_info (const char *name)
 	  {
 	    int first = 1;
 	    const char *val = nl_langinfo (item->item_id) ? : "";
+	    int cnt;
 
 	    if (show_keyword_name)
 	      printf ("%s=", item->name);
 
-	    while (*val != '\0')
+	    for (cnt = 0; cnt < item->max && *val != '\0'; ++cnt)
 	      {
 		printf ("%s%s%s%s", first ? "" : ";",
 			show_keyword_name ? "\"" : "", val,