.
[kopensolaris-gnu/glibc.git] / locale / localeconv.c
index 8bcfc05..5cbd99e 100644 (file)
@@ -1,50 +1,75 @@
-/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+/* Copyright (C) 1991, 92, 95, 97, 99, 2000 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
 
-The GNU C Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 1, or (at your option)
-any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
 
-The GNU C Library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with the GNU C Library; see the file COPYING.  If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
 
-#include <ansidecl.h>
-#include <localeinfo.h>
 #include <locale.h>
-
+#include "localeinfo.h"
+#include <shlib-compat.h>
 
 /* Return monetary and numeric information about the current locale.  */
 struct lconv *
-DEFUN_VOID(localeconv)
+__localeconv (void)
 {
   static struct lconv result;
 
-  result.decimal_point = (char *) _numeric_info->decimal_point;
-  result.thousands_sep = (char *) _numeric_info->thousands_sep;
-  result.grouping = (char *) _numeric_info->grouping;
-
-  result.int_curr_symbol = (char *) _monetary_info->int_curr_symbol;
-  result.currency_symbol = (char *) _monetary_info->currency_symbol;
-  result.mon_decimal_point = (char *) _monetary_info->mon_decimal_point;
-  result.mon_thousands_sep = (char *) _monetary_info->mon_thousands_sep;
-  result.mon_grouping = (char *) _monetary_info->mon_grouping;
-  result.positive_sign = (char *) _monetary_info->positive_sign;
-  result.negative_sign = (char *) _monetary_info->negative_sign;
-  result.int_frac_digits = _monetary_info->int_frac_digits;
-  result.frac_digits = _monetary_info->frac_digits;
-  result.p_cs_precedes = _monetary_info->p_cs_precedes;
-  result.p_sep_by_space = _monetary_info->p_sep_by_space;
-  result.n_cs_precedes = _monetary_info->p_cs_precedes;
-  result.n_sep_by_space = _monetary_info->n_sep_by_space;
-  result.p_sign_posn = _monetary_info->p_sign_posn;
-  result.n_sign_posn = _monetary_info->n_sign_posn;
+  result.decimal_point = (char *) _NL_CURRENT (LC_NUMERIC, DECIMAL_POINT);
+  result.thousands_sep = (char *) _NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP);
+  result.grouping = (char *) _NL_CURRENT (LC_NUMERIC, GROUPING);
+  if (*result.grouping == CHAR_MAX || *result.grouping == (char) -1)
+    result.grouping = (char *) "";
+
+  result.int_curr_symbol = (char *) _NL_CURRENT (LC_MONETARY, INT_CURR_SYMBOL);
+  result.currency_symbol = (char *) _NL_CURRENT (LC_MONETARY, CURRENCY_SYMBOL);
+  result.mon_decimal_point = (char *) _NL_CURRENT (LC_MONETARY,
+                                                  MON_DECIMAL_POINT);
+  result.mon_thousands_sep = (char *) _NL_CURRENT (LC_MONETARY,
+                                                  MON_THOUSANDS_SEP);
+  result.mon_grouping = (char *) _NL_CURRENT (LC_MONETARY, MON_GROUPING);
+  if (*result.mon_grouping == CHAR_MAX || *result.mon_grouping == (char) -1)
+    result.mon_grouping = (char *) "";
+  result.positive_sign = (char *) _NL_CURRENT (LC_MONETARY, POSITIVE_SIGN);
+  result.negative_sign = (char *) _NL_CURRENT (LC_MONETARY, NEGATIVE_SIGN);
+  result.int_frac_digits = *(char *) _NL_CURRENT (LC_MONETARY,
+                                                 INT_FRAC_DIGITS);
+  result.frac_digits = *(char *) _NL_CURRENT (LC_MONETARY, FRAC_DIGITS);
+  result.p_cs_precedes = *(char *) _NL_CURRENT (LC_MONETARY, P_CS_PRECEDES);
+  result.p_sep_by_space = *(char *) _NL_CURRENT (LC_MONETARY, P_SEP_BY_SPACE);
+  result.n_cs_precedes = *(char *) _NL_CURRENT (LC_MONETARY, N_CS_PRECEDES);
+  result.n_sep_by_space = *(char *) _NL_CURRENT (LC_MONETARY, N_SEP_BY_SPACE);
+  result.p_sign_posn = *(char *) _NL_CURRENT (LC_MONETARY, P_SIGN_POSN);
+  result.n_sign_posn = *(char *) _NL_CURRENT (LC_MONETARY, N_SIGN_POSN);
+  result.int_p_cs_precedes = *(char *) _NL_CURRENT (LC_MONETARY,
+                                                   INT_P_CS_PRECEDES);
+  result.int_p_sep_by_space = *(char *) _NL_CURRENT (LC_MONETARY,
+                                                    INT_P_SEP_BY_SPACE);
+  result.int_n_cs_precedes = *(char *) _NL_CURRENT (LC_MONETARY,
+                                                   INT_N_CS_PRECEDES);
+  result.int_n_sep_by_space = *(char *) _NL_CURRENT (LC_MONETARY,
+                                                    INT_N_SEP_BY_SPACE);
+  result.int_p_sign_posn = *(char *) _NL_CURRENT (LC_MONETARY,
+                                                 INT_P_SIGN_POSN);
+  result.int_n_sign_posn = *(char *) _NL_CURRENT (LC_MONETARY,
+                                                 INT_N_SIGN_POSN);
 
   return &result;
 }
+
+versioned_symbol (libc, __localeconv, localeconv, GLIBC_2_2);
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
+strong_alias (__localeconv, __localeconv20)
+compat_symbol (libc, __localeconv20, localeconv, GLIBC_2_0);
+#endif