12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- { 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.
|