Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 31 Oct 2000 17:44:49 +0000 (17:44 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 31 Oct 2000 17:44:49 +0000 (17:44 +0000)
* 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.

ChangeLog
locale/categories.def
locale/programs/locale.c

index 9772132..2c82d9e 100644 (file)
--- 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,
index c5ef6dc..14b02df 100644 (file)
@@ -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)
index 0b61467..92d6338 100644 (file)
@@ -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,