[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [tyndur-devel] [PATCH] + lpt: Unterstützung für Repositorybau aus lokalen Files
Am Donnerstag, 14. Mai 2009 18:51 schrieb Alexander Siol:
> ---
> trunk/src/modules/pas/lpt/packages.pas | 58
> +++++++++++++++++++++++++++++++- 1 files changed, 57 insertions(+), 1
> deletions(-)
>
> diff --git a/trunk/src/modules/pas/lpt/packages.pas
> b/trunk/src/modules/pas/lpt/packages.pas index 67ca831..9ae8302 100644
> --- a/trunk/src/modules/pas/lpt/packages.pas
> +++ b/trunk/src/modules/pas/lpt/packages.pas
> @@ -2,7 +2,7 @@ unit packages;
> {$MODE ObjFPC}
>
> interface
> -uses sysutils, classes, repositories;
> +uses sysutils, classes, repositories, tar;
>
> type
> EPackageFileFormat = class(Exception) end;
> @@ -24,6 +24,7 @@ type
> destructor destroy; override;
>
> procedure ScanFile(filename: String; repository: TRepository);
> + procedure ScanPackage(filename: String; repository:
> TRepository); function add(name: String): TPackage;
> procedure AddAll(pkgset: TPackageSet);
> procedure AddVersion(ver: TPackageVersion);
> @@ -182,6 +183,61 @@ begin
> end;
> end;
>
> +procedure TPackageSet.ScanPackage(filename: String; repository:
> TRepository); +var
> + package: TTarArchive;
> + line: String;
> + i: integer;
> + size: integer;
> +
> + package_file: ^String;
> + package_file_string: String;
> + pkg_name, pkg_version, pkg_section, pkg_arch: String;
> +
> + packageinfo_data: PChar;
> +
> + pkg: TPackage;
> + section: TPackageSection;
> + version: TPackageVersion;
> +begin
> + package := TTarArchive.create(filename);
> + while package.hasNext do begin
> + line := package.nextFilename;
> + size := package.nextSize;
> + i := Pos('packageinfo', line);
Du solltest wenigstens noch schauen, ob sich das packageinfo am Ende befindet.
Eigentlich würde ich sogar den kompletten Pfad vergleichen wir wollen ja
nicht die falsche Datei erwischen.
> + if i > 0 then begin
> + package_file_string := package.ExtractString();
> + i := Pos(#10, package_file_string);
> + pkg_name := Copy(package_file_string, 1, i - 1);
> + package_file_string :=
> + Copy(package_file_string, i + 1,
> Length(package_file_string)); + i := Pos(#10,
> package_file_string);
> + pkg_version := Copy(package_file_string, 1, i - 1);
> + package_file_string :=
> + Copy(package_file_string, i + 1,
> Length(package_file_string)); + i := Pos(#10,
> package_file_string);
> + pkg_section := Copy(package_file_string, 1, i - 1);
> + package_file_string :=
> + Copy(package_file_string, i + 1,
> Length(package_file_string)); + i := Pos(#10,
> package_file_string);
> + pkg_arch := Copy(package_file_string, 1, i - 1);
> + package_file_string :=
> + Copy(package_file_string, i + 1,
> Length(package_file_string));
Leerzeilen und Kommentare sind tolle Erfindungen.
> + pkg := self.add(pkg_name);
> + pkg.desc := 'none (local file)';
Das sollte deutsch sein
> + section := pkg.add(pkg_section);
> + version := section.add(pkg_version);
> + version.pkg := pkg;
> + version.section := section;
> + version.repository := repository;
> + end else begin
> + package.skipFile();
> + end;
> + end;
> + package.destroy();
> + WriteLn('finished scanpackage');
Übriggebliebene Debugmeldung?