[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[tyndur-devel] [PATCH 5/9] lpt: Hilfsfunktion FindInstalledPackages



+ lpt: Hilfsfunktion FindInstalledPackages die alle momentan
       installierten Pakete zusammensucht.

Signed-off-by: Antoine Kaufmann <toni@xxxxxxxxxx>
---
 src/modules/pas/lpt/helpers.pas |   43 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/src/modules/pas/lpt/helpers.pas b/src/modules/pas/lpt/helpers.pas
index 67b02ed..b8b4cee 100644
--- a/src/modules/pas/lpt/helpers.pas
+++ b/src/modules/pas/lpt/helpers.pas
@@ -16,6 +16,13 @@ procedure Untar(tar: TTarArchive; targetpath: String = 'file:/');
 function getArch: String;
 procedure mkpath(path: string);
 
+(**
+ * Installierte Pakete im Paketset pkgset eintragen
+ *
+ * @param pkgset Set in dem die installierten Pakete eingetragen werden
+ *)
+procedure FindInstalledPackages(pkgset: TPackageSet);
+
 implementation
 
 resourcestring
@@ -166,5 +173,41 @@ begin
     Untar(tar, targetpath);
 end;
 
+(**
+ * Installierte Pakete im Paketset pkgset eintragen
+ *
+ * @param pkgset Set in dem die installierten Pakete eingetragen werden
+ *)
+procedure FindInstalledPackages(pkgset: TPackageSet);
+var
+    prec, vrec, irec: Searchrec;
+    path, pname, pver, pinfo: String;
+begin
+    DosError := 0;
+    dos.FindFirst('file:/packages/*', Directory, prec);
+    while DosError = 0 do begin
+        pname := 'file:/packages/' + prec.name;
+
+        dos.FindFirst(pname + '/*', Directory, vrec);
+        while DosError = 0 do begin
+            pver := pname + '/' + vrec.name;
+
+            dos.FindFirst(pver + '/packageinfo*', Directory, irec);
+            while DosError = 0 do begin
+                pinfo := pver + '/' + irec.name;
+                ScanFile(pkgset, pinfo, '');
+                dos.FindNext(irec);
+            end;
+            dos.FindClose(irec);
+            DosError := 0;
+            dos.FindNext(vrec);
+        end;
+        dos.FindClose(vrec);
+        DosError := 0;
+        dos.FindNext(prec);
+    end;
+    dos.FindClose(prec);
+end;
+
 begin
 end.
-- 
1.6.3.3