From b4f6688462ba4f7fb4766f11ed5b70c70ea0623a Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Thu, 30 Oct 2014 13:19:34 -0700 Subject: [PATCH] Clean up internal ctype.h header. --- ChangeLog | 6 ++++++ include/ctype.h | 32 ++++++++++++++++---------------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 44920af672..ef67160e1b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2014-10-30 Roland McGrath + + * include/ctype.h: Include first thing rather than + after defining inlines. Instead, just use parens to defeat macro + expansion of __isctype in its declaration. + 2014-10-30 Joseph Myers * include/sys/uio.h (__libc_readv): Remove declaration. diff --git a/include/ctype.h b/include/ctype.h index 6a18039e3f..2ef2bd24e8 100644 --- a/include/ctype.h +++ b/include/ctype.h @@ -1,11 +1,15 @@ #ifndef _CTYPE_H +#include + #ifndef _ISOMAC /* Initialize ctype locale data. */ extern void __ctype_init (void); libc_hidden_proto (__ctype_init) -extern int __isctype (int __c, int __mask); +/* ctype/ctype.h defined this as a macro and we don't want to #undef it. + So defeat macro expansion with parens for this declaration. */ +extern int (__isctype) (int __c, int __mask); # ifndef NOT_IN_libc @@ -46,22 +50,18 @@ __ctype_tolower_loc (void) return __libc_tsd_address (const int32_t *, CTYPE_TOLOWER); } -# endif /* Not NOT_IN_libc. */ -#endif - -#include - -#ifndef _ISOMAC -# if !defined __NO_CTYPE && !defined NOT_IN_libc +# ifndef __NO_CTYPE /* The spec says that isdigit must only match the decimal digits. We can check this without a memory access. */ -# undef isdigit -# define isdigit(c) ({ int __c = (c); __c >= '0' && __c <= '9'; }) -# undef isdigit_l -# define isdigit_l(c, l) ({ int __c = (c); __c >= '0' && __c <= '9'; }) -# undef __isdigit_l -# define __isdigit_l(c, l) ({ int __c = (c); __c >= '0' && __c <= '9'; }) -# endif -#endif +# undef isdigit +# define isdigit(c) ({ int __c = (c); __c >= '0' && __c <= '9'; }) +# undef isdigit_l +# define isdigit_l(c, l) ({ int __c = (c); __c >= '0' && __c <= '9'; }) +# undef __isdigit_l +# define __isdigit_l(c, l) ({ int __c = (c); __c >= '0' && __c <= '9'; }) +# endif /* Not __NO_CTYPE. */ + +# endif /* Not NOT_IN_libc. */ +#endif /* Not _ISOMAC. */ #endif /* ctype.h */ -- 2.11.4.GIT