diff options
author | Marc Espie <espie@cvs.openbsd.org> | 2004-09-14 22:37:40 +0000 |
---|---|---|
committer | Marc Espie <espie@cvs.openbsd.org> | 2004-09-14 22:37:40 +0000 |
commit | 42e8bc08ea68842ad185d74883a71ac1cf0b1433 (patch) | |
tree | 77dd990b3fb73d71ab2edb1711915cff22df77ac | |
parent | 5eede9cf2076852961aca14c18bbe8a2fe810e3e (diff) |
IdCache module, that deals with uid/gid caches.
-rw-r--r-- | usr.sbin/pkg_add/Makefile | 3 | ||||
-rw-r--r-- | usr.sbin/pkg_add/OpenBSD/IdCache.pm | 66 |
2 files changed, 68 insertions, 1 deletions
diff --git a/usr.sbin/pkg_add/Makefile b/usr.sbin/pkg_add/Makefile index d40e6954ac9..2b70c09b96f 100644 --- a/usr.sbin/pkg_add/Makefile +++ b/usr.sbin/pkg_add/Makefile @@ -1,8 +1,9 @@ -# $OpenBSD: Makefile,v 1.7 2004/09/14 22:35:23 espie Exp $ +# $OpenBSD: Makefile,v 1.8 2004/09/14 22:37:39 espie Exp $ MAN=pkg_add.1 pkg_info.1 pkg_create.1 pkg_delete.1 pkg.1 PACKAGES= \ + OpenBSD/IdCache.pm \ OpenBSD/Logger.pm \ OpenBSD/Mtree.pm \ OpenBSD/PackageInfo.pm \ diff --git a/usr.sbin/pkg_add/OpenBSD/IdCache.pm b/usr.sbin/pkg_add/OpenBSD/IdCache.pm new file mode 100644 index 00000000000..2c08f718c5c --- /dev/null +++ b/usr.sbin/pkg_add/OpenBSD/IdCache.pm @@ -0,0 +1,66 @@ +# ex:ts=8 sw=4: +# $OpenBSD: IdCache.pm,v 1.1 2004/09/14 22:37:39 espie Exp $ +# +# Copyright (c) 2002-2004 Marc Espie <espie@openbsd.org> +# +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# + +use strict; +use warnings; +package OpenBSD::IdCache; + +sub new +{ + my $class = shift; + bless {}, $class; +} + +sub lookup +{ + my ($self, $name, $default) = @_; + my $r; + + if ($name =~ m/^\d+$/) { + return $name; + } + if (defined $self->{$name}) { + $r = $self->{$name}; + } else { + $r = $self->convert($name); + if (!defined $r) { + $r = $default; + } + $self->{$name} = $r; + } + return $r; +} + +package OpenBSD::UidCache; +our @ISA=qw(OpenBSD::IdCache); + +sub convert +{ + my @entry = getpwnam($_[1]); + return @entry == 0 ? undef : $entry[2]; +} + +package OpenBSD::GidCache; +our @ISA=qw(OpenBSD::IdCache); + +sub convert +{ + my @entry = getgrnam($_[1]); + return @entry == 0 ? undef : $entry[2]; +} + +1; |