summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorespie <espie@openbsd.org>2004-02-21 19:15:40 +0000
committerespie <espie@openbsd.org>2004-02-21 19:15:40 +0000
commit43d7fa8dee1d258c3b41ef1b320b286276c1ac5b (patch)
tree3d1bfc660aa68dec38b764071a967b32d5cdc369
parentFirst regression test for pkg_add, checking packages-specs lists. (diff)
downloadwireguard-openbsd-43d7fa8dee1d258c3b41ef1b320b286276c1ac5b.tar.xz
wireguard-openbsd-43d7fa8dee1d258c3b41ef1b320b286276c1ac5b.zip
distinguish between unreadable directories and non packages.
problem found by John L. Scarfone, who runs a paranoid root.
-rw-r--r--usr.sbin/pkg_add/OpenBSD/PackageInfo.pm12
1 files changed, 10 insertions, 2 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/PackageInfo.pm b/usr.sbin/pkg_add/OpenBSD/PackageInfo.pm
index ae99bf292bd..a62662b7632 100644
--- a/usr.sbin/pkg_add/OpenBSD/PackageInfo.pm
+++ b/usr.sbin/pkg_add/OpenBSD/PackageInfo.pm
@@ -1,4 +1,4 @@
-# $OpenBSD: PackageInfo.pm,v 1.5 2004/01/27 00:14:42 espie Exp $
+# $OpenBSD: PackageInfo.pm,v 1.6 2004/02/21 19:15:40 espie Exp $
#
# Copyright (c) 2003 Marc Espie.
#
@@ -81,18 +81,26 @@ sub installed_packages()
{
if (!defined $list) {
$list = {};
+ my @bad=();
opendir(my $dir, $pkg_db) or die "Bad pkg_db: $!";
while (my $e = readdir($dir)) {
next if $e eq '.' or $e eq '..';
next unless -d "$pkg_db/$e";
+ if (! -r _) {
+ push(@bad, $e);
+ next;
+ }
if (-f "$pkg_db/$e/+CONTENTS") {
$list->{$e} = 1;
} else {
- print "Warning: $e is not really a package";
+ print "Warning: $e is not really a package\n";
}
}
close($dir);
+ if (@bad > 0) {
+ print "Warning: can't access information for ", join(", ", @bad), "\n";
+ }
}
return keys %$list;
}