diff options
Diffstat (limited to 'locale')
-rw-r--r-- | locale/langinfo.h | 8 | ||||
-rw-r--r-- | locale/programs/ld-monetary.c | 12 |
2 files changed, 16 insertions, 4 deletions
diff --git a/locale/langinfo.h b/locale/langinfo.h index 9ae6c8160c..c0d8d9b19a 100644 --- a/locale/langinfo.h +++ b/locale/langinfo.h @@ -324,10 +324,6 @@ enum #define INT_CURR_SYMBOL INT_CURR_SYMBOL CURRENCY_SYMBOL, #define CURRENCY_SYMBOL CURRENCY_SYMBOL -#ifdef __USE_XOPEN - CRNCYSTR = CURRENCY_SYMBOL, -# define CRNCYSTR CRNCYSTR -#endif MON_DECIMAL_POINT, #define MON_DECIMAL_POINT MON_DECIMAL_POINT MON_THOUSANDS_SEP, @@ -354,6 +350,10 @@ enum #define P_SIGN_POSN P_SIGN_POSN N_SIGN_POSN, #define N_SIGN_POSN N_SIGN_POSN + _NL_MONETARY_CRNCYSTR, +#ifdef __USE_XOPEN +# define CRNCYSTR __CRNCYSTR +#endif _NL_MONETARY_INT_P_CS_PRECEDES, _NL_MONETARY_INT_P_SEP_BY_SPACE, _NL_MONETARY_INT_N_CS_PRECEDES, diff --git a/locale/programs/ld-monetary.c b/locale/programs/ld-monetary.c index 24fb2a85eb..7e99b3f514 100644 --- a/locale/programs/ld-monetary.c +++ b/locale/programs/ld-monetary.c @@ -84,6 +84,7 @@ struct locale_monetary_t uint32_t duo_valid_from; uint32_t duo_valid_to; uint32_t conversion_rate[2]; + char *crncystr; }; @@ -345,6 +346,12 @@ not correspond to a valid name in ISO 4217"), monetary->conversion_rate[0] = 1; monetary->conversion_rate[1] = 1; } + + /* Create the crncystr entry. */ + monetary->crncystr = (char *) xmalloc (strlen (monetary->currency_symbol) + + 2); + monetary->crncystr[0] = monetary->p_cs_precedes ? '-' : '+'; + strcpy (&monetary->crncystr[1], monetary->currency_symbol); } @@ -445,6 +452,11 @@ monetary_output (struct localedef_t *locale, struct charmap_t *charmap, ++cnt; idx[cnt - 2] = idx[cnt - 3] + iov[cnt - 1].iov_len; + iov[cnt].iov_base = (void *) &monetary->crncystr; + iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1; + ++cnt; + + idx[cnt - 2] = idx[cnt - 3] + iov[cnt - 1].iov_len; iov[cnt].iov_base = (void *) &monetary->int_p_cs_precedes; iov[cnt].iov_len = 1; ++cnt; |