[fpc-pascal] EOF on stdin

Tomas Hajny XHajT03 at mbox.vol.cz
Sun Dec 9 21:14:37 CET 2007


On 8 Dec 07, at 13:20, Mark Morgan Lloyd wrote:

> Good grief- that was quick :-)
> 
> Marco van de Voort wrote:
> >> I'm trying to distinguish between a case where there is no parameter on the 
> >> command line and where there is piped input. The code below works under Win-32 
> >> but under Linux Eof() waits for input:
> 
> >> If I start it under linux by piping an eof (i.e. echo -n |) it works.
> >>
> >> I'm sure this is something that's been looked at before- how do I get it to work?
> > 
> > For unix one can simply use termio.isatty(input) I think.
> 
> Thanks, I'll investigate. I was going to look at that but you've saved me a 
> /lot/ of work identifying the correct function name :-)

Note that you could use function Do_IsDevice 
provided in system unit for this (if Input is 
redirected/piped, it is not a device, otherwise 
it uses the console device). However, I suspect 
that this function is only used internally and 
there's no way of directly accessing it outside 
the System unit. Nevertheless, you should be able 
to find proper implementation for all FPC 
supported platforms by looking at implementation 
of this function.

Tomas



More information about the fpc-pascal mailing list