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

Re: [MiNT] iscntrl(EOF)



Guido Flohr <gufl0000@stud.uni-sb.de> writes:

|> Hi,
|> 
|> 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?

Not explicitly, but it is implied.

|> 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.

What does UCHAR_MAX have to do with EOF?  They are distinct values.

Andreas.

-- 
Andreas Schwab                                  "And now for something
SuSE Labs                                        completely different."
Andreas.Schwab@suse.de
SuSE GmbH, Schanzäckerstr. 10, D-90443 Nürnberg