Re: Patch for isdigit/isalpha/etc. macro arguments

Mark Kettenis
2007-04-06T23:51:26Z

> Date: Fri, 6 Apr 2007 16:36:06 -0700 (PDT)
> From: Steve Ellcey <sje@cup.hp.com>
>
> > Sorry, you obviously spent some serious amount of time fixing this,
> > but I think this is just gross. It also would just hide the bug
> > mentioned above. I guess we should use -liberty's "safe-ctype.h"
> > instead.
>
> Hm, this seems to lead to some new problems. safe-ctype.h defines
> ISALNUM, ISALPHA, ISDIGIT, etc. (uppercase) and if I start including
> "safe-ctype.h" instead of <ctype.h>, then I collide with
> readline/chardefs.h in some files (like cli/cli-dump.c) because that
> file includes readline/readline.h which includes readline/chardefs.h
> which has its own definitions of ISALNUM, ISALPHA, ISDIGIT, etc.
>
> What to do? My best guess would be to have readline/chardefs.h not
> define these macros if they are already defined. But now we are
> reaching outside the gdb subdir.

Bleach! So that's not a viable option. I think it's time to find the
magic gcc option to turn the warning off. I mean

char *s = "...";
isalpha(*s);

is perfectly reasonable code and should not result in compiler
warnings. And I really don't like adding the casts you propose. To
me, a cast is an indication that something naughty is being done, and
that certainly isn't the case here.

Mark