Complete display of LC_MONETARY
authorAndreas Schwab <schwab@suse.de>
Mon, 11 Nov 2013 17:12:03 +0000 (18:12 +0100)
committerAndreas Schwab <schwab@suse.de>
Tue, 19 Nov 2013 10:53:00 +0000 (11:53 +0100)
ChangeLog
locale/C-monetary.c
locale/categories.def
locale/programs/locale.c

index b0ca6f7..9568016 100644 (file)
--- 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):
index 3246ff5..9c36c76 100644 (file)
@@ -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 }
index 8c25378..e1172e9 100644 (file)
@@ -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)
index c0bdb6c..d2b28d0 100644 (file)
@@ -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: