summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2017-11-22 14:07:48 +0100
committerErich Eckner <git@eckner.net>2017-11-22 14:07:48 +0100
commit28bea8441c178a1761d537e3ee5ee7b28c667dcc (patch)
tree7a81faf9cdfb0c9ca2d50843303722618d648508
parentcdc04ddb148a2610e77e9673295baec5a1c27cf9 (diff)
downloadMake-28bea8441c178a1761d537e3ee5ee7b28c667dcc.tar.xz
tools.pas: bugfix - hat das schon mal funktioniert?
-rw-r--r--Make.lps112
-rw-r--r--tools.pas51
2 files changed, 92 insertions, 71 deletions
diff --git a/Make.lps b/Make.lps
index fd7d175..b93490a 100644
--- a/Make.lps
+++ b/Make.lps
@@ -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>
diff --git a/tools.pas b/tools.pas
index a7cdfad..11f14ae 100644
--- a/tools.pas
+++ b/tools.pas
@@ -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;