stdin/stdout

01 May 1997 00:00:00 +0000


Hello,

can you please explain me how to use the stdin/stdout with gpc?
The compiler does not seem to know these.

I tried to declare some functions from libc, but it didn't work, too.
Here's my code:

----------------------

program passtrough;

function fopen(name:pChar; mode:integer):integer; asmname 'open';
function fclose(handle:integer):integer; asmname 'close';

function fread(handle:integer; VAR Buffer; length:integer):integer;  
asmname 'read';
function fwrite(handle:integer; VAR Buffer; length:integer):integer;  
asmname 'write';

CONST O_RDONLY    =         00;
      O_WRONLY    =         01;
      O_RDWR      =         02;
      O_CREAT     =       0100;
      O_EXCL      =       0200;
      O_NOCTTY    =       0400;
      O_TRUNC     =      01000;
      O_APPEND    =      02000;
      O_NONBLOCK  =      04000;
      O_NDELAY    = O_NONBLOCK;
      O_SYNC      =     010000;

var fin,fout:integer;
    buffer:array[1..1024] of byte;
    bytesread:integer;

begin
   fin := fopen('/dev/stdin',O_RDONLY);
   fout:= fopen('/dev/stdout',O_WRONLY);

   repeat

      bytesread:=fread(fin,buffer,1024);
      if bytesread=-1 then begin
         writeln('read error'); Halt;
      end;
      if fwrite(fout,buffer,bytesread)=-1 then begin
         writeln('write error'); Halt;
      end;

   until bytesread<>1024;

   fclose(fin); fclose(fout);
end.

----------------------

It *does* work when stdin/stdout are connected to the terminal, but  
when using pipes it seems not to work.

Any suggestions?

Bye
   Andreas


Andreas Bauer (andi.tio@hit.handshake.de (Andreas Bauer))

HTML conversion by Lluís de Yzaguirre i Maura
Institut de Lingüística Aplicada - Universitat "Pompeu Fabra"
e-mail: de_yza@upf.es