diff options
author | SADA Kenji <sada@FreeBSD.org> | 2001-04-23 17:27:50 +0000 |
---|---|---|
committer | SADA Kenji <sada@FreeBSD.org> | 2001-04-23 17:27:50 +0000 |
commit | f401541c9bc33d747573f3c92bb7db726358ffcb (patch) | |
tree | 888e15b74605ff9b3a1afc01cdb40f0d29b15562 /ports-mgmt/pkg_remove/src/pkg_remove.txt | |
parent | ce8986810e8d67f148d5e33b8aa8648da056e841 (diff) |
Notes
Diffstat (limited to 'ports-mgmt/pkg_remove/src/pkg_remove.txt')
-rw-r--r-- | ports-mgmt/pkg_remove/src/pkg_remove.txt | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/ports-mgmt/pkg_remove/src/pkg_remove.txt b/ports-mgmt/pkg_remove/src/pkg_remove.txt new file mode 100644 index 000000000000..f45f81c7bfff --- /dev/null +++ b/ports-mgmt/pkg_remove/src/pkg_remove.txt @@ -0,0 +1,34 @@ +#!/usr/bin/perl +# $Id: pkg_remove,v 1.3 1999/11/06 15:47:49 sada Exp $ +use Getopt::Std; +getopts('n'); +die("usage: x [-n] ALL | <package-name> [, <package-name> [..]]\n -n : only tell what will take place.\n") if (@ARGV < 1); +$pkg_dbdir = "/var/db/pkg"; +opendir(PKG_DBDIR, $pkg_dbdir); +while ($pkg = readdir(PKG_DBDIR)) { + next if $pkg =~ m/^\./; + $req_by{$pkg} = ''; + if (-f "$pkg_dbdir/$pkg/+REQUIRED_BY") { + open(REQ_B, "$pkg_dbdir/$pkg/+REQUIRED_BY"); + $req_by{$pkg} = join('', <REQ_B>); + } +} +while ($a = shift) { + while (($key, $val) = each(%req_by)) { + if ($a eq 'ALL' || $key =~ m/$a/) { + &remove_package($key); + } + } +} + +sub remove_package +{ + my ($pkg) = @_; + return if ($pkg_removed{$pkg}); + my @r = split(/\n/, $req_by{$pkg}); + my $p; + &remove_package($p) while $p = shift(@r); + print "remove: $pkg\n"; + system "pkg_delete $pkg" unless ($opt_n); + $pkg_removed{$pkg} = 'YES'; +} |