From 07abfad1c2c99f6d9dcf0b273d3c5116adb9a05e Mon Sep 17 00:00:00 2001 From: hniksic Date: Thu, 26 Apr 2001 22:03:08 -0700 Subject: [PATCH] [svn] Punish the *use* of ctype macros, rather than their mere presence. Published in . --- src/ChangeLog | 7 +++++++ src/safe-ctype.h | 36 ++++++++++++++++++++++++++++++++---- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index dba698e6..752155a0 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2001-04-27 Hrvoje Niksic + + * safe-ctype.h: Instead of throwing #error when isalpha is + defined, redefine it to something that will throw a compile-time + error if actually *used*. Do the same for the rest of the + standard C macros. + 2001-04-26 Hrvoje Niksic * url.c (getproxy): Ignore empty proxy vars. diff --git a/src/safe-ctype.h b/src/safe-ctype.h index d5fc6490..72413f78 100644 --- a/src/safe-ctype.h +++ b/src/safe-ctype.h @@ -35,9 +35,38 @@ Boston, MA 02111-1307, USA. */ #ifndef SAFE_CTYPE_H #define SAFE_CTYPE_H -#ifdef isalpha - #error "safe-ctype.h and ctype.h may not be used simultaneously" -#else +/* Catch erroneous use of ctype macros. Files that really know what + they're doing can disable this check by defining the + I_REALLY_WANT_CTYPE_MACROS preprocessor constant. */ + +#ifndef I_REALLY_WANT_CTYPE_MACROS + +#undef isalpha +#define isalpha *** Please use ISALPHA *** +#undef isalnum +#define isalnum *** Please use ISALNUM *** +#undef isblank +#define isblank *** Please use ISBLANK *** +#undef iscntrl +#define iscntrl *** Please use ISCNTRL *** +#undef isdigit +#define isdigit *** Please use ISDIGIT *** +#undef isgraph +#define isgraph *** Please use ISGRAPH *** +#undef islower +#define islower *** Please use ISLOWER *** +#undef isprint +#define isprint *** Please use ISPRINT *** +#undef ispunct +#define ispunct *** Please use ISPUNCT *** +#undef isspace +#define isspace *** Please use ISSPACE *** +#undef isupper +#define isupper *** Please use ISUPPER *** +#undef isxdigit +#define isxdigit *** Please use ISXDIGIT *** + +#endif /* I_REALLY_WANT_CTYPE_MACROS */ /* Categories. */ @@ -96,5 +125,4 @@ extern const unsigned char _sch_tolower[256]; #define TOUPPER(c) _sch_toupper[(c) & 0xff] #define TOLOWER(c) _sch_tolower[(c) & 0xff] -#endif /* no ctype.h */ #endif /* SAFE_CTYPE_H */