diff options
author | Erich Eckner <git@eckner.net> | 2017-11-23 11:37:37 +0100 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2017-11-23 11:37:37 +0100 |
commit | 06b1992bcf8e46910064f2192209ed1acc17be39 (patch) | |
tree | d2e30c226e1af3589fb3612e42dbe6a84bf69ed3 | |
parent | 28bea8441c178a1761d537e3ee5ee7b28c667dcc (diff) | |
download | Make-06b1992bcf8e46910064f2192209ed1acc17be39.tar.xz |
tools.pas: assume unknown commands have their input/output on the command line
-rw-r--r-- | tools.pas | 48 |
1 files changed, 28 insertions, 20 deletions
@@ -248,39 +248,47 @@ begin fehler('Befehl '''+oBef+''' hat Lokalitätstest nicht bestanden! ('+lokTest.expression+')'); exit; end + // folgende Executables sind unkritisch, da der Name des Outputs i.d.R. direkt + // vom Namen des Inputs abhängt bzw. per Kommandozeilenparameter übergeben + // wird (und nicht in einer Datei steht): else if (exe='convert') or (exe='epstopdf') or (exe='latexmk') or (exe='mpost') or (exe='pdflatex') then - exit; - - // folgende Executables sind unkritisch, da der Name des Outputs i.d.R. direkt - // vom Namen des Inputs abhängt bzw. per Kommandozeilenparameter übergeben - // wird (und nicht in einer Datei steht): - // - // 'convert' - // 'epstopdf' - // 'latexmk' - // 'mpost' - // 'pdflatex' + exit + else begin + regex:=''; + re:=tRegExpr.create; + re.expression:='\S+'; + matchNum:=0; + end; dateien:=extrahiereAlleDateien(args+' '+bef); if dateien.count = 0 then gibAus('Warnung: Hier ist ein Befehl ohne offensichtliche Input-Dateien! ('''+oBef+''')!',3); - sl:=tMyStringlist.create; relZeil:=tMyStringlist.create; - for i:=0 to dateien.count-1 do begin - sl.loadFromFile(dateien[i]); - if exe='epost' then begin - sl.grep(regex+'|^[!?]'); - sl.unfoldMacros; + if regex='' then begin + // dateien sind bereits die zu betrachtenden Dateien + for i:=0 to dateien.count-1 do begin + if re.exec(dateien[i]) then + relZeil.add(dateien[i]); + end; + end + else begin + sl:=tMyStringlist.create; + for i:=0 to dateien.count-1 do begin + sl.loadFromFile(dateien[i]); + if exe='epost' then begin + sl.grep(regex+'|^[!?]'); + sl.unfoldMacros; + end; + sl.grep(regex); + relZeil.addStrings(sl); end; - sl.grep(regex); - relZeil.addStrings(sl); + sl.free; end; - sl.free; dateien.free; for i:=0 to relZeil.count-1 do begin |