summaryrefslogtreecommitdiff
path: root/dateibeziehungen.pas
diff options
context:
space:
mode:
Diffstat (limited to 'dateibeziehungen.pas')
-rw-r--r--dateibeziehungen.pas182
1 files changed, 94 insertions, 88 deletions
diff --git a/dateibeziehungen.pas b/dateibeziehungen.pas
index f016faa..67e11e6 100644
--- a/dateibeziehungen.pas
+++ b/dateibeziehungen.pas
@@ -61,13 +61,13 @@ type
_dats: tDateienMitDaten;
function rQuellen(idx: longint): tDateienMitDaten;
function rZiele(idx: longint): tDateienMitDaten;
- function quellersetzung(var worin: string; quellen: tDateienMitDaten; momentanePosition: longint): boolean;
+ function quellErsetzung(var worin: string; quellen: tDateienMitDaten; momentanePosition: longint): boolean;
function zieleHinzufuegen(ziele, quellen: tDateienMitDaten; zielFkt: string): boolean;
function findeMehrZiele(ziele, quellen: tDateienMitDaten): boolean;
function matchCount: longint;
public
quellenREs: array of string; // regexe der Quellen - nur deshalb kein tRegExpr, weil es ohnehin zuerst substituiert werden muss
- zieleFkt,befehleFkt: tStringlist;
+ zieleFkt,befehleFkt: tStringList;
property quellen[idx: longint]: tDateienMitDaten
read rQuellen;
property ziele[idx: longint]: tDateienMitDaten
@@ -80,7 +80,7 @@ type
tExpliziteAbhaengigkeit = class(tObject)
ziele,quellen: tDateienMitDaten;
- befehle: tStringlist;
+ befehle: tStringList;
constructor create;
destructor destroy; override;
function hatQuelleVonAlsZiel(abh: tExpliziteAbhaengigkeit): boolean;
@@ -91,7 +91,7 @@ type
tMach = class
private
- _machDatei,_pruefsummenDatei: string;
+ _machDatei,_pruefSummenDatei: string;
_oriAbh: tGenerischeAbhaengigkeiten;
_mglAbh: tExpliziteAbhaengigkeiten;
_dats: tDateienMitDaten;
@@ -218,20 +218,20 @@ var
fortschritt: boolean;
begin
// Permutation initialisieren
- setlength(perm,count);
+ setLength(perm,count);
for i:=0 to length(perm)-1 do
perm[i]:=count; // sollte ohnehin überschrieben werden, aber "count" sorgt unten für einen Fehler!
- setlength(bedingungen,0); // aka "y hängt (direkt) von x ab"
+ setLength(bedingungen,0); // aka "y hängt (direkt) von x ab"
for i:=0 to count-1 do
for j:=0 to count-1 do
if (i<>j) and (items[i].hatQuelleVonAlsZiel(items[j])) then begin
- setlength(bedingungen,length(bedingungen)+1);
+ setLength(bedingungen,length(bedingungen)+1);
bedingungen[length(bedingungen)-1].x:=i;
bedingungen[length(bedingungen)-1].y:=j;
end;
- setlength(nehmbare,count);
+ setLength(nehmbare,count);
for i:=0 to length(nehmbare)-1 do
nehmbare[i]:=0;
@@ -277,11 +277,11 @@ constructor tGenerischeAbhaengigkeit.create(dats: tDateienMitDaten; machDatei,pr
begin
inherited create;
_dats:=dats;
- setlength(quellenREs,0);
- zieleFkt:=tStringlist.create;
- befehleFkt:=tStringlist.create;
- setlength(_quellens,0);
- setlength(_zieles,0);
+ setLength(quellenREs,0);
+ zieleFkt:=tStringList.create;
+ befehleFkt:=tStringList.create;
+ setLength(_quellens,0);
+ setLength(_zieles,0);
_machDatei:=machDatei;
_pruefSummenDatei:=pruefSummenDatei;
end;
@@ -294,8 +294,8 @@ begin
_quellens[i].free;
setLength(_quellens,0);
for i:=0 to length(quellenREs)-1 do
- setlength(quellenREs[i],0);
- setlength(quellenREs,0);
+ setLength(quellenREs[i],0);
+ setLength(quellenREs,0);
for i:=0 to length(_zieles)-1 do
_zieles[i].free;
setLength(_zieles,0);
@@ -303,7 +303,7 @@ begin
befehleFkt.free;
for i:=0 to length(_quellens)-1 do
_quellens[i].free;
- setlength(_quellens,0);
+ setLength(_quellens,0);
inherited destroy;
end;
@@ -317,7 +317,7 @@ begin
result:=_zieles[idx];
end;
-function tGenerischeAbhaengigkeit.quellersetzung(var worin: string; quellen: tDateienMitDaten; momentanePosition: longint): boolean;
+function tGenerischeAbhaengigkeit.quellErsetzung(var worin: string; quellen: tDateienMitDaten; momentanePosition: longint): boolean;
var
s,anfang,mitte,numStr: string;
i,li,re,qNum: longint;
@@ -328,13 +328,19 @@ begin
if qNum<0 then
numStr:=''
else
- numStr:=inttostr(qnum);
- s:=quellen[qnum+byte(qnum<0)].name;
+ numStr:=intToStr(qNum);
+ s:=quellen[qNum+byte(qNum<0)].name;
ersetzeAlleVorkommen(worin,'%in'+numStr+'%',s); // %in%
s:=extractfilename(s);
ersetzeAlleVorkommen(worin,'%ifile'+numStr+'%',s); // %ifile%
- if pos('.',s)>0 then
- delete(s,pos('.',s),length(s));
+ i:=0;
+ while pos('.',s)>0 do begin
+ while rightStr(s,1)<>'.' do
+ delete(s,length(s),1);
+ delete(s,length(s),1);
+ inc(i);
+ ersetzeAlleVorkommen(worin,'%basename'+numStr+','+intToStr(i)+'%',s); // %basename%
+ end;
ersetzeAlleVorkommen(worin,'%basename'+numStr+'%',s); // %basename%
end;
@@ -355,8 +361,8 @@ begin
re:=strtoint(erstesArgument(mitte,',',true));
if qNum>=momentanePosition then
- fehler('Quellersetzung sieht ''%dirname%'' für Quelle Nummer '+inttostr(qNum)+' an Position '+inttostr(momentanePosition)+'.');
- s:=extractfilepath(quellen[qnum].name);
+ fehler('Quellersetzung sieht ''%dirname%'' für Quelle Nummer '+intToStr(qNum)+' an Position '+intToStr(momentanePosition)+'.');
+ s:=extractFilePath(quellen[qNum].name);
if rightStr(s,1)='/' then
delete(s,length(s),1);
i:=anzCs('/',s)+1;
@@ -384,8 +390,8 @@ begin
if qNum<0 then
numStr:=''
else
- numStr:=inttostr(qnum);
- s:=quellen[qnum+byte(qnum<0)].name;
+ numStr:=intToStr(qNum);
+ s:=quellen[qNum+byte(qNum<0)].name;
while pos('%nurmit'+numStr+'''',worin)>0 do begin // %nurmit'...'%
anfang:=erstesArgument(worin,'%nurmit'+numStr+'''',false);
tmpRE.expression:=erstesArgument(worin,'''%',false);
@@ -418,7 +424,7 @@ var
begin
result:=false;
if pos('{',zielFkt)=0 then begin
- if not quellersetzung(zielFkt,quellen,quellen.count) then exit;
+ if not quellErsetzung(zielFkt,quellen,quellen.count) then exit;
if pos('*',zielFkt)=0 then begin
zielFkt:=unescape(zielFkt);
wasda:=false;
@@ -457,15 +463,15 @@ begin
s:=copy(zielFkt,1,pos('{',zielFkt)-1);
t:=copy(zielFkt,pos('{',zielFkt)+1,ende-pos('{',zielFkt)-1);
u:=copy(zielFkt,ende+1,length(zielFkt));
- if unescapedpos('..',t)>0 then begin
- for i:=strtoint(copy(t,1,unescapedpos('..',t)-1)) to strtoint(copy(t,unescapedpos('..',t)+2,length(t))) do
- zieleHinzufuegen(ziele,quellen,s+inttostr(i)+u);
+ if unEscapedPos('..',t)>0 then begin
+ for i:=strtoint(copy(t,1,unEscapedPos('..',t)-1)) to strtoint(copy(t,unEscapedPos('..',t)+2,length(t))) do
+ zieleHinzufuegen(ziele,quellen,s+intToStr(i)+u);
end
else begin
t:=t+',';
- while unescapedpos(',',t)>0 do begin
- zieleHinzufuegen(ziele,quellen,s+copy(t,1,unescapedpos(',',t)-1)+u);
- delete(t,1,unescapedpos(',',t));
+ while unEscapedPos(',',t)>0 do begin
+ zieleHinzufuegen(ziele,quellen,s+copy(t,1,unEscapedPos(',',t)-1)+u);
+ delete(t,1,unEscapedPos(',',t));
end;
end;
end;
@@ -484,7 +490,7 @@ end;
function tGenerischeAbhaengigkeit.matchCount: longint;
begin
if length(_quellens)<>length(_zieles) then
- fehler('unterschiedlich viele Sätze an Quellen ('+inttostr(length(_quellens))+') und Zielen ('+inttostr(length(_zieles))+').');
+ fehler('unterschiedlich viele Sätze an Quellen ('+intToStr(length(_quellens))+') und Zielen ('+intToStr(length(_zieles))+').');
result:=length(_quellens);
end;
@@ -499,17 +505,17 @@ begin
result:=false;
for i:=0 to length(_quellens)-1 do
_quellens[i].free;
- setlength(_quellens,0);
+ setLength(_quellens,0);
for i:=0 to length(_zieles)-1 do
_zieles[i].free;
- setlength(_zieles,0);
+ setLength(_zieles,0);
if length(quellenREs)=0 then exit;
tmpRE:=tRegExpr.create;
tmpQs:=tDateienMitDaten.create;
tmpQs.count:=length(quellenREs);
- setlength(idx,tmpQs.count);
+ setLength(idx,tmpQs.count);
for i:=0 to length(idx)-1 do begin
idx[i]:=-1;
tmpQs[i]:=nil;
@@ -552,7 +558,7 @@ begin
end;
if i<0 then break; // Überlauf auf -1 => fertig
- setlength(_quellens,length(_quellens)+1);
+ setLength(_quellens,length(_quellens)+1);
_quellens[length(_quellens)-1]:=tDateienMitDaten.create;
for i:=0 to tmpQs.count-1 do
_quellens[length(_quellens)-1].add(tmpQs[i]);
@@ -560,9 +566,9 @@ begin
tmpRE.free;
tmpQs.free;
- setlength(idx,0);
+ setLength(idx,0);
- setlength(_zieles,length(_quellens));
+ setLength(_zieles,length(_quellens));
for i:=0 to length(_zieles)-1 do begin
_zieles[i]:=tDateienMitDaten.create;
if findeMehrZiele(_zieles[i],_quellens[i]) then
@@ -585,7 +591,7 @@ begin
es.last.ziele.add(ziele[i][j]);
for j:=0 to befehleFkt.count-1 do begin
s:=befehleFkt[j];
- if quellersetzung(s,quellen[i],quellen[i].count) then
+ if quellErsetzung(s,quellen[i],quellen[i].count) then
es.last.befehle.add(s);
end;
if es.last.befehle.count=0 then
@@ -603,7 +609,7 @@ begin
s:=s+'/\s'+escape(quellen[i][j].name,'./','\')+'\$/d; ';
for j:=0 to ziele[i].count-1 do
s:=s+'/\s'+escape(ziele[i][j].name,'./','\')+'\$/d; ';
- s:=s+'" -i "'+_pruefsummenDatei+'"';
+ s:=s+'" -i "'+_pruefSummenDatei+'"';
es.last.befehle.add(s);
s:='sha512sum';
for j:=0 to quellen[i].count-1 do
@@ -614,7 +620,7 @@ begin
neuSums.uniq('-');
for j:=0 to neuSums.count-1 do
s:=s+' "'+escape(neuSums[j],'"\','\')+'"';
- s:=s+' >> '+_pruefsummenDatei;
+ s:=s+' >> '+_pruefSummenDatei;
es.last.befehle.add(s);
end;
end;
@@ -628,7 +634,7 @@ begin
inherited create;
quellen:=tDateienMitDaten.create;
ziele:=tDateienMitDaten.create;
- befehle:=tStringlist.create;
+ befehle:=tStringList.create;
end;
destructor tExpliziteAbhaengigkeit.destroy;
@@ -714,7 +720,7 @@ begin
machDatei:=pwd+'/';
while (machDatei<>'/') and not fileexists(machDatei+'Machdatei') do begin
delete(machDatei,length(machDatei),1);
- machDatei:=extractfilepath(machDatei);
+ machDatei:=extractFilePath(machDatei);
end;
machDatei:=machDatei+'Machdatei';
end;
@@ -724,14 +730,14 @@ begin
// pruefSummenDatei teilweise prüfen und setzen
if pruefSummenDatei='' then
- pruefSummenDatei:=extractfilepath(_machDatei)+'.summen';
- _pruefsummenDatei:=pruefSummenDatei;
+ pruefSummenDatei:=extractFilePath(_machDatei)+'.summen';
+ _pruefSummenDatei:=pruefSummenDatei;
// finale Prüfung / finales Einlesen
if not liesMachDatei then
fehler('Datei '''+_machDatei+''' ist fehlerhaft!');
if not liesPruefsummenfile then
- fehler('Datei '''+_pruefsummenDatei+''' ist fehlerhaft!');
+ fehler('Datei '''+_pruefSummenDatei+''' ist fehlerhaft!');
end;
destructor tMach.destroy;
@@ -746,7 +752,7 @@ begin
_dats.free;
for i:=0 to length(_ign)-1 do
_ign[i].free;
- setlength(_ign,0);
+ setLength(_ign,0);
inherited destroy;
end;
@@ -798,7 +804,7 @@ begin
if (wasWar=ztBefehl) and (wasIst<>ztBefehl) then begin
_oriAbh.add(na);
- na:=tGenerischeAbhaengigkeit.create(_dats,_machDatei,_pruefsummenDatei);
+ na:=tGenerischeAbhaengigkeit.create(_dats,_machDatei,_pruefSummenDatei);
end;
if s='%%DATEIENDE%%' then break;
@@ -807,7 +813,7 @@ begin
ztSuche: begin
allgemeineErsetzungen(s,_machDatei);
if startetMit('!',s) then begin
- setlength(_ign,length(_ign)+1);
+ setLength(_ign,length(_ign)+1);
_ign[length(_ign)-1]:=tRegExpr.create;
_ign[length(_ign)-1].expression:=s;
end
@@ -824,8 +830,8 @@ begin
end;
end;
ztBefehl: begin
- while unescapedpos(';',s)>0 do begin
- posi:=unescapedpos(';',s);
+ while unEscapedPos(';',s)>0 do begin
+ posi:=unEscapedPos(';',s);
s:=trim(leftStr(s,posi-1))+' && '+trim(rightStr(s,length(s)-posi));
end;
while pos(';;',s)>0 do
@@ -840,7 +846,7 @@ begin
na.zieleFkt.add(t);
end;
ztQuelle: begin
- setlength(na.quellenREs,length(na.quellenREs)+1);
+ setLength(na.quellenREs,length(na.quellenREs)+1);
na.quellenREs[length(na.quellenREs)-1]:=s;
end;
end{of case};
@@ -856,34 +862,34 @@ end;
function tMach.liesPruefsummenfile: boolean;
var
- f: textfile;
+ f: textFile;
i,j: longint;
- gutschlecht: tMyStringlistBArray;
+ gutSchlecht: tMyStringListBArray;
gefunden,gut: boolean;
begin
result:=false;
- if _pruefsummenDatei='' then begin
+ if _pruefSummenDatei='' then begin
gibAus('Fehler: Leerer Name als Summendatei angegeben!',3);
exit;
end;
- if not fileexists(_pruefsummenDatei) then begin
- assignfile(f,_pruefsummenDatei);
+ if not fileexists(_pruefSummenDatei) then begin
+ assignFile(f,_pruefSummenDatei);
rewrite(f);
- closefile(f);
+ closeFile(f);
end;
- if not fileexists(_pruefsummenDatei) then begin
- gibAus('Fehler: Ich bin nicht in der Lage, die bisher nicht existierende Datei '''+_pruefsummenDatei+''' anzulegen!',3);
+ if not fileexists(_pruefSummenDatei) then begin
+ gibAus('Fehler: Ich bin nicht in der Lage, die bisher nicht existierende Datei '''+_pruefSummenDatei+''' anzulegen!',3);
exit;
end;
- gutschlecht:=testeSummen(_pruefsummenDatei);
+ gutSchlecht:=testeSummen(_pruefSummenDatei);
for gut:=false to true do
- for i:=0 to gutschlecht[gut].count-1 do begin
+ for i:=0 to gutSchlecht[gut].count-1 do begin
gefunden:=false;
for j:=0 to _dats.count-1 do
- if _dats[j].name=gutschlecht[gut][i] then begin
+ if _dats[j].name=gutSchlecht[gut][i] then begin
if gut then
_dats[j].aktuell:=aAktuell
else
@@ -894,51 +900,51 @@ begin
if not gefunden then begin
if not gut then begin // dateien mit ungültiger Prüfsumme können auch nicht vorhanden sein,
_dats.add(tDateiMitDatum.create); // dann werden sie einfach eingefügt
- _dats.last.name:=gutschlecht[gut][i];
+ _dats.last.name:=gutSchlecht[gut][i];
_dats.last.aktuell:=aNichtVorhanden;
continue;
end;
- gibAus('Fehler: In der Summendatei gibt es eine Datei mit gültiger Prüfsumme, die ich nicht finden kann: '''+gutschlecht[gut][i]+'''!',3);
+ gibAus('Fehler: In der Summendatei gibt es eine Datei mit gültiger Prüfsumme, die ich nicht finden kann: '''+gutSchlecht[gut][i]+'''!',3);
for gefunden:=false to true do
- gutschlecht[gefunden].free;
+ gutSchlecht[gefunden].free;
exit;
end;
end;
for gefunden:=false to true do
- gutschlecht[gefunden].free;
+ gutSchlecht[gefunden].free;
result:=true;
end;
function tMach.sammleDateien(wo: string; rekursiv: boolean): longint;
var
- sr: tSearchRec;
+ sR: tSearchRec;
err,i: longint;
weglassen: boolean;
begin
result:=0;
- err:=FindFirst(wo,fareadOnly or faHidden or faSysFile or (byte(rekursiv)*faDirectory),sr);
+ err:=findFirst(wo,fareadOnly or faHidden or faSysFile or (byte(rekursiv)*faDirectory),sR);
while err=0 do begin
weglassen:=false;
for i:=0 to length(_ign)-1 do
- weglassen:=weglassen or _ign[i].exec(extractfilepath(wo)+sr.name);
+ weglassen:=weglassen or _ign[i].exec(extractFilePath(wo)+sR.name);
if not weglassen then begin
- if sr.attr and faDirectory <> 0 then begin
+ if sR.attr and faDirectory <> 0 then begin
if rekursiv and
- (sr.name<>'.') and
- (sr.name<>'..') then
- result:=result+sammleDateien(extractfilepath(wo)+sr.name+'/*',rekursiv);
+ (sR.name<>'.') and
+ (sR.name<>'..') then
+ result:=result+sammleDateien(extractFilePath(wo)+sR.name+'/*',rekursiv);
end
else begin
inc(result);
_dats.add(tDateiMitDatum.create);
- _dats.last.name:=extractfilepath(wo)+sr.name;
+ _dats.last.name:=extractFilePath(wo)+sR.name;
_dats.last.aktuell:=aVeraltet;
end;
end;
- err:=FindNext(sr);
+ err:=findNext(sR);
end;
- findClose(sr);
+ findClose(sR);
end;
procedure tMach.erzeugeRegeln;
@@ -965,7 +971,7 @@ var
neues: boolean;
zuTun: array of boolean;
begin
- setlength(zuTun,_mglAbh.count);
+ setLength(zuTun,_mglAbh.count);
for i:=0 to length(zuTun)-1 do
zuTun[i]:=false;
@@ -995,7 +1001,7 @@ begin
_mglAbh[i].free;
_mglAbh.delete(i);
end;
- setlength(zuTun,0);
+ setLength(zuTun,0);
// anzuwendende Regeln sortieren
_mglAbh.sort;
@@ -1004,25 +1010,25 @@ end;
procedure tMach.tueWasZuTunIst(unsicher: boolean; ausgabeDatei: string);
var
i,j: longint;
- ausg: textfile;
- befehle,alleDateien: tMyStringlist;
+ ausg: textFile;
+ befehle,alleDateien: tMyStringList;
lokTest: tRegExpr;
begin
- befehle:=tMyStringlist.create;
+ befehle:=tMyStringList.create;
for i:=0 to _mglAbh.count-1 do
for j:=0 to _mglAbh[i].befehle.count-1 do
befehle.add(_mglAbh[i].befehle[j]);
if not unsicher then begin
lokTest:=tRegExpr.create;
if (ausgabeDatei='') or
- (extractfilepath(ausgabeDatei)=extractfilepath(_pruefsummenDatei)) then
- lokTest.expression:=unterVerzeichnisRegex([_pruefsummenDatei])
+ (extractFilePath(ausgabeDatei)=extractFilePath(_pruefSummenDatei)) then
+ lokTest.expression:=unterVerzeichnisRegex([_pruefSummenDatei])
else
- lokTest.expression:=unterVerzeichnisRegex([ausgabeDatei,_pruefsummenDatei]);
+ lokTest.expression:=unterVerzeichnisRegex([ausgabeDatei,_pruefSummenDatei]);
alleDateien:=_dats.toMyStringList;
alleDateien.grep('^\.uralt\.$',true);
for i:=0 to befehle.count-1 do
- testeObBefehlLokal(befehle[i],extractfiledir(ausgabeDatei),alleDateien,lokTest);
+ testeObBefehlLokal(befehle[i],extractFileDir(ausgabeDatei),alleDateien,lokTest);
alleDateien.free;
lokTest.free;
end;
@@ -1072,7 +1078,7 @@ var
i: longint;
s,anfang,mitte: string;
begin
- s:=extractfilepath(machDatei);
+ s:=extractFilePath(machDatei);
if rightStr(s,1)='/' then
delete(s,length(s),1);
ersetzeAlleVorkommen(worin,'%DIRNAME%',s);