+2002-09-12 Benjamin Kosnik <bkoz@redhat.com>
+
+ * libmath/Makefile.am (LIBTOOL): Use --tag CC always for this
+ directory.
+ * libmath/Makefile.in: Regenerate.
+ * src/Makefile.am: Tweak comment.
+ * src/Makefile.in: Regenerate.
+
+ * config/locale/gnu/c_locale.h: Remove warnings.
+ Inject __uselocale into __gnu_cxx.
+ * config/locale/generic/c_locale.h: Match.
+
+2002-09-12 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/locale_facets.tcc (__convert_from_v): Remove.
+ * config/locale/gnu/c_locale.h (__convert_from_v): Add.
+ * config/locale/generic/c_locale.h (__convert_from_v): Add.
+
+2002-09-12 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/locale_facets.tcc (__convert_from_v):
+ Use __uselocale instead of setlocale for glibc 2.3+.
+
2002-09-12 Benjamin Kosnik <bkoz@redhat.com>
* src/Makefile.am (sources): Edit.
// Wrapper for underlying C-language localization -*- C++ -*-
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
namespace std
{
typedef int* __c_locale;
+
+ template<typename _Tv>
+ int
+ __convert_from_v(char* __out, const int __size, const char* __fmt,
+ _Tv __v, const __c_locale&, int __prec = -1)
+ {
+ char* __old = setlocale(LC_ALL, NULL);
+ char* __sav = static_cast<char*>(malloc(strlen(__old) + 1));
+ if (__sav)
+ strcpy(__sav, __old);
+ setlocale(LC_ALL, "C");
+
+ int __ret;
+#ifdef _GLIBCPP_USE_C99
+ if (__prec >= 0)
+ __ret = snprintf(__out, __size, __fmt, __prec, __v);
+ else
+ __ret = snprintf(__out, __size, __fmt, __v);
+#else
+ if (__prec >= 0)
+ __ret = sprintf(__out, __fmt, __prec, __v);
+ else
+ __ret = sprintf(__out, __fmt, __v);
+#endif
+ setlocale(LC_ALL, __sav);
+ free(__sav);
+ return __ret;
+ }
}
// Wrapper for underlying C-language localization -*- C++ -*-
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
#define _GLIBCPP_C_LOCALE_GNU 1
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+namespace __gnu_cxx
+{
+ extern "C" __typeof(uselocale) __uselocale;
+}
+#endif
+
namespace std
{
typedef __locale_t __c_locale;
+
+ template<typename _Tv>
+ int
+ __convert_from_v(char* __out, const int __size, const char* __fmt,
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+ _Tv __v, const __c_locale& __cloc, int __prec = -1)
+ {
+ __c_locale __old = __gnu_cxx::__uselocale(__cloc);
+#else
+ _Tv __v, const __c_locale&, int __prec = -1)
+ {
+ char* __old = setlocale(LC_ALL, NULL);
+ char* __sav = static_cast<char*>(malloc(strlen(__old) + 1));
+ if (__sav)
+ strcpy(__sav, __old);
+ setlocale(LC_ALL, "C");
+#endif
+
+ int __ret;
+#ifdef _GLIBCPP_USE_C99
+ if (__prec >= 0)
+ __ret = snprintf(__out, __size, __fmt, __prec, __v);
+ else
+ __ret = snprintf(__out, __size, __fmt, __v);
+#else
+ if (__prec >= 0)
+ __ret = sprintf(__out, __fmt, __prec, __v);
+ else
+ __ret = sprintf(__out, __fmt, __v);
+#endif
+
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+ __gnu_cxx::__uselocale(__old);
+#else
+ setlocale(LC_ALL, __sav);
+ free(__sav);
+#endif
+ return __ret;
+ }
}
// Convert numeric value of type _Tv to string and return length of string.
// If snprintf is available use it, otherwise fall back to the unsafe sprintf
// which, in general, can be dangerous and should be avoided.
-#ifdef _GLIBCPP_USE_C99
template<typename _Tv>
int
__convert_from_v(char* __out, const int __size, const char* __fmt,
- _Tv __v, const __c_locale&, int __prec = -1)
- {
- int __ret;
- char* __old = setlocale(LC_ALL, NULL);
- char* __sav = static_cast<char*>(malloc(strlen(__old) + 1));
- if (__sav)
- strcpy(__sav, __old);
- setlocale(LC_ALL, "C");
- if (__prec >= 0)
- __ret = snprintf(__out, __size, __fmt, __prec, __v);
- else
- __ret = snprintf(__out, __size, __fmt, __v);
- setlocale(LC_ALL, __sav);
- free(__sav);
- return __ret;
- }
-#else
- template<typename _Tv>
- int
- __convert_from_v(char* __out, const int, const char* __fmt, _Tv __v,
- const __c_locale&, int __prec = -1)
- {
- int __ret;
- char* __old = setlocale(LC_ALL, NULL);
- char* __sav = static_cast<char*>(malloc(strlen(__old) + 1));
- if (__sav)
- strcpy(__sav, __old);
- setlocale(LC_ALL, "C");
- if (__prec >= 0)
- __ret = sprintf(__out, __fmt, __prec, __v);
- else
- __ret = sprintf(__out, __fmt, __v);
- setlocale(LC_ALL, __sav);
- free(__sav);
- return __ret;
- }
-#endif
+ _Tv __v, const __c_locale&, int __prec = -1);
// Construct correctly padded string, as per 22.2.2.2.2
// Assumes
libmath_la_SOURCES = stubs.c
-LINK = \
- $(LIBTOOL) --tag CC --mode=link "$(CCLD)" \
- $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
-
# Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES
TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
INCLUDES = \
$(TOPLEVEL_INCLUDES)
+
+# Only compiling "C" sources in this directory.
+LIBTOOL = @LIBTOOL@ --tag CC
\ No newline at end of file
LIBMATH_INCLUDES = @LIBMATH_INCLUDES@
LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@
LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
-LIBTOOL = @LIBTOOL@
LIBUNWIND_FLAG = @LIBUNWIND_FLAG@
LN_S = @LN_S@
MAINT = @MAINT@
libmath_la_SOURCES = stubs.c
-LINK = \
- $(LIBTOOL) --tag CC --mode=link "$(CCLD)" \
- $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
-
-
# Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES
TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
INCLUDES = \
$(TOPLEVEL_INCLUDES)
+
+# Only compiling "C" sources in this directory.
+LIBTOOL = @LIBTOOL@ --tag CC
CONFIG_HEADER = ../config.h
CONFIG_CLEAN_FILES =
LTLIBRARIES = $(noinst_LTLIBRARIES)
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
DIST_COMMON = Makefile.am Makefile.in
mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
-# Cross compiler and multilib support.
+# Cross compiler support.
CXX = @glibcpp_CXX@
toolexecdir = @glibcpp_toolexecdir@
toolexeclibdir = @glibcpp_toolexeclibdir@
mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
-# Cross compiler and multilib support.
+# Cross compiler support.
CXX = @glibcpp_CXX@
toolexecdir = @glibcpp_toolexecdir@
toolexeclibdir = @glibcpp_toolexeclibdir@