From ea5d548fb41efb918c2f128be43b01e744f8d113 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Wed, 11 Oct 2006 12:39:18 +0000 Subject: [PATCH] Make it possible to #define c_isascii etc. to aliases. --- ChangeLog | 9 +++++++++ lib/c-ctype.c | 21 ++++----------------- lib/c-ctype.h | 22 ++++++++++++++++++++-- 3 files changed, 33 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index a266f17ba8..80098dfbf2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-10-10 Bruno Haible + + Make it possible to #define c_isascii to an alias. + * lib/c-ctype.h: Don't define the macros if NO_C_CTYPE_MACROS is + defined. Undefine the macros before defining them, to avoid gcc + warnings. + * lib/c-ctype.c: Include config.h. Don't undefine the macros; instead, + define NO_C_CTYPE_MACROS early. + 2006-10-10 Bruno Haible Make it possible to #define set_program_name to an alias. diff --git a/lib/c-ctype.c b/lib/c-ctype.c index b9e85d61e0..36569b818e 100644 --- a/lib/c-ctype.c +++ b/lib/c-ctype.c @@ -1,6 +1,6 @@ /* Character handling in C locale. - Copyright 2000-2003 Free Software Foundation, Inc. + Copyright 2000-2003, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,25 +16,12 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +#include + /* Specification. */ +#define NO_C_CTYPE_MACROS #include "c-ctype.h" -#undef c_isalnum -#undef c_isalpha -#undef c_isascii -#undef c_isblank -#undef c_iscntrl -#undef c_isdigit -#undef c_islower -#undef c_isgraph -#undef c_isprint -#undef c_ispunct -#undef c_isspace -#undef c_isupper -#undef c_isxdigit -#undef c_tolower -#undef c_toupper - /* The function isascii is not locale dependent. Its use in EBCDIC is questionable. */ bool diff --git a/lib/c-ctype.h b/lib/c-ctype.h index 75719a0a9b..395c7a1361 100644 --- a/lib/c-ctype.h +++ b/lib/c-ctype.h @@ -5,7 +5,7 @@ functions' behaviour depends on the current locale set via setlocale. - Copyright (C) 2000-2003 Free Software Foundation, Inc. + Copyright (C) 2000-2003, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -117,10 +117,11 @@ extern int c_tolower (int c); extern int c_toupper (int c); -#if defined __GNUC__ && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ +#if defined __GNUC__ && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ && !defined NO_C_CTYPE_MACROS /* ASCII optimizations. */ +#undef c_isascii #define c_isascii(c) \ ({ int __c = (c); \ (__c >= 0x00 && __c <= 0x7f); \ @@ -129,12 +130,14 @@ extern int c_toupper (int c); #if C_CTYPE_CONSECUTIVE_DIGITS \ && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE #if C_CTYPE_ASCII +#undef c_isalnum #define c_isalnum(c) \ ({ int __c = (c); \ ((__c >= '0' && __c <= '9') \ || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z')); \ }) #else +#undef c_isalnum #define c_isalnum(c) \ ({ int __c = (c); \ ((__c >= '0' && __c <= '9') \ @@ -146,11 +149,13 @@ extern int c_toupper (int c); #if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE #if C_CTYPE_ASCII +#undef c_isalpha #define c_isalpha(c) \ ({ int __c = (c); \ ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z'); \ }) #else +#undef c_isalpha #define c_isalpha(c) \ ({ int __c = (c); \ ((__c >= 'A' && __c <= 'Z') || (__c >= 'a' && __c <= 'z')); \ @@ -158,12 +163,14 @@ extern int c_toupper (int c); #endif #endif +#undef c_isblank #define c_isblank(c) \ ({ int __c = (c); \ (__c == ' ' || __c == '\t'); \ }) #if C_CTYPE_ASCII +#undef c_iscntrl #define c_iscntrl(c) \ ({ int __c = (c); \ ((__c & ~0x1f) == 0 || __c == 0x7f); \ @@ -171,6 +178,7 @@ extern int c_toupper (int c); #endif #if C_CTYPE_CONSECUTIVE_DIGITS +#undef c_isdigit #define c_isdigit(c) \ ({ int __c = (c); \ (__c >= '0' && __c <= '9'); \ @@ -178,6 +186,7 @@ extern int c_toupper (int c); #endif #if C_CTYPE_CONSECUTIVE_LOWERCASE +#undef c_islower #define c_islower(c) \ ({ int __c = (c); \ (__c >= 'a' && __c <= 'z'); \ @@ -185,6 +194,7 @@ extern int c_toupper (int c); #endif #if C_CTYPE_ASCII +#undef c_isgraph #define c_isgraph(c) \ ({ int __c = (c); \ (__c >= '!' && __c <= '~'); \ @@ -192,6 +202,7 @@ extern int c_toupper (int c); #endif #if C_CTYPE_ASCII +#undef c_isprint #define c_isprint(c) \ ({ int __c = (c); \ (__c >= ' ' && __c <= '~'); \ @@ -199,12 +210,14 @@ extern int c_toupper (int c); #endif #if C_CTYPE_ASCII +#undef c_ispunct #define c_ispunct(c) \ ({ int _c = (c); \ (c_isgraph (_c) && ! c_isalnum (_c)); \ }) #endif +#undef c_isspace #define c_isspace(c) \ ({ int __c = (c); \ (__c == ' ' || __c == '\t' \ @@ -212,6 +225,7 @@ extern int c_toupper (int c); }) #if C_CTYPE_CONSECUTIVE_UPPERCASE +#undef c_isupper #define c_isupper(c) \ ({ int __c = (c); \ (__c >= 'A' && __c <= 'Z'); \ @@ -221,12 +235,14 @@ extern int c_toupper (int c); #if C_CTYPE_CONSECUTIVE_DIGITS \ && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE #if C_CTYPE_ASCII +#undef c_isxdigit #define c_isxdigit(c) \ ({ int __c = (c); \ ((__c >= '0' && __c <= '9') \ || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'F')); \ }) #else +#undef c_isxdigit #define c_isxdigit(c) \ ({ int __c = (c); \ ((__c >= '0' && __c <= '9') \ @@ -237,10 +253,12 @@ extern int c_toupper (int c); #endif #if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE +#undef c_tolower #define c_tolower(c) \ ({ int __c = (c); \ (__c >= 'A' && __c <= 'Z' ? __c - 'A' + 'a' : __c); \ }) +#undef c_toupper #define c_toupper(c) \ ({ int __c = (c); \ (__c >= 'a' && __c <= 'z' ? __c - 'a' + 'A' : __c); \ -- 2.30.2