? log Index: external/gpl3/gcc/dist/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h =================================================================== RCS file: /cvsroot/src/external/gpl3/gcc/dist/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h,v retrieving revision 1.2 diff -u -r1.2 ctype_base.h --- external/gpl3/gcc/dist/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h 21 Jun 2011 02:41:39 -0000 1.2 +++ external/gpl3/gcc/dist/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h 11 Sep 2012 00:33:24 -0000 @@ -41,18 +41,43 @@ // NB: Offsets into ctype::_M_table force a particular size // on the mask type. Because of this, we don't use an enum. - typedef unsigned char mask; +#ifdef _CTYPE_A + typedef unsigned short mask; static const mask upper = _CTYPE_U; static const mask lower = _CTYPE_L; - static const mask alpha = _CTYPE_U | _CTYPE_L; - static const mask digit = _CTYPE_N; - static const mask xdigit = _CTYPE_N | _CTYPE_X; + static const mask alpha = _CTYPE_A; + static const mask digit = _CTYPE_D; + static const mask xdigit = _CTYPE_X; static const mask space = _CTYPE_S; - static const mask print = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N | _CTYPE_B; - static const mask graph = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N; + static const mask print = _CTYPE_R; + static const mask graph = _CTYPE_G; static const mask cntrl = _CTYPE_C; static const mask punct = _CTYPE_P; - static const mask alnum = _CTYPE_U | _CTYPE_L | _CTYPE_N; + static const mask alnum = _CTYPE_A | _CTYPE_D; +#else +#ifdef _CTYPE_N +#define _U _CTYPE_U +#define _L _CTYPE_L +#define _N _CTYPE_N +#define _S _CTYPE_S +#define _P _CTYPE_P +#define _C _CTYPE_C +#define _X _CTYPE_X +#define _B _CTYPE_B +#endif + typedef unsigned char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _N | _X; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#endif }; _GLIBCXX_END_NAMESPACE Index: external/gpl3/gcc/dist/libstdc++-v3/config/os/bsd/netbsd/ctype_noninline.h =================================================================== RCS file: /cvsroot/src/external/gpl3/gcc/dist/libstdc++-v3/config/os/bsd/netbsd/ctype_noninline.h,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 ctype_noninline.h --- external/gpl3/gcc/dist/libstdc++-v3/config/os/bsd/netbsd/ctype_noninline.h 21 Jun 2011 01:24:50 -0000 1.1.1.1 +++ external/gpl3/gcc/dist/libstdc++-v3/config/os/bsd/netbsd/ctype_noninline.h 11 Sep 2012 00:33:24 -0000 @@ -33,11 +33,19 @@ // Information as gleaned from /usr/include/ctype.h - extern "C" const u_int8_t _C_ctype_[]; +#ifdef _CTYPE_A + extern "C" const unsigned short _C_ctype_tab_[]; +#else + extern "C" const unsigned char _C_ctype_[]; +#endif const ctype_base::mask* ctype::classic_table() throw() +#ifdef _CTYPE_A + { return _C_ctype_tab_ + 1; } +#else { return _C_ctype_ + 1; } +#endif ctype::ctype(__c_locale, const mask* __table, bool __del, size_t __refs) Index: gnu/dist/gcc4/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h =================================================================== RCS file: /cvsroot/src/gnu/dist/gcc4/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h,v retrieving revision 1.2 diff -u -r1.2 ctype_base.h --- gnu/dist/gcc4/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h 14 Dec 2010 02:28:57 -0000 1.2 +++ gnu/dist/gcc4/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h 11 Sep 2012 00:33:50 -0000 @@ -43,16 +43,41 @@ // NB: Offsets into ctype::_M_table force a particular size // on the mask type. Because of this, we don't use an enum. - typedef unsigned char mask; +#ifdef _CTYPE_A + typedef unsigned short mask; static const mask upper = _CTYPE_U; static const mask lower = _CTYPE_L; - static const mask alpha = _CTYPE_U | _CTYPE_L; - static const mask digit = _CTYPE_N; - static const mask xdigit = _CTYPE_N | _CTYPE_X; + static const mask alpha = _CTYPE_A; + static const mask digit = _CTYPE_D; + static const mask xdigit = _CTYPE_X; static const mask space = _CTYPE_S; - static const mask print = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N | _CTYPE_B; - static const mask graph = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N; + static const mask print = _CTYPE_R; + static const mask graph = _CTYPE_G; static const mask cntrl = _CTYPE_C; static const mask punct = _CTYPE_P; - static const mask alnum = _CTYPE_U | _CTYPE_L | _CTYPE_N; + static const mask alnum = _CTYPE_A | _CTYPE_D; +#else +#ifdef _CTYPE_N +#define _U _CTYPE_U +#define _L _CTYPE_L +#define _N _CTYPE_N +#define _S _CTYPE_S +#define _P _CTYPE_P +#define _C _CTYPE_C +#define _X _CTYPE_X +#define _B _CTYPE_B +#endif + typedef unsigned char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _N | _X; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#endif }; Index: gnu/dist/gcc4/libstdc++-v3/config/os/bsd/netbsd/ctype_noninline.h =================================================================== RCS file: /cvsroot/src/gnu/dist/gcc4/libstdc++-v3/config/os/bsd/netbsd/ctype_noninline.h,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 ctype_noninline.h --- gnu/dist/gcc4/libstdc++-v3/config/os/bsd/netbsd/ctype_noninline.h 20 Apr 2006 10:16:24 -0000 1.1.1.1 +++ gnu/dist/gcc4/libstdc++-v3/config/os/bsd/netbsd/ctype_noninline.h 11 Sep 2012 00:33:50 -0000 @@ -33,11 +33,19 @@ // Information as gleaned from /usr/include/ctype.h - extern "C" const u_int8_t _C_ctype_[]; +#ifdef _CTYPE_A + extern "C" const unsigned short _C_ctype_tab_[]; +#else + extern "C" const unsigned char _C_ctype_[]; +#endif const ctype_base::mask* ctype::classic_table() throw() +#ifdef _CTYPE_A + { return _C_ctype_tab_ + 1; } +#else { return _C_ctype_ + 1; } +#endif ctype::ctype(__c_locale, const mask* __table, bool __del, size_t __refs) Index: lib/libc/shlib_version =================================================================== RCS file: /cvsroot/src/lib/libc/shlib_version,v retrieving revision 1.235 diff -u -r1.235 shlib_version --- lib/libc/shlib_version 24 Aug 2012 06:12:52 -0000 1.235 +++ lib/libc/shlib_version 11 Sep 2012 00:33:58 -0000 @@ -28,9 +28,6 @@ # for example in assembler code. # - kill sigcontext: never request version 0 or 1 signal trampoline. # always request version 2 trampoline. (on vax, 3). -# - change _ctype_ table in ctype.h and gen/ctype_.c 8bit -> 16 or 32bit. -# it's insufficient bitwidth to implement all ctype class. -# see isblank's comment in ctype.h. # - remove gets(); it is finally dead in c11. # - make __cerror (spelled CERROR) hidden again # - remove ruserok() and friends to libcompat (or entirely) Index: lib/libc/citrus/citrus_lc_ctype.c =================================================================== RCS file: /cvsroot/src/lib/libc/citrus/citrus_lc_ctype.c,v retrieving revision 1.10 diff -u -r1.10 citrus_lc_ctype.c --- lib/libc/citrus/citrus_lc_ctype.c 4 Mar 2012 21:14:55 -0000 1.10 +++ lib/libc/citrus/citrus_lc_ctype.c 11 Sep 2012 00:33:59 -0000 @@ -108,6 +108,10 @@ cache->toupper_tab = data->rl_toupper_tab; cache->mb_cur_max = _citrus_ctype_get_mb_cur_max(data->rl_citrus_ctype); cache->items[(size_t)CODESET] = data->rl_codeset; + +#ifdef _COMPAT_BSDCTYPE + cache->compat_bsdctype = data->rl_compat_bsdctype; +#endif } static __inline void @@ -116,10 +120,14 @@ _DIAGASSERT(data != NULL); __mb_cur_max = _citrus_ctype_get_mb_cur_max(data->rl_citrus_ctype); - _ctype_ = data->rl_ctype_tab; + _ctype_tab_ = data->rl_ctype_tab; _tolower_tab_ = data->rl_tolower_tab; _toupper_tab_ = data->rl_toupper_tab; _CurrentRuneLocale = data; + +#ifdef _COMPAT_BSDCTYPE + _ctype_ = data->rl_compat_bsdctype; +#endif } /* Index: lib/libc/compat/locale/Makefile.inc =================================================================== RCS file: /cvsroot/src/lib/libc/compat/locale/Makefile.inc,v retrieving revision 1.1 diff -u -r1.1 Makefile.inc --- lib/libc/compat/locale/Makefile.inc 7 Jun 2010 13:52:30 -0000 1.1 +++ lib/libc/compat/locale/Makefile.inc 11 Sep 2012 00:34:00 -0000 @@ -2,5 +2,5 @@ .PATH: ${COMPATDIR}/arch/${MACHINE_ARCH}/locale ${COMPATDIR}/locale -CPPFLAGS+= -I${COMPATDIR}/../locale +CPPFLAGS+= -I${COMPATDIR}/../locale -D_COMPAT_BSDCTYPE SRCS+= compat_setlocale1.c compat_setlocale32.c Index: lib/libc/gen/ctype_.c =================================================================== RCS file: /cvsroot/src/lib/libc/gen/ctype_.c,v retrieving revision 1.19 diff -u -r1.19 ctype_.c --- lib/libc/gen/ctype_.c 14 Dec 2010 02:28:57 -0000 1.19 +++ lib/libc/gen/ctype_.c 11 Sep 2012 00:34:00 -0000 @@ -34,6 +34,39 @@ * SUCH DAMAGE. */ +/*- + * Copyright (c) 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Paul Borman at Krystal Technologies. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + #include #if defined(LIBC_SCCS) && !defined(lint) #if 0 @@ -51,16 +84,8 @@ #error "EOF != -1" #endif -#define _U _CTYPE_U -#define _L _CTYPE_L -#define _N _CTYPE_N -#define _S _CTYPE_S -#define _P _CTYPE_P -#define _C _CTYPE_C -#define _X _CTYPE_X -#define _B _CTYPE_B - -const unsigned char _C_ctype_[1 + _CTYPE_NUM_CHARS] = { +#ifdef _COMPAT_BSDCTYPE +const unsigned char _C_compat_bsdctype[1 + _CTYPE_NUM_CHARS] = { 0, _C, _C, _C, _C, _C, _C, _C, _C, _C, _C|_S, _C|_S, _C|_S, _C|_S, _C|_S, _C, _C, @@ -80,4 +105,143 @@ _L, _L, _L, _P, _P, _P, _P, _C }; -const unsigned char *_ctype_ = &_C_ctype_[0]; +#ifdef __weak_alias +__weak_alias(_C_ctype_, _C_compat_bsdctype) +#endif + +const unsigned char *_ctype_ = &_C_compat_bsdctype[0]; +#endif + +const unsigned short _C_ctype_tab_[1 + _CTYPE_NUM_CHARS] = { + 0, +/*00*/ _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, +/*08*/ _CTYPE_C, + _CTYPE_C|_CTYPE_S|_CTYPE_B, + _CTYPE_C|_CTYPE_S, + _CTYPE_C|_CTYPE_S, + _CTYPE_C|_CTYPE_S, + _CTYPE_C|_CTYPE_S, + _CTYPE_C, + _CTYPE_C, +/*10*/ _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, +/*18*/ _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, + _CTYPE_C, +/*20*/ _CTYPE_S|_CTYPE_B|_CTYPE_R, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, +/*28*/ _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, +/*30*/ _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X, +/*38*/ _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X, + _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, +/*40*/ _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, +/*48*/ _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, +/*50*/ _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, +/*58*/ _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, +/*60*/ _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, +/*68*/ _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, +/*70*/ _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, +/*78*/ _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_P|_CTYPE_R|_CTYPE_G, + _CTYPE_C, +}; + +const unsigned short *_ctype_tab_ = &_C_ctype_tab_[0]; Index: lib/libc/gen/isctype.c =================================================================== RCS file: /cvsroot/src/lib/libc/gen/isctype.c,v retrieving revision 1.21 diff -u -r1.21 isctype.c --- lib/libc/gen/isctype.c 14 Dec 2010 02:28:57 -0000 1.21 +++ lib/libc/gen/isctype.c 11 Sep 2012 00:34:00 -0000 @@ -55,24 +55,18 @@ return (int)(_CTYPE_TAB(ctype_tab, c) & (bit)); \ } -_ISCTYPE_FUNC(alnum, _CTYPE_U|_CTYPE_L|_CTYPE_N ) -_ISCTYPE_FUNC(alpha, _CTYPE_U|_CTYPE_L ) +_ISCTYPE_FUNC(alnum, (_CTYPE_A|_CTYPE_D)) +_ISCTYPE_FUNC(alpha, _CTYPE_A) +_ISCTYPE_FUNC(blank, _CTYPE_B) _ISCTYPE_FUNC(cntrl, _CTYPE_C ) -_ISCTYPE_FUNC(digit, _CTYPE_N ) -_ISCTYPE_FUNC(graph, _CTYPE_P|_CTYPE_U|_CTYPE_L|_CTYPE_N ) +_ISCTYPE_FUNC(digit, _CTYPE_D) +_ISCTYPE_FUNC(graph, _CTYPE_G) _ISCTYPE_FUNC(lower, _CTYPE_L ) -_ISCTYPE_FUNC(print, _CTYPE_P|_CTYPE_U|_CTYPE_L|_CTYPE_N|_CTYPE_B) +_ISCTYPE_FUNC(print, _CTYPE_R) _ISCTYPE_FUNC(punct, _CTYPE_P ) _ISCTYPE_FUNC(space, _CTYPE_S ) _ISCTYPE_FUNC(upper, _CTYPE_U ) -_ISCTYPE_FUNC(xdigit, _CTYPE_N|_CTYPE_X ) - -int -isblank(int c) -{ - /* XXX: FIXME */ - return c == ' ' || c == '\t'; -} +_ISCTYPE_FUNC(xdigit, _CTYPE_X) int toupper(int c) Index: lib/libc/gen/tolower_.c =================================================================== RCS file: /cvsroot/src/lib/libc/gen/tolower_.c,v retrieving revision 1.13 diff -u -r1.13 tolower_.c --- lib/libc/gen/tolower_.c 1 Jun 2010 13:52:08 -0000 1.13 +++ lib/libc/gen/tolower_.c 11 Sep 2012 00:34:00 -0000 @@ -18,7 +18,7 @@ #error "EOF != -1" #endif -const short _C_tolower_[1 + _CTYPE_NUM_CHARS] = { +const short _C_tolower_tab_[1 + _CTYPE_NUM_CHARS] = { EOF, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, @@ -54,4 +54,10 @@ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff }; -const short *_tolower_tab_ = &_C_tolower_[0]; +#ifdef _COMPAT_BSDCTYPE +#ifdef __weak_alias +__weak_alias(_C_tolower_, _C_tolower_tab_) +#endif +#endif + +const short *_tolower_tab_ = &_C_tolower_tab_[0]; Index: lib/libc/gen/toupper_.c =================================================================== RCS file: /cvsroot/src/lib/libc/gen/toupper_.c,v retrieving revision 1.13 diff -u -r1.13 toupper_.c --- lib/libc/gen/toupper_.c 1 Jun 2010 13:52:08 -0000 1.13 +++ lib/libc/gen/toupper_.c 11 Sep 2012 00:34:00 -0000 @@ -18,7 +18,7 @@ #error "EOF != -1" #endif -const short _C_toupper_[1 + _CTYPE_NUM_CHARS] = { +const short _C_toupper_tab_[1 + _CTYPE_NUM_CHARS] = { EOF, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, @@ -54,4 +54,10 @@ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff }; -const short *_toupper_tab_ = &_C_toupper_[0]; +#ifdef _COMPAT_BSDCTYPE +#ifdef __weak_alias +__weak_alias(_C_toupper_, _C_toupper_tab_) +#endif +#endif + +const short *_toupper_tab_ = &_C_toupper_tab_[0]; Index: lib/libc/locale/ctype_local.h =================================================================== RCS file: /cvsroot/src/lib/libc/locale/ctype_local.h,v retrieving revision 1.4 diff -u -r1.4 ctype_local.h --- lib/libc/locale/ctype_local.h 13 Jun 2010 04:14:57 -0000 1.4 +++ lib/libc/locale/ctype_local.h 11 Sep 2012 00:34:00 -0000 @@ -33,8 +33,22 @@ #define _CTYPE_NUM_CHARS (1 << CHAR_BIT) #define _CTYPE_CACHE_SIZE (1 << 8) -extern const unsigned char _C_ctype_[]; -extern const short _C_toupper_[]; -extern const short _C_tolower_[]; +#define _U 0x01 +#define _L 0x02 +#define _N 0x04 +#define _S 0x08 +#define _P 0x10 +#define _C 0x20 +#define _X 0x40 +#define _B 0x80 + +extern const unsigned short _C_ctype_tab_[]; +extern const short _C_toupper_tab_[]; +extern const short _C_tolower_tab_[]; + +#ifdef _COMPAT_BSDCTYPE +extern const unsigned char *_ctype_; +extern const unsigned char _C_compat_bsdctype[]; +#endif #endif /*_CTYPE_LOCAL_H_*/ Index: lib/libc/locale/global_locale.c =================================================================== RCS file: /cvsroot/src/lib/libc/locale/global_locale.c,v retrieving revision 1.13 diff -u -r1.13 global_locale.c --- lib/libc/locale/global_locale.c 21 Mar 2012 14:11:24 -0000 1.13 +++ lib/libc/locale/global_locale.c 11 Sep 2012 00:34:00 -0000 @@ -135,12 +135,16 @@ }; static struct _locale_cache_t _global_cache = { - .ctype_tab = (const unsigned char *)&_C_ctype_[0], - .tolower_tab = (const short *)&_C_tolower_[0], - .toupper_tab = (const short *)&_C_toupper_[0], + .ctype_tab = (const unsigned short *)&_C_ctype_tab_[0], + .tolower_tab = (const short *)&_C_tolower_tab_[0], + .toupper_tab = (const short *)&_C_toupper_tab_[0], .mb_cur_max = (size_t)1, .ldata = &_global_ldata, .items = &_global_items[0], + +#ifdef _COMPAT_BSDCTYPE + .compat_bsdctype = (const unsigned char *)&_C_compat_bsdctype[0], +#endif }; struct _locale_impl_t _global_locale = { Index: lib/libc/locale/rune.c =================================================================== RCS file: /cvsroot/src/lib/libc/locale/rune.c,v retrieving revision 1.45 diff -u -r1.45 rune.c --- lib/libc/locale/rune.c 8 Aug 2012 20:16:50 -0000 1.45 +++ lib/libc/locale/rune.c 11 Sep 2012 00:34:00 -0000 @@ -52,12 +52,20 @@ #include "_wctype_local.h" #include "_wctrans_local.h" +#ifdef _COMPAT_BSDCTYPE +#include "runetype_misc.h" +#endif + typedef struct { _RuneLocale rl; - unsigned char rlp_ctype_tab [_CTYPE_NUM_CHARS + 1]; + unsigned short rlp_ctype_tab [_CTYPE_NUM_CHARS + 1]; short rlp_tolower_tab[_CTYPE_NUM_CHARS + 1]; short rlp_toupper_tab[_CTYPE_NUM_CHARS + 1]; char rlp_codeset[33]; /* XXX */ + +#ifdef _COMPAT_BSDCTYPE + unsigned char rlp_compat_bsdctype[_CTYPE_NUM_CHARS + 1]; +#endif } _RuneLocalePriv; static __inline void @@ -88,19 +96,29 @@ rlp->rlp_ctype_tab [i + 1] = 0; rlp->rlp_tolower_tab[i + 1] = i; rlp->rlp_toupper_tab[i + 1] = i; + +#ifdef _COMPAT_BSDCTYPE + rlp->rlp_compat_bsdctype[i + 1] = 0; +#endif } #endif rlp->rlp_ctype_tab [0] = 0; rlp->rlp_tolower_tab[0] = EOF; rlp->rlp_toupper_tab[0] = EOF; - rlp->rl.rl_ctype_tab = (const unsigned char *)&rlp->rlp_ctype_tab[0]; + rlp->rl.rl_ctype_tab = (const unsigned short *)&rlp->rlp_ctype_tab[0]; rlp->rl.rl_tolower_tab = (const short *)&rlp->rlp_tolower_tab[0]; rlp->rl.rl_toupper_tab = (const short *)&rlp->rlp_toupper_tab[0]; rlp->rl.rl_codeset = (const char *)&rlp->rlp_codeset[0]; _rune_wctype_init(&rlp->rl); _rune_wctrans_init(&rlp->rl); + +#ifdef _COMPAT_BSDCTYPE + rlp->rlp_compat_bsdctype[0] = 0; + rlp->rl.rl_compat_bsdctype = (const unsigned char *) + &rlp->rlp_compat_bsdctype[0]; +#endif } static __inline void @@ -242,6 +260,7 @@ for (i = 0; i < _CTYPE_CACHE_SIZE; ++i) { wint_t wc; + _RuneType rc; ret = _citrus_ctype_btowc(rl->rl_citrus_ctype, i, &wc); if (ret) @@ -251,8 +270,14 @@ rlp->rlp_tolower_tab[i + 1] = i; rlp->rlp_toupper_tab[i + 1] = i; } else { - rlp->rlp_ctype_tab[i + 1] = (unsigned char) - _runetype_to_ctype(_runetype_priv(rl, wc)); + rc = _runetype_priv(rl, wc); + rlp->rlp_ctype_tab[i + 1] = (unsigned short) + ((rc & ~_RUNETYPE_SWM) >> 8); + +#ifdef _COMPAT_BSDCTYPE + rlp->rlp_compat_bsdctype[i + 1] + = _runetype_to_bsdctype(rc); +#endif #define CONVERT_MAP(name) \ do { \ Index: lib/libc/locale/runetable.c =================================================================== RCS file: /cvsroot/src/lib/libc/locale/runetable.c,v retrieving revision 1.27 diff -u -r1.27 runetable.c --- lib/libc/locale/runetable.c 19 Jun 2010 13:26:52 -0000 1.27 +++ lib/libc/locale/runetable.c 11 Sep 2012 00:34:00 -0000 @@ -343,9 +343,13 @@ { "upper", _RUNETYPE_U }, { "xdigit", _RUNETYPE_X }, }, - _C_ctype_, - _C_tolower_, - _C_toupper_ + _C_ctype_tab_, + _C_tolower_tab_, + _C_toupper_tab_, + +#ifdef _COMPAT_BSDCTYPE + _C_compat_bsdctype, +#endif }; const _RuneLocale *_CurrentRuneLocale = &_DefaultRuneLocale; Index: lib/libc/locale/runetype_file.h =================================================================== RCS file: /cvsroot/src/lib/libc/locale/runetype_file.h,v retrieving revision 1.3 diff -u -r1.3 runetype_file.h --- lib/libc/locale/runetype_file.h 20 Jun 2010 02:23:15 -0000 1.3 +++ lib/libc/locale/runetype_file.h 11 Sep 2012 00:34:00 -0000 @@ -53,24 +53,57 @@ #define _DEFAULT_INVALID_RUNE ((__nbrune_t)-3) +/* XXX FIXME */ +#if defined(__NetBSD__) && defined(_CTYPE_A) +#define _NB_CTYPE_A _CTYPE_A +#define _NB_CTYPE_C _CTYPE_C +#define _NB_CTYPE_D _CTYPE_D +#define _NB_CTYPE_G _CTYPE_G +#define _NB_CTYPE_L _CTYPE_L +#define _NB_CTYPE_P _CTYPE_P +#define _NB_CTYPE_S _CTYPE_S +#define _NB_CTYPE_U _CTYPE_U +#define _NB_CTYPE_X _CTYPE_X +#define _NB_CTYPE_B _CTYPE_B +#define _NB_CTYPE_R _CTYPE_R +#define _NB_CTYPE_I _CTYPE_I +#define _NB_CTYPE_T _CTYPE_T +#define _NB_CTYPE_Q _CTYPE_Q +#else +#define _NB_CTYPE_A 0x0001 +#define _NB_CTYPE_C 0x0002 +#define _NB_CTYPE_D 0x0004 +#define _NB_CTYPE_G 0x0008 +#define _NB_CTYPE_L 0x0010 +#define _NB_CTYPE_P 0x0020 +#define _NB_CTYPE_S 0x0040 +#define _NB_CTYPE_U 0x0080 +#define _NB_CTYPE_X 0x0100 +#define _NB_CTYPE_B 0x0200 +#define _NB_CTYPE_R 0x0400 +#define _NB_CTYPE_I 0x0800 +#define _NB_CTYPE_T 0x1000 +#define _NB_CTYPE_Q 0x2000 +#endif + /* * The lower 8 bits of runetype[] contain the digit value of the rune. */ typedef uint32_t _RuneType; -#define _RUNETYPE_A UINT32_C(0x00000100) /* Alpha */ -#define _RUNETYPE_C UINT32_C(0x00000200) /* Control */ -#define _RUNETYPE_D UINT32_C(0x00000400) /* Digit */ -#define _RUNETYPE_G UINT32_C(0x00000800) /* Graph */ -#define _RUNETYPE_L UINT32_C(0x00001000) /* Lower */ -#define _RUNETYPE_P UINT32_C(0x00002000) /* Punct */ -#define _RUNETYPE_S UINT32_C(0x00004000) /* Space */ -#define _RUNETYPE_U UINT32_C(0x00008000) /* Upper */ -#define _RUNETYPE_X UINT32_C(0x00010000) /* X digit */ -#define _RUNETYPE_B UINT32_C(0x00020000) /* Blank */ -#define _RUNETYPE_R UINT32_C(0x00040000) /* Print */ -#define _RUNETYPE_I UINT32_C(0x00080000) /* Ideogram */ -#define _RUNETYPE_T UINT32_C(0x00100000) /* Special */ -#define _RUNETYPE_Q UINT32_C(0x00200000) /* Phonogram */ +#define _RUNETYPE_A UINT32_C(_NB_CTYPE_A << 8) /* Alpha */ +#define _RUNETYPE_C UINT32_C(_NB_CTYPE_C << 8) /* Control */ +#define _RUNETYPE_D UINT32_C(_NB_CTYPE_D << 8) /* Digit */ +#define _RUNETYPE_G UINT32_C(_NB_CTYPE_G << 8) /* Graph */ +#define _RUNETYPE_L UINT32_C(_NB_CTYPE_L << 8) /* Lower */ +#define _RUNETYPE_P UINT32_C(_NB_CTYPE_P << 8) /* Punct */ +#define _RUNETYPE_S UINT32_C(_NB_CTYPE_S << 8) /* Space */ +#define _RUNETYPE_U UINT32_C(_NB_CTYPE_U << 8) /* Upper */ +#define _RUNETYPE_X UINT32_C(_NB_CTYPE_X << 8) /* X digit */ +#define _RUNETYPE_B UINT32_C(_NB_CTYPE_B << 8) /* Blank */ +#define _RUNETYPE_R UINT32_C(_NB_CTYPE_R << 8) /* Print */ +#define _RUNETYPE_I UINT32_C(_NB_CTYPE_I << 8) /* Ideogram */ +#define _RUNETYPE_T UINT32_C(_NB_CTYPE_T << 8) /* Special */ +#define _RUNETYPE_Q UINT32_C(_NB_CTYPE_Q << 8) /* Phonogram */ #define _RUNETYPE_SWM UINT32_C(0xc0000000)/* Mask to get screen width data */ #define _RUNETYPE_SWS 30 /* Bits to shift to get width */ #define _RUNETYPE_SW0 UINT32_C(0x20000000) /* 0 width character */ Index: lib/libc/locale/runetype_local.h =================================================================== RCS file: /cvsroot/src/lib/libc/locale/runetype_local.h,v retrieving revision 1.12 diff -u -r1.12 runetype_local.h --- lib/libc/locale/runetype_local.h 20 Jun 2010 02:23:15 -0000 1.12 +++ lib/libc/locale/runetype_local.h 11 Sep 2012 00:34:00 -0000 @@ -42,7 +42,8 @@ #include #include -#include "runetype_misc.h" +#include "ctype_local.h" +#include "runetype_file.h" #define _RUNE_ISCACHED(c) ((c)>=0 && (c)<_CTYPE_CACHE_SIZE) @@ -123,9 +124,13 @@ _WCTransEntry rl_wctrans[_WCTRANS_NINDEXES]; _WCTypeEntry rl_wctype[_WCTYPE_NINDEXES]; - const unsigned char *rl_ctype_tab; + const unsigned short *rl_ctype_tab; const short *rl_tolower_tab; const short *rl_toupper_tab; + +#ifdef _COMPAT_BSDCTYPE + const unsigned char *rl_compat_bsdctype; +#endif } _RuneLocale; /* Index: lib/libc/locale/runetype_misc.h =================================================================== RCS file: /cvsroot/src/lib/libc/locale/runetype_misc.h,v retrieving revision 1.3 diff -u -r1.3 runetype_misc.h --- lib/libc/locale/runetype_misc.h 18 Jan 2012 14:22:27 -0000 1.3 +++ lib/libc/locale/runetype_misc.h 11 Sep 2012 00:34:00 -0000 @@ -40,8 +40,9 @@ #include #include "runetype_file.h" +#ifdef _COMPAT_BSDCTYPE static __inline int -_runetype_to_ctype(_RuneType bits) +_runetype_to_bsdctype(_RuneType bits) { int ret; @@ -49,19 +50,19 @@ return 0; ret = 0; if (bits & _RUNETYPE_U) - ret |= _CTYPE_U; + ret |= _U; if (bits & _RUNETYPE_L) - ret |= _CTYPE_L; + ret |= _L; if (bits & _RUNETYPE_D) - ret |= _CTYPE_N; + ret |= _N; if (bits & _RUNETYPE_S) - ret |= _CTYPE_S; + ret |= _S; if (bits & _RUNETYPE_P) - ret |= _CTYPE_P; + ret |= _P; if (bits & _RUNETYPE_C) - ret |= _CTYPE_C; + ret |= _C; if (bits & _RUNETYPE_X) - ret |= _CTYPE_X; + ret |= _X; /* * TWEAK! _B has been used incorrectly (or with older * declaration) in ctype.h isprint() macro. @@ -71,12 +72,13 @@ */ #if 1 if ((bits & (_RUNETYPE_R | _RUNETYPE_G)) == _RUNETYPE_R) - ret |= _CTYPE_B; + ret |= _B; #else if (bits & _RUNETYPE_B) - ret |= _CTYPE_B; + ret |= _B; #endif return ret; } +#endif #endif /* !_RUNETYPE_MISC_H_ */ Index: lib/libc/locale/setlocale_local.h =================================================================== RCS file: /cvsroot/src/lib/libc/locale/setlocale_local.h,v retrieving revision 1.8 diff -u -r1.8 setlocale_local.h --- lib/libc/locale/setlocale_local.h 4 Mar 2012 21:14:57 -0000 1.8 +++ lib/libc/locale/setlocale_local.h 11 Sep 2012 00:34:00 -0000 @@ -29,6 +29,8 @@ #ifndef _SETLOCALE_LOCAL_H_ #define _SETLOCALE_LOCAL_H_ +#include "ctype_local.h" + #define _LOCALENAME_LEN_MAX 33 #define _C_LOCALE "C" @@ -40,12 +42,15 @@ typedef void *_locale_part_t; struct _locale_cache_t { - const unsigned char *ctype_tab; + const unsigned short *ctype_tab; const short *tolower_tab; const short *toupper_tab; size_t mb_cur_max; struct lconv *ldata; const char **items; +#ifdef _COMPAT_BSDCTYPE + const unsigned char *compat_bsdctype; +#endif }; struct _locale_impl_t { Index: sys/sys/ctype_bits.h =================================================================== RCS file: /cvsroot/src/sys/sys/ctype_bits.h,v retrieving revision 1.2 diff -u -r1.2 ctype_bits.h --- sys/sys/ctype_bits.h 14 Dec 2010 02:28:57 -0000 1.2 +++ sys/sys/ctype_bits.h 11 Sep 2012 00:34:22 -0000 @@ -40,16 +40,22 @@ #ifndef _SYS_CTYPE_BITS_H_ #define _SYS_CTYPE_BITS_H_ -#define _CTYPE_U 0x01 -#define _CTYPE_L 0x02 -#define _CTYPE_N 0x04 -#define _CTYPE_S 0x08 -#define _CTYPE_P 0x10 -#define _CTYPE_C 0x20 -#define _CTYPE_X 0x40 -#define _CTYPE_B 0x80 +#define _CTYPE_A 0x0001 /* Alpha */ +#define _CTYPE_C 0x0002 /* Control */ +#define _CTYPE_D 0x0004 /* Digit */ +#define _CTYPE_G 0x0008 /* Graph */ +#define _CTYPE_L 0x0010 /* Lower */ +#define _CTYPE_P 0x0020 /* Punct */ +#define _CTYPE_S 0x0040 /* Space */ +#define _CTYPE_U 0x0080 /* Upper */ +#define _CTYPE_X 0x0100 /* X digit */ +#define _CTYPE_B 0x0200 /* Blank */ +#define _CTYPE_R 0x0400 /* Print */ +#define _CTYPE_I 0x0800 /* Ideogram */ +#define _CTYPE_T 0x1000 /* Special */ +#define _CTYPE_Q 0x2000 /* Phonogram */ -extern const unsigned char *_ctype_; +extern const unsigned short *_ctype_tab_; extern const short *_tolower_tab_; extern const short *_toupper_tab_; Index: sys/sys/ctype_inline.h =================================================================== RCS file: /cvsroot/src/sys/sys/ctype_inline.h,v retrieving revision 1.2 diff -u -r1.2 ctype_inline.h --- sys/sys/ctype_inline.h 14 Dec 2010 02:28:57 -0000 1.2 +++ sys/sys/ctype_inline.h 11 Sep 2012 00:34:22 -0000 @@ -45,17 +45,17 @@ #include -#define isdigit(c) ((int)((_ctype_ + 1)[(c)] & _CTYPE_N)) -#define islower(c) ((int)((_ctype_ + 1)[(c)] & _CTYPE_L)) -#define isspace(c) ((int)((_ctype_ + 1)[(c)] & _CTYPE_S)) -#define ispunct(c) ((int)((_ctype_ + 1)[(c)] & _CTYPE_P)) -#define isupper(c) ((int)((_ctype_ + 1)[(c)] & _CTYPE_U)) -#define isalpha(c) ((int)((_ctype_ + 1)[(c)] & (_CTYPE_U|_CTYPE_L))) -#define isxdigit(c) ((int)((_ctype_ + 1)[(c)] & (_CTYPE_N|_CTYPE_X))) -#define isalnum(c) ((int)((_ctype_ + 1)[(c)] & (_CTYPE_U|_CTYPE_L|_CTYPE_N))) -#define isprint(c) ((int)((_ctype_ + 1)[(c)] & (_CTYPE_P|_CTYPE_U|_CTYPE_L|_CTYPE_N|_CTYPE_B))) -#define isgraph(c) ((int)((_ctype_ + 1)[(c)] & (_CTYPE_P|_CTYPE_U|_CTYPE_L|_CTYPE_N))) -#define iscntrl(c) ((int)((_ctype_ + 1)[(c)] & _CTYPE_C)) +#define isalnum(c) ((int)((_ctype_tab_ + 1)[(c)] & (_CTYPE_A|_CTYPE_D))) +#define isalpha(c) ((int)((_ctype_tab_ + 1)[(c)] & _CTYPE_A)) +#define iscntrl(c) ((int)((_ctype_tab_ + 1)[(c)] & _CTYPE_C)) +#define isdigit(c) ((int)((_ctype_tab_ + 1)[(c)] & _CTYPE_D)) +#define isgraph(c) ((int)((_ctype_tab_ + 1)[(c)] & _CTYPE_G)) +#define islower(c) ((int)((_ctype_tab_ + 1)[(c)] & _CTYPE_L)) +#define isprint(c) ((int)((_ctype_tab_ + 1)[(c)] & _CTYPE_R)) +#define ispunct(c) ((int)((_ctype_tab_ + 1)[(c)] & _CTYPE_P)) +#define isspace(c) ((int)((_ctype_tab_ + 1)[(c)] & _CTYPE_S)) +#define isupper(c) ((int)((_ctype_tab_ + 1)[(c)] & _CTYPE_U)) +#define isxdigit(c) ((int)((_ctype_tab_ + 1)[(c)] & _CTYPE_X)) #define tolower(c) ((int)((_tolower_tab_ + 1)[(c)])) #define toupper(c) ((int)((_toupper_tab_ + 1)[(c)])) @@ -68,15 +68,7 @@ #if defined(_ISO_C99_SOURCE) || (_POSIX_C_SOURCE - 0) > 200112L || \ (_XOPEN_SOURCE - 0) > 600 || defined(_NETBSD_SOURCE) - -/* - * isblank() is implemented as C function, due to insufficient bitwidth in - * _ctype_. Note that _B does not mean isblank - it means isprint && !isgraph. - */ -#if 0 -#define isblank(c) ((int)((_ctype_ + 1)[(c)] & _B)) -#endif - +#define isblank(c) ((int)((_ctype_tab_ + 1)[(c)] & _CTYPE_B)) #endif #endif /* !_CTYPE_INLINE_H_ */