* stream functions converted to work without linuxerror

This commit is contained in:
marco 2003-11-14 16:44:48 +00:00
parent 4bd0a028bb
commit 4b8e3387a7

View File

@ -199,8 +199,8 @@ Function PClose(Var F:file) : cint;
Function POpen(var F:text;const Prog:String;rw:char):cint;
Function POpen(var F:file;const Prog:String;rw:char):cint;
function AssignStream(Var StreamIn,Streamout:text;Const Prog:String) : longint;
function AssignStream(var StreamIn, StreamOut, StreamErr: Text; const prog: String): LongInt;
function AssignStream(Var StreamIn,Streamout:text;Const Prog:String) : cint;
function AssignStream(var StreamIn, StreamOut, StreamErr: Text; const prog: String): cint;
{$ifndef BSD}
Function GetDomainName:String;
@ -855,7 +855,6 @@ Function AssignPipe(var pipe_in,pipe_out:text):cint;
{
Sets up a pair of file variables, which act as a pipe. The first one can
be read from, the second one can be written to.
If the operation was unsuccesful, linuxerror is set.
}
var
f_in,f_out : longint;
@ -1020,7 +1019,6 @@ begin
exit(-1);
end;
ret:=AssignPipe(pipi,pipo);
if ret=-1 then
exit(-1);
pid:=fpfork;
@ -1082,7 +1080,7 @@ begin
POpen:=0;
end;
Function AssignStream(Var StreamIn,Streamout:text;Const Prog:String) : longint;
Function AssignStream(Var StreamIn,Streamout:text;Const Prog:String) : cint;
{
Starts the program in 'Prog' and makes its input and output the
other end of two pipes, which are the stdin and stdout of a program
@ -1100,16 +1098,13 @@ var
pid : longint;
pl : ^Longint;
begin
LinuxError:=0;
AssignStream:=-1;
AssignPipe(streamin,pipo);
if Linuxerror<>0 then
exit;
AssignPipe(pipi,streamout);
if Linuxerror<>0 then
exit;
if AssignPipe(streamin,pipo)=-1 Then
exit(-1);
if AssignPipe(pipi,streamout)=-1 Then // shouldn't this close streamin and pipo?
exit(-1);
pid:=fpfork;
if linuxerror<>0 then
if pid=-1 then
begin
close(pipi);
close(pipo);
@ -1123,12 +1118,10 @@ begin
{ Close what we don't need }
close(streamout);
close(streamin);
fpdup2(pipi,input);
if linuxerror<>0 then
if fpdup2(pipi,input)=-1 Then
halt(127);
close(pipi);
fpdup2(pipo,output);
if linuxerror<>0 then
If fpdup2(pipo,output)=-1 Then
halt (127);
close(pipo);
Execl(Prog);
@ -1169,40 +1162,39 @@ var
pid: LongInt;
pl: ^LongInt;
begin
LinuxError := 0;
AssignStream := -1;
// Assign pipes
AssignPipe(StreamIn, PipeOut);
if LinuxError <> 0 then exit;
if AssignPipe(StreamIn, PipeOut)=-1 Then
Exit(-1);
AssignPipe(StreamErr, PipeErr);
if LinuxError <> 0 then begin
If AssignPipe(StreamErr, PipeErr)=-1 Then
begin
Close(StreamIn);
Close(PipeOut);
exit;
exit(-1);
end;
AssignPipe(PipeIn, StreamOut);
if LinuxError <> 0 then begin
if AssignPipe(PipeIn, StreamOut)=-1 Then
begin
Close(StreamIn);
Close(PipeOut);
Close(StreamErr);
Close(PipeErr);
exit;
exit(-1);
end;
// Fork
pid := fpFork;
if LinuxError <> 0 then begin
if pid=-1 then begin
Close(StreamIn);
Close(PipeOut);
Close(StreamErr);
Close(PipeErr);
Close(PipeIn);
Close(StreamOut);
exit;
exit(-1);
end;
if pid = 0 then begin
@ -1212,14 +1204,14 @@ begin
Close(StreamIn);
Close(StreamErr);
// Connect pipes
fpdup2(PipeIn, Input);
if LinuxError <> 0 then Halt(127);
if fpdup2(PipeIn, Input)=-1 Then
Halt(127);
Close(PipeIn);
fpdup2(PipeOut, Output);
if LinuxError <> 0 then Halt(127);
if fpdup2(PipeOut, Output)=-1 Then
Halt(127);
Close(PipeOut);
fpdup2(PipeErr, StdErr);
if LinuxError <> 0 then Halt(127);
if fpdup2(PipeErr, StdErr)=-1 Then
Halt(127);
Close(PipeErr);
// Execute program
Execl(Prog);
@ -1259,8 +1251,6 @@ Function GetDomainName:String; { linux only!}
Var
Sysn : utsname;
begin
// fpUname(Sysn);
// linuxerror:=fpgeterrno;;
If fpUname(sysn)<>0 then
getdomainname:=''
else
@ -1275,9 +1265,7 @@ Function GetHostName:String;
Var
Sysn : utsname;
begin
fpuname(Sysn);
linuxerror:=fpgeterrno;;
If linuxerror<>0 then
If fpuname(sysn)=-1 then
gethostname:=''
else
gethostname:=strpas(@Sysn.nodename[0]);
@ -1735,7 +1723,10 @@ End.
{
$Log$
Revision 1.45 2003-11-13 18:44:06 marco
Revision 1.46 2003-11-14 16:44:48 marco
* stream functions converted to work without linuxerror
Revision 1.45 2003/11/13 18:44:06 marco
* small fi
Revision 1.44 2003/11/12 22:19:45 marco