diff options
author | 2009-04-19 15:18:23 +0000 | |
---|---|---|
committer | 2009-04-19 15:18:23 +0000 | |
commit | 461b2904cecfef51224d881d6d7396c14ea0a6ae (patch) | |
tree | 7bcb067f5065ec6baac037a186248d281293361f | |
parent | Fix interrupt mapping for devices behind PCI-PCI bridges. (diff) | |
download | wireguard-openbsd-461b2904cecfef51224d881d6d7396c14ea0a6ae.tar.xz wireguard-openbsd-461b2904cecfef51224d881d6d7396c14ea0a6ae.zip |
remove class FatPackageLocation. Instead make PackageLocation a hierarchy
so that I can handle installed packages without playing ping-pong with
the PackageRepository hierarchy (mostly)
-rw-r--r-- | usr.sbin/pkg_add/OpenBSD/PackageLocation.pm | 56 | ||||
-rw-r--r-- | usr.sbin/pkg_add/OpenBSD/PackageRepository.pm | 6 | ||||
-rw-r--r-- | usr.sbin/pkg_add/OpenBSD/PackageRepository/Installed.pm | 41 | ||||
-rw-r--r-- | usr.sbin/pkg_add/OpenBSD/Search.pm | 4 |
4 files changed, 49 insertions, 58 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/PackageLocation.pm b/usr.sbin/pkg_add/OpenBSD/PackageLocation.pm index f58c05cf844..edf77c7c328 100644 --- a/usr.sbin/pkg_add/OpenBSD/PackageLocation.pm +++ b/usr.sbin/pkg_add/OpenBSD/PackageLocation.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: PackageLocation.pm,v 1.16 2009/04/19 14:58:32 espie Exp $ +# $OpenBSD: PackageLocation.pm,v 1.17 2009/04/19 15:18:23 espie Exp $ # # Copyright (c) 2003-2007 Marc Espie <espie@openbsd.org> # @@ -143,7 +143,6 @@ sub find_fat_contents if ($plist->has('arch')) { if ($plist->{arch}->check($self->{arch})) { $self->{filter} = $prefix; - bless $self, "OpenBSD::FatPackageLocation"; return $contents; } } @@ -164,7 +163,7 @@ sub contents return $self->{contents}; } -sub grabInfoFiles +sub grab_info { my $self = shift; my $dir = $self->{dir} = OpenBSD::Temp->dir; @@ -223,7 +222,7 @@ sub info my $self = shift; if (!defined $self->{dir}) { - $self->{repository}->grab_info($self); + $self->grab_info; } return $self->{dir}; } @@ -231,13 +230,6 @@ sub info sub plist { my ($self, $code) = @_; - $self->{repository}->get_plist($self, $code); -} - -sub _plist -{ - my ($self, $code) = @_; - require OpenBSD::PackingList; if (defined $self->{dir} && -f $self->{dir}.CONTENTS) { @@ -331,7 +323,20 @@ sub getNext { my $self = shift; - return $self->{_archive}->next; + my $e = $self->{_archive}->next; + if (defined $self->{filter}) { + if ($e->{name} =~ m/^(.*?)\/(.*)$/o) { + my ($beg, $name) = ($1, $2); + if (index($beg, $self->{filter}) == -1) { + return $self->getNext; + } + $e->{name} = $name; + if ($e->isHardLink) { + $e->{linkname} =~ s/^(.*?)\///o; + } + } + } + return $e; } sub skip @@ -340,25 +345,22 @@ sub skip return $self->{_archive}->skip; } -package OpenBSD::FatPackageLocation; -our @ISA=qw(OpenBSD::PackageLocation); +package OpenBSD::PackageLocation::Installed; +our @ISA = qw(OpenBSD::PackageLocation); -sub getNext + +sub info { my $self = shift; + require OpenBSD::PackageInfo; + $self->{dir} = OpenBSD::PackageInfo::installed_info($self->name); +} - my $e = $self->SUPER::getNext; - if ($e->{name} =~ m/^(.*?)\/(.*)$/o) { - my ($beg, $name) = ($1, $2); - if (index($beg, $self->{filter}) == -1) { - return $self->next; - } - $e->{name} = $name; - if ($e->isHardLink) { - $e->{linkname} =~ s/^(.*?)\///o; - } - } - return $e; +sub plist +{ + my ($self, $code) = @_; + require OpenBSD::PackingList; + return OpenBSD::PackingList->from_installation($self->name, $code); } 1; diff --git a/usr.sbin/pkg_add/OpenBSD/PackageRepository.pm b/usr.sbin/pkg_add/OpenBSD/PackageRepository.pm index 796e6260861..d94953d8509 100644 --- a/usr.sbin/pkg_add/OpenBSD/PackageRepository.pm +++ b/usr.sbin/pkg_add/OpenBSD/PackageRepository.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: PackageRepository.pm,v 1.63 2009/04/19 14:58:32 espie Exp $ +# $OpenBSD: PackageRepository.pm,v 1.64 2009/04/19 15:18:23 espie Exp $ # # Copyright (c) 2003-2007 Marc Espie <espie@openbsd.org> # @@ -229,7 +229,7 @@ sub open sub find { my ($repository, $name, $arch) = @_; - my $self = OpenBSD::PackageLocation->new($repository, $name, $arch); + my $self = $repository->new_location($name, $arch); if ($self->contents) { return $self; @@ -239,7 +239,7 @@ sub find sub grabPlist { my ($repository, $name, $arch, $code) = @_; - my $self = OpenBSD::PackageLocation->new($repository, $name, $arch); + my $self = $repository->new_location($name, $arch); return $self->grabPlist($code); } diff --git a/usr.sbin/pkg_add/OpenBSD/PackageRepository/Installed.pm b/usr.sbin/pkg_add/OpenBSD/PackageRepository/Installed.pm index ff926d516a8..b2addb1e63b 100644 --- a/usr.sbin/pkg_add/OpenBSD/PackageRepository/Installed.pm +++ b/usr.sbin/pkg_add/OpenBSD/PackageRepository/Installed.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: Installed.pm,v 1.13 2009/04/19 14:58:32 espie Exp $ +# $OpenBSD: Installed.pm,v 1.14 2009/04/19 15:18:23 espie Exp $ # # Copyright (c) 2007 Marc Espie <espie@openbsd.org> # @@ -88,6 +88,16 @@ sub canonicalize return $name; } +sub new_location +{ + my ($self, @args) = @_; + + return $self->locationClassName->new($self, @args); +} + +sub locationClassName +{ "OpenBSD::PackageLocation" } + sub locations_list { my $self = shift; @@ -96,24 +106,13 @@ sub locations_list require OpenBSD::PackageLocation; for my $name (@{$self->list}) { - push @$l, OpenBSD::PackageLocation->new($self, $name); + push @$l, $self->new_location($name); } $self->{locations} = $l; } return $self->{locations}; } -sub grab_info -{ - my ($repository, $location) = @_; - $location->grabInfoFiles; -} - -sub get_plist -{ - my ($repository, $location, $code) = @_; - $location->_plist($code); -} package OpenBSD::PackageRepository::Installed; our @ISA = (qw(OpenBSD::PackageRepositoryBase)); @@ -158,24 +157,14 @@ sub find if (is_installed($name)) { require OpenBSD::PackageLocation; - $self = OpenBSD::PackageLocation->new($repository, $name); + $self = $repository->new_location($name); $self->{dir} = installed_info($name); } return $self; } -sub grab_info -{ - my ($repository, $location) = @_; - $location->{dir} = installed_info($location->name); -} - -sub get_plist -{ - my ($repository, $location, $code) = @_; - require OpenBSD::PackingList; - return OpenBSD::PackingList->from_installation($location->name, $code); -} +sub locationClassName +{ "OpenBSD::PackageLocation::Installed" } sub grabPlist { diff --git a/usr.sbin/pkg_add/OpenBSD/Search.pm b/usr.sbin/pkg_add/OpenBSD/Search.pm index 3a5137911d6..feda52db719 100644 --- a/usr.sbin/pkg_add/OpenBSD/Search.pm +++ b/usr.sbin/pkg_add/OpenBSD/Search.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: Search.pm,v 1.9 2009/04/19 14:58:32 espie Exp $ +# $OpenBSD: Search.pm,v 1.10 2009/04/19 15:18:23 espie Exp $ # # Copyright (c) 2007 Marc Espie <espie@openbsd.org> # @@ -21,7 +21,7 @@ sub match_locations my ($self, $o) = @_; require OpenBSD::PackageLocation; - my @l = map {OpenBSD::PackageLocation->new($o, $_)} $self->match($o); + my @l = map {$o->new_location($_)} $self->match($o); return \@l; } |