mirror of
https://git.proxmox.com/git/pve-common
synced 2025-07-27 10:01:38 +00:00
correctly call errfunc inside run_command
This commit is contained in:
parent
65e1d3fc9c
commit
4630cb951d
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
||||
RELEASE=2.0
|
||||
|
||||
VERSION=1.0
|
||||
PKGREL=8
|
||||
PKGREL=9
|
||||
|
||||
PACKAGE=libpve-common-perl
|
||||
|
||||
|
@ -178,12 +178,13 @@ sub run_command {
|
||||
my $oldtimeout;
|
||||
my $pid;
|
||||
|
||||
my $outfunc;
|
||||
my $errfunc;
|
||||
my $logfunc;
|
||||
my $input;
|
||||
my $output;
|
||||
|
||||
eval {
|
||||
my $input;
|
||||
my $output;
|
||||
my $outfunc;
|
||||
my $errfunc;
|
||||
my $logfunc;
|
||||
|
||||
foreach my $p (keys %param) {
|
||||
if ($p eq 'timeout') {
|
||||
@ -192,10 +193,6 @@ sub run_command {
|
||||
umask($param{$p});
|
||||
} elsif ($p eq 'errmsg') {
|
||||
$errmsg = $param{$p};
|
||||
$errfunc = sub {
|
||||
print STDERR "$laststderr\n" if $laststderr;
|
||||
$laststderr = shift;
|
||||
};
|
||||
} elsif ($p eq 'input') {
|
||||
$input = $param{$p};
|
||||
} elsif ($p eq 'output') {
|
||||
@ -211,6 +208,20 @@ sub run_command {
|
||||
}
|
||||
}
|
||||
|
||||
if ($errmsg) {
|
||||
my $origerrfunc = $errfunc;
|
||||
$errfunc = sub {
|
||||
if ($laststderr) {
|
||||
if ($origerrfunc) {
|
||||
&$origerrfunc("$laststderr\n");
|
||||
} else {
|
||||
print STDERR "$laststderr\n" if $laststderr;
|
||||
}
|
||||
}
|
||||
$laststderr = shift;
|
||||
};
|
||||
}
|
||||
|
||||
my $reader = $output && $output =~ m/^>&/ ? $output : IO::File->new();
|
||||
my $writer = $input && $input =~ m/^<&/ ? $input : IO::File->new();
|
||||
my $error = IO::File->new();
|
||||
@ -353,7 +364,9 @@ sub run_command {
|
||||
|
||||
alarm(0);
|
||||
|
||||
print STDERR "$laststderr\n" if $laststderr;
|
||||
if ($errmsg && $laststderr) {
|
||||
&$errfunc(undef); # flush laststderr
|
||||
}
|
||||
|
||||
umask ($old_umask) if defined($old_umask);
|
||||
|
||||
|
6
debian/changelog
vendored
6
debian/changelog
vendored
@ -1,3 +1,9 @@
|
||||
libpve-common-perl (1.0-9) unstable; urgency=low
|
||||
|
||||
* bug fixes for run_command()
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Fri, 02 Dec 2011 10:28:27 +0100
|
||||
|
||||
libpve-common-perl (1.0-8) unstable; urgency=low
|
||||
|
||||
* make cli argument parser more flexible
|
||||
|
Loading…
Reference in New Issue
Block a user