FreeCalypso > hg > freecalypso-tools
annotate target-utils/include/ctype.h @ 465:003e48f8ebe1
rvinterf/etmsync/fsnew.c: cast 0 to (char *) for execl sentinel
I generally don't use NULL and use plain 0 instead, based on a "NULL
considered harmful" discussion on the classiccmp mailing list many aeons
ago (I couldn't find it, and I reason that it must have been 2005 or
earlier), but a recent complaint by a packager sent me searching, and I
found this:
https://ewontfix.com/11/
While I don't give a @#$% about "modern" systems and code-nazi tools,
I realized that passing a plain 0 as a pointer sentinel in execl is wrong
because it will break on systems where pointers are longer than the plain
int type. Again, I don't give a @#$% about the abomination of x86_64 and
the like, but if anyone ever manages to port my code to something like a
PDP-11 (16-bit int, 32-bit long and pointers), then passing a plain 0
as a function argument where a pointer is expected most definitely won't
work: if the most natural stack slot and SP alignment unit is 16 bits,
fitting an int, with longs and pointers taking up two such slots, then
the call stack will be totally wrong with a plain 0 passed for a pointer.
Casting the 0 to (char *) ought to be the most kosher solution for the
most retro systems possible.
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Mon, 11 Feb 2019 00:00:19 +0000 |
| parents | 202b5aa009bc |
| children |
| rev | line source |
|---|---|
|
97
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 #define _U 01 |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 #define _L 02 |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 #define _N 04 |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 #define _S 010 |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 #define _P 020 |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 #define _C 040 |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #define _X 0100 |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #define _B 0200 |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 extern const char _ctype_[]; |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 #define isalpha(c) ((_ctype_+1)[c]&(_U|_L)) |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 #define isupper(c) ((_ctype_+1)[c]&_U) |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 #define islower(c) ((_ctype_+1)[c]&_L) |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 #define isdigit(c) ((_ctype_+1)[c]&_N) |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 #define isxdigit(c) ((_ctype_+1)[c]&(_N|_X)) |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 #define isspace(c) ((_ctype_+1)[c]&_S) |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 #define ispunct(c) ((_ctype_+1)[c]&_P) |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 #define isalnum(c) ((_ctype_+1)[c]&(_U|_L|_N)) |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 #define isprint(c) ((_ctype_+1)[c]&(_P|_U|_L|_N|_B)) |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 #define isgraph(c) ((_ctype_+1)[c]&(_P|_U|_L|_N)) |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 #define iscntrl(c) ((_ctype_+1)[c]&_C) |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 #define isascii(c) ((unsigned)(c)<=0177) |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 #define toupper(c) ((c)-'a'+'A') |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 #define tolower(c) ((c)-'A'+'a') |
|
202b5aa009bc
target-utils/include: our own ctype.h and strings.h added
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 #define toascii(c) ((c)&0177) |
