[fpc-pascal] EOF on stdin

Mark Morgan Lloyd markMLl.fpc-pascal at telemetry.co.uk
Sat Dec 8 13:27:05 CET 2007


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 ParamCount = 0 THEN BEGIN		(* Case (1) or (2) *)
     debug('No parameters (case 1 or 2)');
     TRY
       AssignFile(input, '');		(* Standard input		*)
{$IOCHECKS OFF }
       Reset(input);	// Returns zero
       TRY
	IF Eof(input) THEN BEGIN	(* Case (1)	*)
           debug('At EOF (case 1)');
{$IOCHECKS ON }

// Nothing on command line.

	END ELSE BEGIN			(* Case (2)	*)
           debug('Not at EOF (case 2)');

// Got piped 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?

-- 
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]



More information about the fpc-pascal mailing list