Complete display of LC_MONETARY

This commit is contained in:
Andreas Schwab 2013-11-11 18:12:03 +01:00
parent e186536b6f
commit b5449b1296
4 changed files with 30 additions and 1 deletions

View File

@ -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):

View 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 }

View 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)

View 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: