[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Lost] [PATCH] lpt: Ein bisschen mehr Fehlerbehandlung
+ lpt: Verstaendliche Fehlermeldung statt Unhandled Exception, wenn
Abhaengigkeiten nicht aufgeloest werden koennen oder die Paketliste
nicht eingelesen werden kann.
! lpt: Endlosschleife beseitigt, wenn eine pkglist.* zu einer Quelle
existiert, die in pkgsrc nicht aufgefuehrt wird.
Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
src/modules/pas/lpt/lpt.pas | 75 +++++++++++++++++++++++++------------------
1 files changed, 44 insertions(+), 31 deletions(-)
diff --git a/src/modules/pas/lpt/lpt.pas b/src/modules/pas/lpt/lpt.pas
index 56fe1d3..dec7a15 100644
--- a/src/modules/pas/lpt/lpt.pas
+++ b/src/modules/pas/lpt/lpt.pas
@@ -157,6 +157,37 @@ begin
Close(f);
end;
+procedure ReadPkglists(pkgset: TPackageSet);
+var
+ srec: SearchRec;
+ name: String;
+ repo: TRepository;
+begin
+ dos.FindFirst(configRoot + 'pkglist.*', 0, srec);
+ while DosError = 0 do begin
+ WriteLn('Lese Paketliste ein: ' + srec.name);
+
+ name := Copy(srec.name, length('pkglist.*'), length(srec.name));
+ repo := GetRepository(name);
+ if repo = nil then begin
+ TextColor(6);
+ WriteLn('Warnung: "', name, '" nicht in pkgsrc gefunden. Ueberspringe Quelle.');
+ TextColor(7);
+ end else begin
+ try
+ pkgset.ScanFile(configRoot + srec.name, repo.url);
+ except
+ on e: Exception do begin
+ TextColor(12);
+ WriteLn('Fehler beim Einlesen der Paketliste: ', e.message);
+ TextColor(7);
+ end;
+ end;
+ end;
+ dos.FindNext(srec);
+ end;
+end;
+
procedure Get(pkgname: String);
@@ -208,10 +239,8 @@ procedure Get(pkgname: String);
end;
var
- srec: SearchRec;
pkgset: TPackageSet;
section: String;
- repo: TRepository;
instset: TPackageSet;
pkg: TPackage;
@@ -222,20 +251,7 @@ begin
ReadPkgsrc(configRoot + 'pkgsrc');
pkgset := TPackageSet.create;
- dos.FindFirst(configRoot + 'pkglist.*', 0, srec);
- while DosError = 0 do begin
- WriteLn('Lese Paketliste ein: ' + srec.name);
-
- repo := GetRepository(Copy(srec.name, length('pkglist.*'), length(srec.name)));
- if repo = nil then begin
- WriteLn('Fehler: Nicht in pkgsrc gefunden. Ueberspringe Quelle.');
- continue;
- end;
-
- pkgset.ScanFile(configRoot + srec.name, repo.url);
- dos.FindNext(srec);
- end;
-
+ ReadPkglists(pkgset);
section := 'bin';
version := pkgset.GetCurrentVersion(pkgname, section);
@@ -249,7 +265,17 @@ begin
instset := TPackageSet.create();
instset.AddVersion(version);
- instset.AddDependencies(pkgset);
+ try
+ instset.AddDependencies(pkgset);
+ except
+ on e: EDependency do begin
+ TextColor(12);
+ WriteLn('Konnte die Abhaengigkeiten des Pakets nicht aufloesen:');
+ WriteLn(e.message);
+ TextColor(7);
+ exit;
+ end;
+ end;
for i := 0 to instset.packages.count - 1 do begin
pkg := TPackage(instset.packages.items[i]);
@@ -282,20 +308,7 @@ var
begin
ReadPkgsrc(configRoot + 'pkgsrc');
pkgset := TPackageSet.create;
-
- dos.FindFirst(configRoot + 'pkglist.*', 0, srec);
- while DosError = 0 do begin
- WriteLn('Lese Paketliste ein: ' + srec.name);
-
- repo := GetRepository(Copy(srec.name, length('pkglist.*'), length(srec.name)));
- if repo = nil then begin
- WriteLn('Fehler: Nicht in pkgsrc gefunden. Ueberspringe Quelle.');
- continue;
- end;
-
- pkgset.ScanFile(configRoot + srec.name, repo.url);
- dos.FindNext(srec);
- end;
+ ReadPkglists(pkgset);
for i := 0 to pkgset.packages.count - 1 do begin
pkg := TPackage(pkgset.packages.items[i]);
--
1.5.4.5