[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [tyndur-devel] [PATCH 3/9] lpt: pkglist-Format fuer Paketinformationen verwenden
On Sun, Dec 13, 2009 at 06:31:38PM +0100, Antoine Kaufmann wrote:
> * lpt: pkglist-Format fuer Paketinformationen verwenden
>
> Signed-off-by: Antoine Kaufmann <toni@xxxxxxxxxx>
> ---
> src/modules/pas/lpt/lang/lang_en.c | 4 --
> src/modules/pas/lpt/lang/resstr.h | 1 -
> src/modules/pas/lpt/repository_single.pas | 52 +++++++---------------------
> 3 files changed, 13 insertions(+), 44 deletions(-)
>
> diff --git a/src/modules/pas/lpt/lang/lang_en.c b/src/modules/pas/lpt/lang/lang_en.c
> index 177089f..74d7c1d 100644
> --- a/src/modules/pas/lpt/lang/lang_en.c
> +++ b/src/modules/pas/lpt/lang/lang_en.c
> @@ -132,10 +132,6 @@ static const struct tms_strings dict[] = {
> &RESSTR_REPOSITORY_HTTP_RSDOWNLOADINGPKGLIST,
> "Downloading package list %s from %s",
>
> - // Keine (lokale Datei)
> - &RESSTR_REPOSITORY_SINGLE_RSLOCALPKGDESC,
> - "None (local file)",
> -
> 0,
> 0,
> };
> diff --git a/src/modules/pas/lpt/lang/resstr.h b/src/modules/pas/lpt/lang/resstr.h
> index 3ddace7..7b9b3ca 100644
> --- a/src/modules/pas/lpt/lang/resstr.h
> +++ b/src/modules/pas/lpt/lang/resstr.h
> @@ -52,6 +52,5 @@ extern void* RESSTR_REPOSITORIES_RSUNKNOWNREPOTYPE;
> extern void* RESSTR_REPOSITORIES_RSINVALIDPKGSRC;
> extern void* RESSTR_REPOSITORY_BASE_RSNOPACKAGELIST;
> extern void* RESSTR_REPOSITORY_HTTP_RSDOWNLOADINGPKGLIST;
> -extern void* RESSTR_REPOSITORY_SINGLE_RSLOCALPKGDESC;
>
> #endif
> diff --git a/src/modules/pas/lpt/repository_single.pas b/src/modules/pas/lpt/repository_single.pas
> index 8ab1e2b..d1f100c 100644
> --- a/src/modules/pas/lpt/repository_single.pas
> +++ b/src/modules/pas/lpt/repository_single.pas
> @@ -2,7 +2,7 @@ unit repository_single;
> {$MODE ObjFPC}
>
> interface
> -uses sysutils, classes, tar, packages, helpers, repository_base;
> +uses sysutils, classes, tar, packages, helpers, repository_base, pkglist;
>
> type
> TSFRepository = class(TRepository)
> @@ -16,9 +16,6 @@ type
>
> implementation
>
> -resourcestring
> - rsLocalPkgDesc = 'Keine (lokale Datei)';
> -
> constructor TSFRepository.create(parent : TCollection);
> begin
> inherited;
> @@ -49,56 +46,33 @@ var
> package: TTarArchive;
> line: String;
> i: integer;
> - size: integer;
>
> package_file_string: String;
> - pkg_name, pkg_version, pkg_section, pkg_arch: String;
>
> + plp: TPkglistParser;
> pkg: TPackage;
> section: TPackageSection;
> version: TPackageVersion;
> begin
> + plp := TPkglistParser.create(pkgset);
Ich glaube, das wird schon wieder geleakt
> package := TTarArchive.create(self.url);
> while package.hasNext do begin
> line := package.nextFilename;
> - size := package.nextSize;
> i := Pos('packageinfo', line);
> - if i > 0 then begin
> + if (i > 0) then begin
Ich bin von der Notwendigkeit dieser Änderung nicht hundertprozentig
überzeugt. ;-)
> (* Metadaten laden *)
> package_file_string := package.ExtractString();
>
> - (* Newline-getrennte Infos auslesen. *)
> - (* In Reihenfolge: Name, Version, Sektion, Architektur *)
> - 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));
> + while Length(package_file_string) > 0 do begin
> + i := Pos(#10, package_file_string);
> + if i <= 0 then begin
> + i := Length(package_file_string);
> + end;
Wenn die Datei mal nicht mit einem Zeilenumbruch aufhören würde,
schneiden wir mit i := length unten das letzte Zeichen ab, oder?
>
> - (* Pr??fen ob Metadaten zu Paket passen *)
> - if (line = 'packages/'+pkg_name+'/'+pkg_version+'/packageinfo-'+pkg_section) then begin
> - pkg := pkgset.add(pkg_name);
> - pkg.desc := rsLocalPkgDesc;
> - section := pkg.add(pkg_section);
> - version := section.add(pkg_version);
> - version.pkg := pkg;
> - version.section := section;
> - version.repository := self.name;
> - break;
> + line := Copy(package_file_string, 1, i - 1);
> + plp.ProcessLine(line, self.name);
> + package_file_string := Copy(package_file_string, i + 1,
> + Length(package_file_string));
> end;
> end else begin
> package.skipFile();
> --
> 1.6.3.3
>
> _______________________________________________
> tyndur-devel mailing list
> tyndur-devel@xxxxxxxxxx
> http://list.tyndur.org/mailman/listinfo/tyndur-devel