diff options
author | Marc Espie <espie@cvs.openbsd.org> | 2005-10-19 10:41:20 +0000 |
---|---|---|
committer | Marc Espie <espie@cvs.openbsd.org> | 2005-10-19 10:41:20 +0000 |
commit | 600c195b61888ec0dd2f50ed8231ac363e97e24c (patch) | |
tree | 13789a358398d9fe95ef87d24f0ed5ab72f69b5d | |
parent | b79f89b4549b69f0f486aca1b268f78d40e64ad0 (diff) |
mark links being extracted with `zap', so that they do not get recorded
into partial plists until they've gone through an actual install.
Prevents partial replacements from destroying genuine links in packages
when they get uninstalled.
-rw-r--r-- | usr.sbin/pkg_add/OpenBSD/Add.pm | 4 | ||||
-rw-r--r-- | usr.sbin/pkg_add/OpenBSD/PackingElement.pm | 3 | ||||
-rw-r--r-- | usr.sbin/pkg_add/OpenBSD/Update.pm | 3 |
3 files changed, 7 insertions, 3 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/Add.pm b/usr.sbin/pkg_add/OpenBSD/Add.pm index e3bf3bf536c..98f0b159fbc 100644 --- a/usr.sbin/pkg_add/OpenBSD/Add.pm +++ b/usr.sbin/pkg_add/OpenBSD/Add.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: Add.pm,v 1.42 2005/09/24 12:52:19 espie Exp $ +# $OpenBSD: Add.pm,v 1.43 2005/10/19 10:41:19 espie Exp $ # # Copyright (c) 2003-2004 Marc Espie <espie@openbsd.org> # @@ -332,8 +332,10 @@ sub install File::Path::mkpath(dirname($destdir.$fullname)); if (defined $self->{link}) { link($destdir.$self->{link}, $destdir.$fullname); + delete $self->{zap}; } elsif (defined $self->{symlink}) { symlink($self->{symlink}, $destdir.$fullname); + delete $self->{zap}; } else { rename($self->{tempname}, $destdir.$fullname) or Fatal "Can't move ", $self->{tempname}, " to $fullname: $!"; diff --git a/usr.sbin/pkg_add/OpenBSD/PackingElement.pm b/usr.sbin/pkg_add/OpenBSD/PackingElement.pm index 0ee0f853ac7..c8b0287e159 100644 --- a/usr.sbin/pkg_add/OpenBSD/PackingElement.pm +++ b/usr.sbin/pkg_add/OpenBSD/PackingElement.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: PackingElement.pm,v 1.78 2005/09/04 22:47:56 espie Exp $ +# $OpenBSD: PackingElement.pm,v 1.79 2005/10/19 10:41:19 espie Exp $ # # Copyright (c) 2003-2004 Marc Espie <espie@openbsd.org> # @@ -261,6 +261,7 @@ use File::Basename; sub write { my ($self, $fh) = @_; + return if defined $self->{zap}; print $fh "\@ignore\n" if defined $self->{ignore}; print $fh "\@comment no checksum\n" if defined $self->{nochecksum}; $self->SUPER::write($fh); diff --git a/usr.sbin/pkg_add/OpenBSD/Update.pm b/usr.sbin/pkg_add/OpenBSD/Update.pm index 9db13adf5fe..4238434e4c3 100644 --- a/usr.sbin/pkg_add/OpenBSD/Update.pm +++ b/usr.sbin/pkg_add/OpenBSD/Update.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: Update.pm,v 1.57 2005/09/09 09:11:38 espie Exp $ +# $OpenBSD: Update.pm,v 1.58 2005/10/19 10:41:19 espie Exp $ # # Copyright (c) 2004 Marc Espie <espie@openbsd.org> # @@ -62,6 +62,7 @@ sub extract my $file = $self->prepare_to_extract($state); if (defined $self->{link} || defined $self->{symlink}) { + $self->{zap} = 1; return; } |