History log of /freebsd-10.0-release/include/_ctype.h
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 259065 07-Dec-2013 gjb

- Copy stable/10 (r259064) to releng/10.0 as part of the
10.0-RELEASE cycle.
- Update __FreeBSD_version [1]
- Set branch name to -RC1

[1] 10.0-CURRENT __FreeBSD_version value ended at '55', so
start releng/10.0 at '100' so the branch is started with
a value ending in zero.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation

# 256281 10-Oct-2013 gjb

Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


# 203964 16-Feb-2010 imp

Remove the Berkeley clause 3's.
Add a few $FreeBSD$


# 173244 01-Nov-2007 ache

Back out not human readable optimization in prev. commit which shown
to generate 3bytes longer opcode.


# 173084 27-Oct-2007 ache

Micro-optimization of prev. commit, change
(_c < 0 || _c >= 128) to (_c & ~0x7F)


# 173053 27-Oct-2007 ache

Small improvement for __isctype(): don't use __mb_sb_limit but
hardcode 128 here instead, since default locale never define anything
above 127 char.


# 172619 13-Oct-2007 ache

The problem is: currently our single byte ctype(3) functions are broken
for wide characters locales in the argument range >= 0x80 - they may
return false positives.

Example 1: for UTF-8 locale we currently have:
iswspace(0xA0)==1 and isspace(0xA0)==1
(because iswspace() and isspace() are the same code)
but must have
iswspace(0xA0)==1 and isspace(0xA0)==0
(because there is no such character and all others in the range
0x80..0xff for the UTF-8 locale, it keeps ASCII only in the single byte
range because our internal wchar_t representation for UTF-8 is UCS-4).

Example 2: for all wide character locales isalpha(arg) when arg > 0xFF may
return false positives (must be 0).
(because iswalpha() and isalpha() are the same code)

This change address this issue separating single byte and wide ctype
and also fix iswascii() (currently iswascii() is broken for
arguments > 0xFF).
This change is 100% binary compatible with old binaries.

Reviewied by: i18n@


# 134101 21-Aug-2004 tjr

Let GCC know that ___runetype(), ___tolower() and ___toupper() are pure
functions, allowing it to generate better code for the <ctype.h> and
<wctype.h> functions. For example, it can now keep _CurrentRuneLocale
in a register across calls to these functions, and can delete calls to
___runetype() if the result is already known or not used.


# 133564 12-Aug-2004 tjr

Implement wcwidth() as an inline function.


# 133559 12-Aug-2004 tjr

Move some internal macros and inlines from ctype.h to a new file, _ctype.h,
which has been repo-copied from ctype.h. This will allow us to remove
namespace pollution from <wctype.h> and to make wcwidth() an inline function
without introducing more pollution.


# 130962 23-Jun-2004 tjr

Now that <runetype.h> no longer brings in namespace pollution,
bring back the inline functions for the !__BSD_VISIBLE case.


# 130961 23-Jun-2004 tjr

Prefix the names of members of _RuneLocale and its sub-structures
with ``__'' to avoid polluting the namespace. This doesn't change the
documented rune interface at all, but breaks applications that accessed
_RuneLocale directly.


# 128523 21-Apr-2004 tjr

Make isblank() visible in the C99 namespace.

PR: 63371
Submitted by: Stefan Farfeleder


# 103113 09-Sep-2002 mike

Solve the <runetype.h> pollution problem by disabling inline
optimizations when a standard has been requested, except when the
inline optimizations are also specifically requested.


# 102998 06-Sep-2002 mike

o Fix namespace scope issues in <ctype.h> by using the relatively new
visibility primitives.
o Implement _tolower() and _toupper() POSIX.1-2001 (XSI) macros in
<ctype.h>.
o Reduce pollution in <runetype.h> by removing typedefs and using
implementation namespaced types.
o Add a typedef in <rune.h> to compensate for <runetype.h> losing its
typedefs.

Reviewed by: bde


# 102227 21-Aug-2002 mike

o Merge <machine/ansi.h> and <machine/types.h> into a new header
called <machine/_types.h>.
o <machine/ansi.h> will continue to live so it can define MD clock
macros, which are only MD because of gratuitous differences between
architectures.
o Change all headers to make use of this. This mainly involves
changing:
#ifdef _BSD_FOO_T_
typedef _BSD_FOO_T_ foo_t;
#undef _BSD_FOO_T_
#endif
to:
#ifndef _FOO_T_DECLARED
typedef __foo_t foo_t;
#define _FOO_T_DECLARED
#endif

Concept by: bde
Reviewed by: jake, obrien


# 102094 19-Aug-2002 ache

Move internal defines from here to libc/locale/wcwidth.c


# 102093 19-Aug-2002 ache

Properly define SWIDTH1, add autowidth (was SWIDTH1)


# 101984 16-Aug-2002 keichii

Add swidth definition for wchar stuff

Submitted by: clkao@clkao.org
Reviewed by: keichii
Obtained from: NetBSD
MFC after: 1 month


# 93032 23-Mar-2002 imp

Breath deep and take __P out of the system include files.

# This appears to not break X11, but I'm having problems compiling the
# glide part of the server with or without this patch, so I can't tell
# for sure.


# 90231 05-Feb-2002 bbraun

Makes __istype() an inline (and a non inlined) function to avoid C++
compile issues. std::isspace(' ') was expanding to std::(!!_maskrune...)
which would cause a C++ compile error. Making __istype() an inline
causes the expansion to be std::__istype() instead, which is valid.

Reviewed by: jkh


# 57035 08-Feb-2000 obrien

There is a problem in that one cannot use ctype.h at the same time as parts
of the C++ stdlib. Our ctype.h uses symbols of the form _<X> to denote the
various character classes. Our ctype.h also extends the usual ctype.h
offering by adding the "_T" (special) class. Problem is parts of the STL
also use the symbol "_T" as its parameterized type. These two uses are
incompatible.

Thus change the form of the symbols used in ctype to something that fixes
the current problem and is less likely to cause conflicts in the future.

Requested by: Tomoaki NISHIYAMA <tomoaki@biol.s.u-tokyo.ac.jp>
Ok'ed by: JKH


# 54746 17-Dec-1999 phantom

Back up following macros by functions: ishexnumber, isideogram, isnumber,
isphonogram, isrune, isspecial. Fix ordering.

Reviewed by: bde


# 29884 27-Sep-1997 ache

Oops, fix typo in istype definition


# 29883 27-Sep-1997 ache

1) Bring '!!' back since we wan't overflow even a char
2) Revive __maskrune, just return mask now
3) Express __istype via !!__maskrune
4) Use __maskrune in digittoint


# 29855 25-Sep-1997 ache

Oops, wrong version of digittoint fix was commited, step back to v1.8
instead just remove '!!' to make digittoint() work and re-arrange
things a little


# 29854 25-Sep-1997 ache

Fix digittoint broken long ago
Redesign to allow digittoint work for runes too
__maskrune removed, __istype become a macro, __runeflags added


# 29843 25-Sep-1997 peter

Bandaid for the build-breaking reference to _BSD_RUNE_T_. I'm not sure
that this is right, but the old reference defaintely was not.


# 29818 24-Sep-1997 julian

Submitted by: Sin'ichiro MIYATANI / Phase One, Inc <siu@phaseone.co.jp>
Basic support for the Shift JIS encoding of japanese.
(and one tiny typo fixed in a comment)


# 15483 30-Apr-1996 bde

Fixed longstanding namespace convolution involving rune_t vs wchar_t.
If _ANSI_SOURCE or _POSIX_SOURCE is defined, then <ctype.h> had to
be included before <stddef.h> or <stdlib.h> to get rune_t declared.
Now rune_t is declared perfectly bogusly in all cases when <ctype.h>
is included.

This change breaks similar (but more convoluted) convolutions in the
stddef.h in gcc distributions. Ports of gcc should avoid using the
gcc headers.


# 14813 25-Mar-1996 ache

Slightly simplify inlined functions


# 12028 03-Nov-1995 ache

Fix isspecial/isphonogram, they was swapped
Remove EOF hack, now it is recognized per ANSI/POSIX
Add upper bounds check
Handle all negative chars inside locale functions


# 7655 07-Apr-1995 bde

Reviewed by: ache and wollman (long ago)

Fix numerous ANSI conformance bugs and other nits.

ctype.h:
o There were no prototypes behind the macros (conformance bug).
o isascii() didn't have enough parentheses (plain bug).
o tolower() and toupper were always static inline (conformance
bug? You could undef them and take their address, but this
gave different addresses in different modules. You couldn't
undef them and declare them (correctly) again). <stdio.h>'s
treatment of putc() shows one way to handle this problem,
but it only works because the putc() macro is allowed to
reevaluate its args. I used a hack controlled by
_EXTERNALIZE_CTYPE_INLINES_ to get <ctype.h> to generate the
code (the previous hack involving _ANSI_LIBRARY_ goes away).
This has the advantage that the core of the functions is only
written down once and the disadvantage that another layer of
functions is required. The extra layer goes away if inline
functions are used, leaving only the problem of understanding
why there are functions named toupper(), __toupper and
___toupper() as well as a macro named toupper.
o Nothing seems to define _USE_CTYPE_LIBRARY_. Eliminate it
o Let the user set _USE_CTYPE_INLINE_ and _DONT_USE_CTYPE_INLINE_
for full control over inlining.
o The args for the inline functions didn't have enough
underscores (conformance bug).
o The formatting and ordering was inconsistent (style bug).
o TODO: fix conformance bugs brought by including <runetype.h>.


# 7654 07-Apr-1995 ache

Move inline args out of user namespace.
Obtained from: 1.x


# 3456 09-Oct-1994 ache

Remove EOF handling after Bruce explanation. This step returns
to 4.4 way to not allow EOF in ctype and now all signed chars
(including '\377' which becomes EOF) converted to (unsigned char) properly.


# 3433 08-Oct-1994 ache

Handle EOF case in all macros by ANSI standard.
Cast all ints < 0 to (unsigned char) to fix common problem
with sign extention on signed char.


# 1539 24-May-1994 rgrimes

BSD 4.4 Lite Include Sources