From dcc191d798389eff4df036b2c92800febf349a22 Mon Sep 17 00:00:00 2001 From: ache Date: Sat, 8 Oct 1994 17:36:44 +0000 Subject: 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. --- include/ctype.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'include/ctype.h') diff --git a/include/ctype.h b/include/ctype.h index a37fc1c..0a34886 100644 --- a/include/ctype.h +++ b/include/ctype.h @@ -103,9 +103,18 @@ __END_DECLS #endif #if defined(_USE_CTYPE_INLINE_) + +#ifndef EOF +#define EOF (-1) +#endif + static __inline int __istype(_BSD_RUNE_T_ c, unsigned long f) { + if (c == EOF) + return 0; + if (c < 0) + c = (unsigned char) c; return((((c & _CRMASK) ? ___runetype(c) : _CurrentRuneLocale->runetype[c]) & f) ? 1 : 0); } @@ -113,6 +122,10 @@ __istype(_BSD_RUNE_T_ c, unsigned long f) static __inline int __isctype(_BSD_RUNE_T_ c, unsigned long f) { + if (c == EOF) + return 0; + if (c < 0) + c = (unsigned char) c; return((((c & _CRMASK) ? 0 : _DefaultRuneLocale.runetype[c]) & f) ? 1 : 0); } @@ -122,6 +135,10 @@ __isctype(_BSD_RUNE_T_ c, unsigned long f) static __inline _BSD_RUNE_T_ toupper(_BSD_RUNE_T_ c) { + if (c == EOF) + return EOF; + if (c < 0) + c = (unsigned char) c; return((c & _CRMASK) ? ___toupper(c) : _CurrentRuneLocale->mapupper[c]); } @@ -129,6 +146,10 @@ toupper(_BSD_RUNE_T_ c) static __inline _BSD_RUNE_T_ tolower(_BSD_RUNE_T_ c) { + if (c == EOF) + return EOF; + if (c < 0) + c = (unsigned char) c; return((c & _CRMASK) ? ___tolower(c) : _CurrentRuneLocale->maplower[c]); } -- cgit v1.1