diff --git a/include/_ctype.h b/include/_ctype.h index a37fc1cb119..0a34886f555 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]); } diff --git a/include/ctype.h b/include/ctype.h index a37fc1cb119..0a34886f555 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]); }