[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MiNT] iscntrl(EOF)


sorry for the delay.  I was away again.

On Mon, Feb 28, 2000 at 03:28:29PM +0100, Andreas Schwab wrote:
> Guido Flohr <gufl0000@stud.uni-sb.de> writes:
> |> Hi,
> |> 
> |> in the absence of any reliable C reference I can only guess what
> |> "iscntrl (EOF)" should return.  IMHO EOF should be classified as a control
> |> character in the C locale.  The GNU libc says it isn't a control
> |> character.
> |> 
> |> Could anybody check that either in the standard or on other platforms?
> ISO C says that the domain of the <ctype.h> functions is
> UCHAR_MIN..UCHAR_MAX + EOF.  They all shall return false for EOF, since
> that is not a character and thus cannot have any of the tested properties.

Does ISO C explicitely say that is*(EOF) should always return zero?

If so I would have to surrender and arrange for EOF not being a control
character whereas 255 (UCHAR_MAX) would be one.  But I don't like that
because a construct like

	if (iscntrl (c))
		cast_it ();

would fail then for c == EOF.  I would rather define a control character
as any non-printable character and since EOF is inside the domain of the
ctype function it should also be regarded as a character.



P.S.: Apart from that undecided case iscntrl(EOF) all <ctype.h>
functions/macros now work reliably in the range CHAR_MIN...UCHAR_MAX.