about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@suse.de>2013-11-11 18:12:03 +0100
committerAndreas Schwab <schwab@suse.de>2013-11-19 11:53:00 +0100
commitb5449b12962da665c29f0a1c85f705de4bc4abf2 (patch)
tree8df3aee75fac59ef5696cb62a1e87b8d93fe8db2
parente186536b6fa8ceb004dfa1ba45766edcc871a95b (diff)
downloadglibc-b5449b12962da665c29f0a1c85f705de4bc4abf2.tar.gz
glibc-b5449b12962da665c29f0a1c85f705de4bc4abf2.tar.xz
glibc-b5449b12962da665c29f0a1c85f705de4bc4abf2.zip
Complete display of LC_MONETARY
-rw-r--r--ChangeLog9
-rw-r--r--locale/C-monetary.c3
-rw-r--r--locale/categories.def1
-rw-r--r--locale/programs/locale.c18
4 files changed, 30 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index b0ca6f7303..9568016864 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2013-11-19  Andreas Schwab  <schwab@suse.de>
+
+	* locale/programs/locale.c (show_info): Decode wordarray elements.
+	* locale/categories.def (LC_MONETARY): Add element for
+	_NL_MONETARY_CRNCYSTR.
+	* locale/C-monetary.c (conversion_rate): New variable.
+	(_nl_C_LC_MONETARY): Use it for _NL_MONETARY_CONVERSION_RATE
+	element.
+
 2013-11-18  Chris Metcalf  <cmetcalf@tilera.com>
 
 	* math/test-fpucw-ieee.c [!defined _FPU_IEEE] (FPU_CONTROL):
diff --git a/locale/C-monetary.c b/locale/C-monetary.c
index 3246ff5b3e..9c36c761fe 100644
--- a/locale/C-monetary.c
+++ b/locale/C-monetary.c
@@ -22,6 +22,7 @@
    ``LC_MONETARY Category Definition in the POSIX Locale'',
    with additions from ISO 14652, section 4.4.  */
 static const char not_available[] = "\377";
+static const uint32_t conversion_rate[] = { 1, 1 };
 
 const struct __locale_data _nl_C_LC_MONETARY attribute_hidden =
 {
@@ -74,7 +75,7 @@ const struct __locale_data _nl_C_LC_MONETARY attribute_hidden =
     { .word = 99991231 },
     { .word = 10101 },
     { .word = 99991231 },
-    { .word = 1 },
+    { .string = (const char *) conversion_rate },
     { .word = (unsigned int) L'\0' },
     { .word = (unsigned int) L'\0' },
     { .string = _nl_C_codeset }
diff --git a/locale/categories.def b/locale/categories.def
index 8c2537842a..e1172e99c5 100644
--- a/locale/categories.def
+++ b/locale/categories.def
@@ -156,6 +156,7 @@ DEFINE_CATEGORY
   DEFINE_ELEMENT (N_SEP_BY_SPACE,                      "n_sep_by_space",         std, byte, 0, 2)
   DEFINE_ELEMENT (P_SIGN_POSN,                         "p_sign_posn",            std, byte, 0, 4)
   DEFINE_ELEMENT (N_SIGN_POSN,                         "n_sign_posn",            std, byte, 0, 4)
+  DEFINE_ELEMENT (_NL_MONETARY_CRNCYSTR,               "crncystr",               std, string)
   DEFINE_ELEMENT (__INT_P_CS_PRECEDES,                 "int_p_cs_precedes",      std, byte, 0, 1)
   DEFINE_ELEMENT (__INT_P_SEP_BY_SPACE,                "int_p_sep_by_space",     std, byte, 0, 2)
   DEFINE_ELEMENT (__INT_N_CS_PRECEDES,                 "int_n_cs_precedes",      std, byte, 0, 1)
diff --git a/locale/programs/locale.c b/locale/programs/locale.c
index c0bdb6c36d..d2b28d08f8 100644
--- a/locale/programs/locale.c
+++ b/locale/programs/locale.c
@@ -927,6 +927,24 @@ show_info (const char *name)
 	    printf ("%d\n", val.word);
 	  }
 	  break;
+	case wordarray:
+	  {
+	    int first = 1;
+	    union { unsigned int *wordarray; char *string; } val;
+	    int cnt;
+
+	    val.string = nl_langinfo (item->item_id);
+	    if (show_keyword_name)
+	      printf ("%s=", item->name);
+
+	    for (cnt = 0; cnt < item->max; ++cnt)
+	      {
+		printf ("%s%d", first ? "" : ";", val.wordarray[cnt]);
+		first = 0;
+	      }
+	    putchar ('\n');
+	  }
+	  break;
 	case wstring:
 	case wstringarray:
 	case wstringlist: