fpc/tests/getret.pp
1998-10-21 16:24:14 +00:00

68 lines
1.4 KiB
ObjectPascal

{ return the error code of the compiled file }
{ checks also if first line of source contains
$OPT= command line options needed }
program getret;
uses dos;
var com,args : string;
filename,firstline : string;
i : byte;
ppfile, retfile : text;
exefile : file;
begin
assign(retfile,'retcode');
rewrite(retfile);
args:='';
if paramcount>1 then
begin
filename:=paramstr(paramcount);
if pos('.',filename)=0 then
filename:=filename+'.pp';
assign(ppfile,filename);
{$I-}
reset(ppfile);
if ioresult=0 then
begin
{$I+}
readln(ppfile,firstline);
if pos('$OPT=',firstline)>0 then
args:=copy(Firstline,pos('=',Firstline)+1,255);
if pos('}',args)>0 then
args:=copy(args,1,pos('}',args)-1);
close(ppfile);
end;
end;
for i:=2 to paramcount do
args:=args+' '+paramstr(i);
com:=paramstr(1);
{$ifndef linux}
if pos('.',com)=0 then
com:=com+'.exe';
{$endif not linux}
assign(exefile,com);
{$I-}
Writeln('testing ',com);
reset(exefile,1);
if ioresult<>0 then
begin
com:=fsearch(com,getenv('PATH'));
end
else
close(exefile);
{$I+}
Writeln('Executing "',com,' ',args,'"');
Flush(output);
swapvectors;
exec(com,args);
swapvectors;
if doserror<>0 then
write(retfile,512+doserror)
else
write(retfile,dosexitcode);
close(retfile);
end.