+++ /dev/null
-/* $NetBSD: localeconv.c,v 1.13 2005/11/29 03:11:59 christos Exp $ */\r
-\r
-/*\r
- * Written by J.T. Conklin <jtc@NetBSD.org>.\r
- * Public domain.\r
- */\r
-#include <LibConfig.h>\r
-#include <sys/EfiCdefs.h>\r
-#if defined(LIBC_SCCS) && !defined(lint)\r
-__RCSID("$NetBSD: localeconv.c,v 1.13 2005/11/29 03:11:59 christos Exp $");\r
-#endif /* LIBC_SCCS and not lint */\r
-\r
-#include <sys/localedef.h>\r
-#include <locale.h>\r
-\r
-/*\r
- * The localeconv() function constructs a struct lconv from the current\r
- * monetary and numeric locales.\r
- *\r
- * Because localeconv() may be called many times (especially by library\r
- * routines like printf() & strtod()), the approprate members of the\r
- * lconv structure are computed only when the monetary or numeric\r
- * locale has been changed.\r
- */\r
-int __mlocale_changed = 1;\r
-int __nlocale_changed = 1;\r
-\r
-/*\r
- * Return the current locale conversion.\r
- */\r
-struct lconv *\r
-localeconv()\r
-{\r
- static struct lconv ret;\r
-\r
- if (__mlocale_changed) {\r
- /* LC_MONETARY */\r
- ret.int_curr_symbol =\r
- __UNCONST(_CurrentMonetaryLocale->int_curr_symbol);\r
- ret.currency_symbol =\r
- __UNCONST(_CurrentMonetaryLocale->currency_symbol);\r
- ret.mon_decimal_point =\r
- __UNCONST(_CurrentMonetaryLocale->mon_decimal_point);\r
- ret.mon_thousands_sep =\r
- __UNCONST(_CurrentMonetaryLocale->mon_thousands_sep);\r
- ret.mon_grouping =\r
- __UNCONST(_CurrentMonetaryLocale->mon_grouping);\r
- ret.positive_sign =\r
- __UNCONST(_CurrentMonetaryLocale->positive_sign);\r
- ret.negative_sign =\r
- __UNCONST(_CurrentMonetaryLocale->negative_sign);\r
- ret.int_frac_digits = _CurrentMonetaryLocale->int_frac_digits;\r
- ret.frac_digits = _CurrentMonetaryLocale->frac_digits;\r
- ret.p_cs_precedes = _CurrentMonetaryLocale->p_cs_precedes;\r
- ret.p_sep_by_space = _CurrentMonetaryLocale->p_sep_by_space;\r
- ret.n_cs_precedes = _CurrentMonetaryLocale->n_cs_precedes;\r
- ret.n_sep_by_space = _CurrentMonetaryLocale->n_sep_by_space;\r
- ret.p_sign_posn = _CurrentMonetaryLocale->p_sign_posn;\r
- ret.n_sign_posn = _CurrentMonetaryLocale->n_sign_posn;\r
- ret.int_p_cs_precedes =\r
- _CurrentMonetaryLocale->int_p_cs_precedes;\r
- ret.int_n_cs_precedes =\r
- _CurrentMonetaryLocale->int_n_cs_precedes;\r
- ret.int_p_sep_by_space =\r
- _CurrentMonetaryLocale->int_p_sep_by_space;\r
- ret.int_n_sep_by_space =\r
- _CurrentMonetaryLocale->int_n_sep_by_space;\r
- ret.int_p_sign_posn = _CurrentMonetaryLocale->int_p_sign_posn;\r
- ret.int_n_sign_posn = _CurrentMonetaryLocale->int_n_sign_posn;\r
- __mlocale_changed = 0;\r
- }\r
-\r
- if (__nlocale_changed) {\r
- /* LC_NUMERIC */\r
- ret.decimal_point =\r
- __UNCONST(_CurrentNumericLocale->decimal_point);\r
- ret.thousands_sep =\r
- __UNCONST(_CurrentNumericLocale->thousands_sep);\r
- ret.grouping =\r
- __UNCONST(_CurrentNumericLocale->grouping);\r
- __nlocale_changed = 0;\r
- }\r
-\r
- return (&ret);\r
-}\r