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