diff options
author | Marc Espie <espie@cvs.openbsd.org> | 2003-10-16 17:43:35 +0000 |
---|---|---|
committer | Marc Espie <espie@cvs.openbsd.org> | 2003-10-16 17:43:35 +0000 |
commit | f590f7679f0eb9b733faf2b7287dc4c6f250cdac (patch) | |
tree | 0782149036d61c04d496ff0698bf4e86ff8cc633 /usr.sbin/pkg_add/OpenBSD/PkgCfl.pm | |
parent | b3fb36e241c10f88ff39c1fde2c2f0bfea706bea (diff) |
new import of my pkgtools, after a slight naming disagreement with the
Upper Management...
Diffstat (limited to 'usr.sbin/pkg_add/OpenBSD/PkgCfl.pm')
-rw-r--r-- | usr.sbin/pkg_add/OpenBSD/PkgCfl.pm | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/PkgCfl.pm b/usr.sbin/pkg_add/OpenBSD/PkgCfl.pm new file mode 100644 index 00000000000..a101e635b0f --- /dev/null +++ b/usr.sbin/pkg_add/OpenBSD/PkgCfl.pm @@ -0,0 +1,68 @@ +# $OpenBSD: PkgCfl.pm,v 1.1 2003/10/16 17:43:34 espie Exp $ +# +# Copyright (c) 2003 Marc Espie. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE OPENBSD PROJECT AND CONTRIBUTORS +# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBSD +# PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +use strict; +use warnings; +package OpenBSD::PkgCfl; + +sub glob2re +{ + local $_ = shift; + s/\./\\\./g; + s/\+/\\\+/g; + s/\*/\.\*/g; + s/\?/\./g; + return "^$_\$"; +} + +sub make_conflict_list($) +{ + my ($class, $plist) = @_; + my $l = []; + + unless (defined $plist->{'no-default-conflict'}) { + my $stem = (OpenBSD::PackageName::splitname$plist->pkgname())[0]; + push(@$l, "^\Q$stem\E-\\d.*\$"); + } + if (defined $plist->{pkgcfl}) { + for my $cfl (@{$plist->{pkgcfl}}) { + push(@$l, glob2re($cfl->{name})); + } + } + bless $l, $class; +} + +sub conflicts_with +{ + my ($self, @pkgnames) = @_; + for my $cfl (@$self) { + if (grep { m/$cfl/ } @pkgnames) { + return 1; + } + } + return 0; +} + +1; |