diff options
author | ache <ache@FreeBSD.org> | 1997-09-27 04:22:47 +0000 |
---|---|---|
committer | ache <ache@FreeBSD.org> | 1997-09-27 04:22:47 +0000 |
commit | a4d6990ae6cf1cf4bb4017ebfe40a090d4bbf1d0 (patch) | |
tree | d7169c66d20e7c319e818d003bf5938bf7df2d33 /include | |
parent | 8161901df7a9809b97e6df1a69a5015064579bfc (diff) | |
download | FreeBSD-src-a4d6990ae6cf1cf4bb4017ebfe40a090d4bbf1d0.zip FreeBSD-src-a4d6990ae6cf1cf4bb4017ebfe40a090d4bbf1d0.tar.gz |
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
Diffstat (limited to 'include')
-rw-r--r-- | include/_ctype.h | 36 | ||||
-rw-r--r-- | include/ctype.h | 36 |
2 files changed, 38 insertions, 34 deletions
diff --git a/include/_ctype.h b/include/_ctype.h index 95015f8..7309568 100644 --- a/include/_ctype.h +++ b/include/_ctype.h @@ -88,17 +88,19 @@ int digittoint __P((int)); #endif __END_DECLS -#define isalnum(c) __istype((c), (_A|_D)) -#define isalpha(c) __istype((c), _A) -#define iscntrl(c) __istype((c), _C) -#define isdigit(c) __isctype((c), _D) /* ANSI -- locale independent */ -#define isgraph(c) __istype((c), _G) -#define islower(c) __istype((c), _L) -#define isprint(c) __istype((c), _R) -#define ispunct(c) __istype((c), _P) -#define isspace(c) __istype((c), _S) -#define isupper(c) __istype((c), _U) -#define isxdigit(c) __isctype((c), _X) /* ANSI -- locale independent */ +#define __istype(c,f) (!!__maskrune((c),(f)) + +#define isalnum(c) __istype((c), _A|_D) +#define isalpha(c) __istype((c), _A) +#define iscntrl(c) __istype((c), _C) +#define isdigit(c) __isctype((c), _D) /* ANSI -- locale independent */ +#define isgraph(c) __istype((c), _G) +#define islower(c) __istype((c), _L) +#define isprint(c) __istype((c), _R) +#define ispunct(c) __istype((c), _P) +#define isspace(c) __istype((c), _S) +#define isupper(c) __istype((c), _U) +#define isxdigit(c) __isctype((c), _X) /* ANSI -- locale independent */ #define tolower(c) __tolower(c) #define toupper(c) __toupper(c) @@ -106,15 +108,15 @@ __END_DECLS #define isascii(c) (((c) & ~0x7F) == 0) #define isblank(c) __istype((c), _B) #define toascii(c) ((c) & 0x7F) -#define digittoint(c) __istype((c), 0xFF) +#define digittoint(c) __maskrune((c), 0xFF) /* XXX the following macros are not backed up by functions. */ #define ishexnumber(c) __istype((c), _X) #define isideogram(c) __istype((c), _I) #define isnumber(c) __istype((c), _D) -#define isphonogram(c) __istype((c), _Q) +#define isphonogram(c) __istype((c), _Q) #define isrune(c) __istype((c), 0xFFFFFF00L) -#define isspecial(c) __istype((c), _T) +#define isspecial(c) __istype((c), _T) #endif /* See comments in <machine/ansi.h> about _BSD_CT_RUNE_T_. */ @@ -140,7 +142,7 @@ __END_DECLS #if !defined(_DONT_USE_CTYPE_INLINE_) && \ (defined(_USE_CTYPE_INLINE_) || defined(__GNUC__) || defined(__cplusplus)) static __inline int -__istype(_BSD_CT_RUNE_T_ _c, unsigned long _f) +__maskrune(_BSD_CT_RUNE_T_ _c, unsigned long _f) { return ((_c < 0 || _c >= _CACHED_RUNES) ? ___runetype(_c) : _CurrentRuneLocale->runetype[_c]) & _f; @@ -150,7 +152,7 @@ static __inline int __isctype(_BSD_CT_RUNE_T_ _c, unsigned long _f) { return (_c < 0 || _c >= _CACHED_RUNES) ? 0 : - (_DefaultRuneLocale.runetype[_c] & _f); + !!(_DefaultRuneLocale.runetype[_c] & _f); } static __inline _BSD_CT_RUNE_T_ @@ -170,7 +172,7 @@ __tolower(_BSD_CT_RUNE_T_ _c) #else /* not using inlines */ __BEGIN_DECLS -int __istype __P((_BSD_CT_RUNE_T_, unsigned long)); +int __maskrune __P((_BSD_CT_RUNE_T_, unsigned long)); int __isctype __P((_BSD_CT_RUNE_T_, unsigned long)); _BSD_CT_RUNE_T_ __toupper __P((_BSD_CT_RUNE_T_)); _BSD_CT_RUNE_T_ __tolower __P((_BSD_CT_RUNE_T_)); diff --git a/include/ctype.h b/include/ctype.h index 95015f8..7309568 100644 --- a/include/ctype.h +++ b/include/ctype.h @@ -88,17 +88,19 @@ int digittoint __P((int)); #endif __END_DECLS -#define isalnum(c) __istype((c), (_A|_D)) -#define isalpha(c) __istype((c), _A) -#define iscntrl(c) __istype((c), _C) -#define isdigit(c) __isctype((c), _D) /* ANSI -- locale independent */ -#define isgraph(c) __istype((c), _G) -#define islower(c) __istype((c), _L) -#define isprint(c) __istype((c), _R) -#define ispunct(c) __istype((c), _P) -#define isspace(c) __istype((c), _S) -#define isupper(c) __istype((c), _U) -#define isxdigit(c) __isctype((c), _X) /* ANSI -- locale independent */ +#define __istype(c,f) (!!__maskrune((c),(f)) + +#define isalnum(c) __istype((c), _A|_D) +#define isalpha(c) __istype((c), _A) +#define iscntrl(c) __istype((c), _C) +#define isdigit(c) __isctype((c), _D) /* ANSI -- locale independent */ +#define isgraph(c) __istype((c), _G) +#define islower(c) __istype((c), _L) +#define isprint(c) __istype((c), _R) +#define ispunct(c) __istype((c), _P) +#define isspace(c) __istype((c), _S) +#define isupper(c) __istype((c), _U) +#define isxdigit(c) __isctype((c), _X) /* ANSI -- locale independent */ #define tolower(c) __tolower(c) #define toupper(c) __toupper(c) @@ -106,15 +108,15 @@ __END_DECLS #define isascii(c) (((c) & ~0x7F) == 0) #define isblank(c) __istype((c), _B) #define toascii(c) ((c) & 0x7F) -#define digittoint(c) __istype((c), 0xFF) +#define digittoint(c) __maskrune((c), 0xFF) /* XXX the following macros are not backed up by functions. */ #define ishexnumber(c) __istype((c), _X) #define isideogram(c) __istype((c), _I) #define isnumber(c) __istype((c), _D) -#define isphonogram(c) __istype((c), _Q) +#define isphonogram(c) __istype((c), _Q) #define isrune(c) __istype((c), 0xFFFFFF00L) -#define isspecial(c) __istype((c), _T) +#define isspecial(c) __istype((c), _T) #endif /* See comments in <machine/ansi.h> about _BSD_CT_RUNE_T_. */ @@ -140,7 +142,7 @@ __END_DECLS #if !defined(_DONT_USE_CTYPE_INLINE_) && \ (defined(_USE_CTYPE_INLINE_) || defined(__GNUC__) || defined(__cplusplus)) static __inline int -__istype(_BSD_CT_RUNE_T_ _c, unsigned long _f) +__maskrune(_BSD_CT_RUNE_T_ _c, unsigned long _f) { return ((_c < 0 || _c >= _CACHED_RUNES) ? ___runetype(_c) : _CurrentRuneLocale->runetype[_c]) & _f; @@ -150,7 +152,7 @@ static __inline int __isctype(_BSD_CT_RUNE_T_ _c, unsigned long _f) { return (_c < 0 || _c >= _CACHED_RUNES) ? 0 : - (_DefaultRuneLocale.runetype[_c] & _f); + !!(_DefaultRuneLocale.runetype[_c] & _f); } static __inline _BSD_CT_RUNE_T_ @@ -170,7 +172,7 @@ __tolower(_BSD_CT_RUNE_T_ _c) #else /* not using inlines */ __BEGIN_DECLS -int __istype __P((_BSD_CT_RUNE_T_, unsigned long)); +int __maskrune __P((_BSD_CT_RUNE_T_, unsigned long)); int __isctype __P((_BSD_CT_RUNE_T_, unsigned long)); _BSD_CT_RUNE_T_ __toupper __P((_BSD_CT_RUNE_T_)); _BSD_CT_RUNE_T_ __tolower __P((_BSD_CT_RUNE_T_)); |