ctype out of range handling
Find a good way to deal with deal with out-of-range parameters given to ctype functions. A lot of code passes a signed char value (instead of unsigned char as int). However, this means that EOF (-1) can be mistaken for unsigned char 255 (maps to -1 as signed char). These are bugs.