diff options
author | Erich Eckner <git@eckner.net> | 2017-11-22 14:07:48 +0100 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2017-11-22 14:07:48 +0100 |
commit | 28bea8441c178a1761d537e3ee5ee7b28c667dcc (patch) | |
tree | 7a81faf9cdfb0c9ca2d50843303722618d648508 | |
parent | cdc04ddb148a2610e77e9673295baec5a1c27cf9 (diff) | |
download | Make-28bea8441c178a1761d537e3ee5ee7b28c667dcc.tar.xz |
tools.pas: bugfix - hat das schon mal funktioniert?
-rw-r--r-- | Make.lps | 112 | ||||
-rw-r--r-- | tools.pas | 51 |
2 files changed, 92 insertions, 71 deletions
@@ -7,24 +7,24 @@ <Unit0> <Filename Value="Make.lpr"/> <IsPartOfProject Value="True"/> - <TopLine Value="25"/> - <CursorPos X="39" Y="51"/> - <UsageCount Value="87"/> + <CursorPos X="37" Y="10"/> + <UsageCount Value="88"/> <Loaded Value="True"/> </Unit0> <Unit1> <Filename Value="Machdatei.txt"/> <IsPartOfProject Value="True"/> - <UsageCount Value="87"/> + <UsageCount Value="88"/> <DefaultSyntaxHighlighter Value="None"/> </Unit1> <Unit2> <Filename Value="tools.pas"/> <IsPartOfProject Value="True"/> + <IsVisibleTab Value="True"/> <EditorIndex Value="4"/> - <TopLine Value="51"/> - <CursorPos X="32" Y="409"/> - <UsageCount Value="66"/> + <TopLine Value="256"/> + <CursorPos X="26" Y="284"/> + <UsageCount Value="67"/> <Loaded Value="True"/> </Unit2> <Unit3> @@ -33,19 +33,18 @@ <EditorIndex Value="2"/> <TopLine Value="451"/> <CursorPos X="36" Y="369"/> - <UsageCount Value="63"/> + <UsageCount Value="64"/> <Loaded Value="True"/> </Unit3> <Unit4> <Filename Value="dateibeziehungen.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="dateiBeziehungen"/> - <IsVisibleTab Value="True"/> <EditorIndex Value="1"/> - <TopLine Value="315"/> - <CursorPos X="23" Y="425"/> + <TopLine Value="1020"/> + <CursorPos X="140" Y="1042"/> <FoldState Value=" T3k103C2322_"/> - <UsageCount Value="55"/> + <UsageCount Value="56"/> <Loaded Value="True"/> </Unit4> <Unit5> @@ -134,19 +133,18 @@ <JumpHistory Count="30" HistoryIndex="29"> <Position1> <Filename Value="dateibeziehungen.pas"/> - <Caret Line="458" Column="25" TopLine="430"/> + <Caret Line="476" Column="47" TopLine="447"/> </Position1> <Position2> <Filename Value="dateibeziehungen.pas"/> - <Caret Line="463" Column="25" TopLine="435"/> + <Caret Line="801" Column="22" TopLine="782"/> </Position2> <Position3> <Filename Value="dateibeziehungen.pas"/> - <Caret Line="476" Column="44" TopLine="447"/> </Position3> <Position4> <Filename Value="dateibeziehungen.pas"/> - <Caret Line="72" Column="13" TopLine="54"/> + <Caret Line="72" Column="13" TopLine="43"/> </Position4> <Position5> <Filename Value="dateibeziehungen.pas"/> @@ -158,98 +156,98 @@ </Position6> <Position7> <Filename Value="dateibeziehungen.pas"/> - <Caret Line="475" Column="23" TopLine="446"/> + <Caret Line="476" Column="13" TopLine="446"/> </Position7> <Position8> <Filename Value="dateibeziehungen.pas"/> - <Caret Line="476" Column="47" TopLine="447"/> + <Caret Line="66" Column="30" TopLine="48"/> </Position8> <Position9> - <Filename Value="../units/lowlevelunit.pas"/> - <Caret Line="616" Column="24" TopLine="592"/> + <Filename Value="dateibeziehungen.pas"/> + <Caret Line="419" Column="90" TopLine="315"/> </Position9> <Position10> <Filename Value="dateibeziehungen.pas"/> - <Caret Line="755" TopLine="728"/> + <Caret Line="66" Column="72" TopLine="48"/> </Position10> <Position11> - <Filename Value="../units/mystringlistunit.pas"/> - <Caret Line="40" Column="26" TopLine="25"/> + <Filename Value="dateibeziehungen.pas"/> + <Caret Line="419" Column="93" TopLine="294"/> </Position11> <Position12> <Filename Value="dateibeziehungen.pas"/> - <Caret Line="801" Column="20" TopLine="775"/> + <Caret Line="428" Column="20" TopLine="322"/> </Position12> <Position13> - <Filename Value="dateibeziehungen.pas"/> - <Caret Line="72" Column="13" TopLine="54"/> + <Filename Value="../units/lowlevelunit.pas"/> + <Caret Line="107" Column="18" TopLine="89"/> </Position13> <Position14> <Filename Value="dateibeziehungen.pas"/> - <Caret Line="289" Column="11" TopLine="150"/> + <Caret Line="446" Column="16" TopLine="418"/> </Position14> <Position15> - <Filename Value="dateibeziehungen.pas"/> - <Caret Line="309" Column="11" TopLine="219"/> + <Filename Value="Make.lpr"/> + <Caret Line="51" Column="39" TopLine="50"/> </Position15> <Position16> <Filename Value="dateibeziehungen.pas"/> - <Caret Line="475" Column="23" TopLine="446"/> + <Caret Line="116" Column="29" TopLine="100"/> </Position16> <Position17> - <Filename Value="dateibeziehungen.pas"/> - <Caret Line="476" Column="47" TopLine="447"/> + <Filename Value="tools.pas"/> + <Caret Line="409" Column="32" TopLine="374"/> </Position17> <Position18> - <Filename Value="dateibeziehungen.pas"/> - <Caret Line="801" Column="22" TopLine="782"/> + <Filename Value="Make.lpr"/> + <Caret Line="84" Column="36" TopLine="56"/> </Position18> <Position19> - <Filename Value="dateibeziehungen.pas"/> + <Filename Value="Make.lpr"/> + <Caret Line="10" Column="45"/> </Position19> <Position20> - <Filename Value="dateibeziehungen.pas"/> - <Caret Line="72" Column="13" TopLine="43"/> + <Filename Value="Make.lpr"/> + <Caret Line="90" Column="11" TopLine="56"/> </Position20> <Position21> - <Filename Value="dateibeziehungen.pas"/> - <Caret Line="289" Column="11" TopLine="150"/> + <Filename Value="Make.lpr"/> + <Caret Line="84" TopLine="54"/> </Position21> <Position22> - <Filename Value="dateibeziehungen.pas"/> - <Caret Line="309" Column="11" TopLine="219"/> + <Filename Value="Make.lpr"/> + <Caret Line="10" Column="37"/> </Position22> <Position23> - <Filename Value="dateibeziehungen.pas"/> - <Caret Line="476" Column="13" TopLine="446"/> + <Filename Value="Make.lpr"/> + <Caret Line="84" Column="3" TopLine="54"/> </Position23> <Position24> - <Filename Value="dateibeziehungen.pas"/> - <Caret Line="66" Column="30" TopLine="48"/> + <Filename Value="Make.lpr"/> </Position24> <Position25> - <Filename Value="dateibeziehungen.pas"/> - <Caret Line="419" Column="90" TopLine="315"/> + <Filename Value="Make.lpr"/> + <Caret Line="89" TopLine="54"/> </Position25> <Position26> - <Filename Value="dateibeziehungen.pas"/> - <Caret Line="66" Column="72" TopLine="48"/> + <Filename Value="Make.lpr"/> + <Caret Line="86" TopLine="52"/> </Position26> <Position27> - <Filename Value="dateibeziehungen.pas"/> - <Caret Line="419" Column="93" TopLine="294"/> + <Filename Value="Make.lpr"/> + <Caret Line="87" Column="7" TopLine="61"/> </Position27> <Position28> - <Filename Value="dateibeziehungen.pas"/> - <Caret Line="428" Column="20" TopLine="322"/> + <Filename Value="Make.lpr"/> + <Caret Line="86" TopLine="56"/> </Position28> <Position29> - <Filename Value="../units/lowlevelunit.pas"/> - <Caret Line="107" Column="18" TopLine="89"/> + <Filename Value="Make.lpr"/> + <Caret Line="10" Column="37"/> </Position29> <Position30> - <Filename Value="dateibeziehungen.pas"/> - <Caret Line="446" Column="16" TopLine="418"/> + <Filename Value="Make.lpr"/> + <Caret Line="89" Column="16" TopLine="62"/> </Position30> </JumpHistory> </ProjectSession> @@ -191,7 +191,7 @@ procedure testeObBefehlLokal(bef, ordner: string; lokTest: tRegExpr); var exe,args,regex,oBef,s: string; dateien,sl,relZeil: tMyStringlist; - i,j: longint; + i,matchNum: longint; re: tRegExpr; begin oBef:=bef; @@ -201,6 +201,11 @@ begin delete(bef,1,notQuotedPos(';',bef)); bef:=trim(bef); end; + while notQuotedPos('&&',bef)>0 do begin + testeObBefehlLokal(trim(leftStr(bef,notQuotedPos('&&',bef)-1)),ordner,lokTest); + delete(bef,1,notQuotedPos('&&',bef)+1); + bef:=trim(bef); + end; args:=''; repeat @@ -220,25 +225,38 @@ begin // set output "~/Dokumente/Erich_Masterarbeit/Bilder/gnuplot/Energiescan.tex" regex:='^ *set +output +'; re:=tRegExpr.create; - re.expression:='"[^"]*/[^"]*"'; + re.expression:='"([^"]*/[^"]*)"'; + matchNum:=1; end else if exe='epost' then begin // Datei: - regex:='^ *(Datei|Legende): *'; + regex:='^ *(Datei|Legende):'; re:=tRegExpr.create; re.expression:='[^ :]*/[^ ]*'; + matchNum:=0; end else if exe='math' then begin // das wird vmtl. schwer zu überprüfen, außer man nimmt Muster, // die generisch auf Pfade passen, aber dann erwischt man auch den Input mit ... regex:='^([^"]*"[^"]*")*[^"]*"([^"]*/)+[^"]*"'; re:=tRegExpr.create; - re.expression:='"[^"]*/[^"]*"'; + re.expression:='"([^"]*/[^"]*)"'; + matchNum:=1; end - else exit; + else if (exe='cd') then begin + if not lokTest.exec(bef) then + fehler('Befehl '''+oBef+''' hat Lokalitätstest nicht bestanden! ('+lokTest.expression+')'); + exit; + end + 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 + // 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' @@ -249,12 +267,16 @@ begin dateien:=extrahiereAlleDateien(args+' '+bef); if dateien.count = 0 then - gibAus('Warnung: Hier ist ein Befehl ohne offensichtliche input-Dateien! ('''+oBef+''')!',3); + 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; + end; sl.grep(regex); relZeil.addStrings(sl); end; @@ -262,18 +284,19 @@ begin dateien.free; for i:=0 to relZeil.count-1 do begin - re.inputString:=relZeil[i]; - if re.subExprMatchCount=0 then - gibAus('Warnung: Hier ist eine Zeile in der optionsdatei, die keine passende Inputdatei benennt, es aber sollte! ('''+relZeil[i]+''')!',3); - for j:=0 to re.subExprMatchCount-1 do begin - s:=trim(re.match[j]); + if not re.exec(relZeil[i]) then begin + gibAus('Warnung: Hier ist eine Zeile in der Optionsdatei, die keine passende Inputdatei benennt, es aber sollte! ('''+relZeil[i]+''')!',3); + continue; + end; + repeat + s:=trim(re.match[matchNum]); if (leftStr(s,1)='"') and (rightStr(s,1)='"') then begin delete(s,1,1); delete(s,length(s),1); end; if not lokTest.exec(s) then fehler(''''+relZeil[i]+''' in Befehl '''+oBef+''' hat Lokalitätstest nicht bestanden! ('+lokTest.expression+')'); - end; + until not re.execNext; end; re.free; relZeil.free; |