summaryrefslogtreecommitdiff
path: root/usr.sbin/pkg_add/OpenBSD/IdCache.pm
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/pkg_add/OpenBSD/IdCache.pm')
-rw-r--r--usr.sbin/pkg_add/OpenBSD/IdCache.pm38
1 files changed, 33 insertions, 5 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/IdCache.pm b/usr.sbin/pkg_add/OpenBSD/IdCache.pm
index 2c08f718c5c..be7cfcb5ea3 100644
--- a/usr.sbin/pkg_add/OpenBSD/IdCache.pm
+++ b/usr.sbin/pkg_add/OpenBSD/IdCache.pm
@@ -1,5 +1,5 @@
# ex:ts=8 sw=4:
-# $OpenBSD: IdCache.pm,v 1.1 2004/09/14 22:37:39 espie Exp $
+# $OpenBSD: IdCache.pm,v 1.2 2005/06/13 11:33:07 espie Exp $
#
# Copyright (c) 2002-2004 Marc Espie <espie@openbsd.org>
#
@@ -17,8 +17,8 @@
use strict;
use warnings;
-package OpenBSD::IdCache;
+package OpenBSD::SimpleIdCache;
sub new
{
my $class = shift;
@@ -30,9 +30,6 @@ sub lookup
my ($self, $name, $default) = @_;
my $r;
- if ($name =~ m/^\d+$/) {
- return $name;
- }
if (defined $self->{$name}) {
$r = $self->{$name};
} else {
@@ -45,6 +42,21 @@ sub lookup
return $r;
}
+
+package OpenBSD::IdCache;
+our @ISA=qw(OpenBSD::SimpleIdCache);
+
+sub lookup
+{
+ my ($self, $name, $default) = @_;
+
+ if ($name =~ m/^\d+$/) {
+ return $name;
+ } else {
+ return $self->SUPER::lookup($name, $default);
+ }
+}
+
package OpenBSD::UidCache;
our @ISA=qw(OpenBSD::IdCache);
@@ -63,4 +75,20 @@ sub convert
return @entry == 0 ? undef : $entry[2];
}
+package OpenBSD::UnameCache;
+our @ISA=qw(OpenBSD::SimpleIdCache);
+
+sub convert
+{
+ return getpwuid($_[1]);
+}
+
+package OpenBSD::GnameCache;
+our @ISA=qw(OpenBSD::SimpleIdCache);
+
+sub convert
+{
+ return getgrgid($_[1]);
+}
+
1;