aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-10-31 17:44:49 +0000
committerUlrich Drepper <drepper@redhat.com>2000-10-31 17:44:49 +0000
commit7535b2d92dcdbdc79a26baf28da1f7e2aa1889da (patch)
treedd23f881127dfbd9cc7bf652bed6ff2df3775d86
parentb0b21dc10b1601e33b688daecbdeaeb5659a8867 (diff)
downloadglibc-7535b2d92dcdbdc79a26baf28da1f7e2aa1889da.zip
glibc-7535b2d92dcdbdc79a26baf28da1f7e2aa1889da.tar.gz
glibc-7535b2d92dcdbdc79a26baf28da1f7e2aa1889da.tar.bz2
Update.
* 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.
-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 9772132..2c82d9e 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 c5ef6dc..14b02df 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 0b61467..92d6338 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,