From: | "Simon 'corecode' Schubert" <corecode@xxxxxxxxxxxx> |
Date: | Thu, 7 Jul 2005 02:07:14 +0200 |
Lately Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx> said: > We can't use assert without including assert.h, but it does bring up > the point as to whether we should fault out the program or whether > we should silently return 0. i'd say, make it a compile time flag. we can't assert, that's true, but we could *(int*)0 = 1 or something like this. > Here's what I'm thinking of. The only thing I don't like about it is > the way _CTYPE_NUM_CHARS is defined, but on the other hand I'm not > particularly expecting that we will ever port to an architecture where > a character is more then 8 bits. seconded. if so, we can still change it :) > +static __inline int > +__libc_ctype_index(__uint16_t mask, int c) > +{ > + if (c < -1 || c >= _CTYPE_NUM_CHARS) > + return(0); how about folding the argument? this way passing an signed char actually works like "expected": int i = 0xad; /* euro sign (?) */ char c = i; printf("%c %c %d %d\n", i, c, isprint(i), isprint(c)); should print "? ? 1 1", and not "? ? 1 0". or maybe it's too late and i'm missing something. cheers simon -- Serve - BSD +++ RENT this banner advert +++ ASCII Ribbon /"\ Work - Mac +++ space for low $$$ NOW!1 +++ Campaign \ / Party Enjoy Relax | http://dragonflybsd.org Against HTML \ Dude 2c 2 the max ! http://golden-apple.biz Mail + News / \
Attachment:
pgp00011.pgp
Description: PGP signature