summaryrefslogtreecommitdiff
path: root/dateibeziehungen.pas
diff options
context:
space:
mode:
Diffstat (limited to 'dateibeziehungen.pas')
-rw-r--r--dateibeziehungen.pas90
1 files changed, 51 insertions, 39 deletions
diff --git a/dateibeziehungen.pas b/dateibeziehungen.pas
index b83fd88..151eb79 100644
--- a/dateibeziehungen.pas
+++ b/dateibeziehungen.pas
@@ -565,23 +565,55 @@ end;
procedure tGenerischeAbhaengigkeit.generiereErben(var es: tExpliziteAbhaengigkeiten);
var
- i,j: longint;
- s: string;
- neuSums: tMyStringList;
+ i,j,befCnt: longint;
+ s: string;
+ neuSums: tMyStringList;
begin
neuSums:=tMyStringList.create;
for i:=0 to matchCount-1 do begin
+ befCnt:=0;
es.add(tExpliziteAbhaengigkeit.create);
for j:=0 to quellen[i].count-1 do
es.last.quellen.add(quellen[i][j]);
for j:=0 to ziele[i].count-1 do
es.last.ziele.add(ziele[i][j]);
- for j:=0 to befehleFkt.count-1 do begin
+
+ neuSums.clear;
+ for j:=0 to quellen[i].count-1 do
+ neuSums.add(escapeStringToRegex(escape(quellen[i][j].name,'$','\'),rtShell,'"/'));
+ for j:=0 to ziele[i].count-1 do
+ neuSums.add(escapeStringToRegex(escape(ziele[i][j].name,'$','\'),rtShell,'"/'));
+ neuSums.sort;
+ neuSums.uniq('-');
+ neuSums.appendTo( // Quell- und Zielsummen entfernen
+ es.last.befehle,
+ argMax,
+ 'sed "/ ',
+ '\$/d; / ',
+ '\$/d" -i "'+escape(_pruefSummenDatei,'"\','\')+'"'
+ );
+
+ neuSums.clear;
+ for j:=0 to quellen[i].count-1 do
+ neuSums.add(quellen[i][j].name);
+ neuSums.sort;
+ neuSums.uniq('-');
+ neuSums.appendTo( // Quellsummen erzeugen
+ es.last.befehle,
+ argMax,
+ 'sha512sum "',
+ '" "',
+ '" >> "'+escape(_pruefSummenDatei,'"\','\')+'"'
+ );
+
+ for j:=0 to befehleFkt.count-1 do begin // eigentliche Befehle ausführen
s:=befehleFkt[j];
- if quellErsetzung(s,rtKein,quellen[i],quellen[i].count) then
+ if quellErsetzung(s,rtKein,quellen[i],quellen[i].count) then begin
es.last.befehle.add(s);
+ inc(befCnt);
+ end;
end;
- if es.last.befehle.count=0 then
+ if befCnt=0 then
fehler(
'Keine Befehle auszuführen für explizite Abhängigkeit!'#10+
'Befehle:'#10+
@@ -589,39 +621,19 @@ begin
'Quellen:'#10+
quellen[i].toString
);
- if quellen[i].count + ziele[i].count > 0 then begin
- // sha512summen erneuern
-
- s:='sed "';
- for j:=0 to quellen[i].count-1 do
- s:=s+'/\s'+escapeStringToRegex(escape(quellen[i][j].name,'$','\'),rtShell,'"/')+'\$/d; ';
- for j:=0 to ziele[i].count-1 do
- s:=s+'/\s'+escapeStringToRegex(escape(ziele[i][j].name,'$','\'),rtShell,'"/')+'\$/d; ';
- s:=s+'" -i "'+escape(_pruefSummenDatei,'"\','\')+'"';
- es.last.befehle.insert(0,s); // _vorher_ Quellen und Ziele entfernen ...
-
- s:='sha512sum';
- neuSums.clear;
- for j:=0 to quellen[i].count-1 do
- neuSums.add(quellen[i][j].name);
- neuSums.sort;
- neuSums.uniq('-');
- for j:=0 to neuSums.count-1 do
- s:=s+' "'+escape(neuSums[j],'"\','\')+'"';
- s:=s+' >> "'+escape(_pruefSummenDatei,'"\','\')+'"';
- es.last.befehle.insert(1,s); // ... und Quellen aktualisieren
-
- s:='sha512sum';
- neuSums.clear;
- for j:=0 to ziele[i].count-1 do
- neuSums.add(ziele[i][j].name);
- neuSums.sort;
- neuSums.uniq('-');
- for j:=0 to neuSums.count-1 do
- s:=s+' "'+escape(neuSums[j],'"\','\')+'"';
- s:=s+' >> "'+escape(_pruefSummenDatei,'"\','\')+'"';
- es.last.befehle.add(s); // _nachher_ Ziele aktualisieren
- end;
+
+ neuSums.clear;
+ for j:=0 to ziele[i].count-1 do
+ neuSums.add(ziele[i][j].name);
+ neuSums.sort;
+ neuSums.uniq('-');
+ neuSums.appendTo( // Zielsummen erzeugen
+ es.last.befehle,
+ argMax,
+ 'sha512sum "',
+ '" "',
+ '" >> "'+escape(_pruefSummenDatei,'"\','\')+'"'
+ );
end;
neuSums.free;
end;