mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-07 23:25:11 +08:00
acinclude.m4 (GLIBCXX_ENABLE_CLOCALE): Change locale implementation from darwin to DragonFly.
2015-11-14 Andreas Tobler <andreast@gcc.gnu.org> * acinclude.m4 (GLIBCXX_ENABLE_CLOCALE): Change locale implementation from darwin to DragonFly. * configure: Regenerate. * config/os/bsd/freebsd/ctype_configure_char.cc: Improve locale support, do it the same as DragonFly. * config/os/bsd/freebsd/os_defines.h: Add fine grained C99 defines. From-SVN: r230383
This commit is contained in:
parent
38e5f0454c
commit
301d1d00e6
@ -1,3 +1,12 @@
|
||||
2015-11-14 Andreas Tobler <andreast@gcc.gnu.org>
|
||||
|
||||
* acinclude.m4 (GLIBCXX_ENABLE_CLOCALE): Change locale implementation
|
||||
from darwin to DragonFly.
|
||||
* configure: Regenerate.
|
||||
* config/os/bsd/freebsd/ctype_configure_char.cc: Improve locale
|
||||
support, do it the same as DragonFly.
|
||||
* config/os/bsd/freebsd/os_defines.h: Add fine grained C99 defines.
|
||||
|
||||
2015-11-14 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* testsuite/21_strings/basic_string/capacity/char/18654.cc: Use
|
||||
|
@ -2236,10 +2236,10 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
|
||||
linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
|
||||
enable_clocale_flag=gnu
|
||||
;;
|
||||
darwin* | freebsd*)
|
||||
darwin*)
|
||||
enable_clocale_flag=darwin
|
||||
;;
|
||||
dragonfly*)
|
||||
dragonfly* | freebsd*)
|
||||
enable_clocale_flag=dragonfly
|
||||
;;
|
||||
openbsd*)
|
||||
@ -2318,7 +2318,7 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
|
||||
CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
|
||||
;;
|
||||
darwin)
|
||||
AC_MSG_RESULT(darwin or freebsd)
|
||||
AC_MSG_RESULT(darwin)
|
||||
|
||||
CLOCALE_H=config/locale/generic/c_locale.h
|
||||
CLOCALE_CC=config/locale/generic/c_locale.cc
|
||||
@ -2335,7 +2335,7 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
|
||||
;;
|
||||
|
||||
dragonfly)
|
||||
AC_MSG_RESULT(dragonfly)
|
||||
AC_MSG_RESULT(dragonfly or freebsd)
|
||||
|
||||
CLOCALE_H=config/locale/dragonfly/c_locale.h
|
||||
CLOCALE_CC=config/locale/dragonfly/c_locale.cc
|
||||
|
@ -1,6 +1,6 @@
|
||||
// Locale support -*- C++ -*-
|
||||
|
||||
// Copyright (C) 2011-2015 Free Software Foundation, Inc.
|
||||
// Copyright (C) 2014-2015 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
|
||||
@ -37,32 +37,60 @@ namespace std _GLIBCXX_VISIBILITY(default)
|
||||
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
|
||||
// Information as gleaned from /usr/include/ctype.h
|
||||
|
||||
|
||||
const ctype_base::mask*
|
||||
ctype<char>::classic_table() throw()
|
||||
{ return 0; }
|
||||
{ return NULL; }
|
||||
|
||||
ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
|
||||
size_t __refs)
|
||||
: facet(__refs), _M_del(__table != 0 && __del),
|
||||
_M_toupper(NULL), _M_tolower(NULL),
|
||||
_M_table(__table ? __table : classic_table())
|
||||
{
|
||||
ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
|
||||
size_t __refs)
|
||||
: facet(__refs), _M_c_locale_ctype(_S_get_c_locale()),
|
||||
_M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0)
|
||||
{
|
||||
char* __old = setlocale(LC_CTYPE, NULL);
|
||||
char* __sav = NULL;
|
||||
if (strcmp(__old, "C"))
|
||||
{
|
||||
const size_t __len = strlen(__old) + 1;
|
||||
__sav = new char[__len];
|
||||
memcpy(__sav, __old, __len);
|
||||
setlocale(LC_CTYPE, "C");
|
||||
}
|
||||
_M_toupper = NULL;
|
||||
_M_tolower = NULL;
|
||||
_M_table = __table ? __table : classic_table();
|
||||
if (__sav)
|
||||
{
|
||||
setlocale(LC_CTYPE, __sav);
|
||||
delete [] __sav;
|
||||
}
|
||||
memset(_M_widen, 0, sizeof(_M_widen));
|
||||
_M_widen_ok = 0;
|
||||
memset(_M_narrow, 0, sizeof(_M_narrow));
|
||||
_M_narrow_ok = 0;
|
||||
}
|
||||
|
||||
ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
|
||||
: facet(__refs), _M_del(__table != 0 && __del),
|
||||
_M_toupper(NULL), _M_tolower(NULL),
|
||||
_M_table(__table ? __table : classic_table())
|
||||
{
|
||||
ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
|
||||
: facet(__refs), _M_c_locale_ctype(_S_get_c_locale()),
|
||||
_M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0)
|
||||
{
|
||||
char* __old = setlocale(LC_CTYPE, NULL);
|
||||
char* __sav = NULL;
|
||||
if (strcmp(__old, "C"))
|
||||
{
|
||||
const size_t __len = strlen(__old) + 1;
|
||||
__sav = new char[__len];
|
||||
memcpy(__sav, __old, __len);
|
||||
setlocale(LC_CTYPE, "C");
|
||||
}
|
||||
_M_toupper = NULL;
|
||||
_M_tolower = NULL;
|
||||
_M_table = __table ? __table : classic_table();
|
||||
if (__sav)
|
||||
{
|
||||
setlocale(LC_CTYPE, __sav);
|
||||
delete [] __sav;
|
||||
}
|
||||
memset(_M_widen, 0, sizeof(_M_widen));
|
||||
_M_widen_ok = 0;
|
||||
memset(_M_narrow, 0, sizeof(_M_narrow));
|
||||
_M_narrow_ok = 0;
|
||||
}
|
||||
|
||||
char
|
||||
@ -84,7 +112,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
ctype<char>::do_tolower(char __c) const
|
||||
{ return ::tolower((int) __c); }
|
||||
|
||||
const char*
|
||||
const char*
|
||||
ctype<char>::do_tolower(char* __low, const char* __high) const
|
||||
{
|
||||
while (__low < __high)
|
||||
|
@ -29,6 +29,10 @@
|
||||
// System-specific #define, typedefs, corrections, etc, go here. This
|
||||
// file will come before all others.
|
||||
|
||||
#define _GLIBCXX_USE_C99_STDIO 1
|
||||
#define _GLIBCXX_USE_C99_STDLIB 1
|
||||
#define _GLIBCXX_USE_C99_WCHAR 1
|
||||
|
||||
#define _GLIBCXX_USE_C99_CHECK 1
|
||||
#define _GLIBCXX_USE_C99_DYNAMIC (!(__ISO_C_VISIBLE >= 1999))
|
||||
#define _GLIBCXX_USE_C99_LONG_LONG_CHECK 1
|
||||
|
12
libstdc++-v3/configure
vendored
12
libstdc++-v3/configure
vendored
@ -15831,10 +15831,10 @@ fi
|
||||
linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
|
||||
enable_clocale_flag=gnu
|
||||
;;
|
||||
darwin* | freebsd*)
|
||||
darwin*)
|
||||
enable_clocale_flag=darwin
|
||||
;;
|
||||
dragonfly*)
|
||||
dragonfly* | freebsd*)
|
||||
enable_clocale_flag=dragonfly
|
||||
;;
|
||||
openbsd*)
|
||||
@ -15965,8 +15965,8 @@ $as_echo "generic" >&6; }
|
||||
CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
|
||||
;;
|
||||
darwin)
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: darwin or freebsd" >&5
|
||||
$as_echo "darwin or freebsd" >&6; }
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: darwin" >&5
|
||||
$as_echo "darwin" >&6; }
|
||||
|
||||
CLOCALE_H=config/locale/generic/c_locale.h
|
||||
CLOCALE_CC=config/locale/generic/c_locale.cc
|
||||
@ -15983,8 +15983,8 @@ $as_echo "darwin or freebsd" >&6; }
|
||||
;;
|
||||
|
||||
dragonfly)
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: dragonfly" >&5
|
||||
$as_echo "dragonfly" >&6; }
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: dragonfly or freebsd" >&5
|
||||
$as_echo "dragonfly or freebsd" >&6; }
|
||||
|
||||
CLOCALE_H=config/locale/dragonfly/c_locale.h
|
||||
CLOCALE_CC=config/locale/dragonfly/c_locale.cc
|
||||
|
Loading…
Reference in New Issue
Block a user