summaryrefslogtreecommitdiff
path: root/usr.sbin
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/pkg_add/OpenBSD/Add.pm39
1 files changed, 20 insertions, 19 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/Add.pm b/usr.sbin/pkg_add/OpenBSD/Add.pm
index d73dd244b6f..a17cf453e8f 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.167 2015/05/18 18:17:27 espie Exp $
+# $OpenBSD: Add.pm,v 1.168 2015/05/18 18:25:13 espie Exp $
#
# Copyright (c) 2003-2014 Marc Espie <espie@openbsd.org>
#
@@ -484,6 +484,21 @@ sub prepare_to_extract
$file->{destdir} = $destdir;
}
+sub create_temp
+{
+ my ($self, $d, $state, $fullname) = @_;
+ if (!-e _) {
+ File::Path::mkpath($d);
+ }
+ my ($fh, $tempname) = OpenBSD::Temp::permanent_file($d, "pkg");
+ if (!defined $tempname) {
+ $state->fatal("create temporary file in #1: #2",
+ $d, $!);
+ }
+ $self->{tempname} = $tempname;
+ return ($fh, $tempname);
+}
+
sub tie
{
my ($self, $state) = @_;
@@ -504,15 +519,8 @@ sub tie
$state->say("link #1 -> #2",
$self->name, $d) if $state->verbose >= 3;
} else {
- if (!-e _) {
- File::Path::mkpath($d);
- }
- my ($fh, $tempname) = OpenBSD::Temp::permanent_file($d, "pkg");
- if (!defined $tempname) {
- $state->fatal("create temporary file in #1: #2",
- $d, $!);
- }
- $self->{tempname} = $tempname;
+ my ($fh, $tempname) = $self->create_temp($d, $state,
+ $self->fullname);
my $src = $self->{tieto}->realname($state);
unlink($tempname);
@@ -540,15 +548,8 @@ sub extract
$self->name, $d) if $state->verbose >= 3;
$state->{archive}->skip;
} else {
- if (!-e _) {
- File::Path::mkpath($d);
- }
- my ($fh, $tempname) = OpenBSD::Temp::permanent_file($d, "pkg");
- if (!defined $tempname) {
- $state->fatal("create temporary file in #1: #2",
- $d, $!);
- }
- $self->{tempname} = $tempname;
+ my ($fh, $tempname) = $self->create_temp($d, $state,
+ $file->name);
# XXX don't apply destdir twice
$file->{destdir} = '';