use Cwd (); # cwd, abs_path
use File::Spec (); # canonpath, catdir, splitdir, abs2rel
-use POSIX qw/WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG SIGINT SIGQUIT/;
+use POSIX (); # WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG SIGINT SIGQUIT
+
+my ($WIFEXITED, $WEXITSTATUS, $WIFSIGNALED, $WTERMSIG);
BEGIN {
- no warnings 'redefine';
- *WIFEXITED = sub { 1 } unless eval { WIFEXITED(0); 1 };
- *WEXITSTATUS = sub { shift() >> 8 } unless eval { WEXITSTATUS(0); 1 };
- *WIFSIGNALED = sub { shift() & 127 } unless eval { WIFSIGNALED(0); 1 };
+ $WIFEXITED = eval { POSIX::WIFEXITED(0); 1 } ? \&POSIX::WIFEXITED
+ : sub { 1 };
+ $WEXITSTATUS = eval { POSIX::WEXITSTATUS(0); 1 } ? \&POSIX::WEXITSTATUS
+ : sub { shift() >> 8 };
+ $WIFSIGNALED = eval { POSIX::WIFSIGNALED(0); 1 } ? \&POSIX::WIFSIGNALED
+ : sub { shift() & 127 };
+ $WTERMSIG = eval { POSIX::WTERMSIG(0); 1 } ? \&POSIX::WTERMSIG
+ : sub { shift() & 127 };
}
=head1 NAME
}
my $ret;
- $ret = WEXITSTATUS($?) if WIFEXITED($?);
+ $ret = $WEXITSTATUS->($?) if $WIFEXITED->($?);
my $sig;
- if (WIFSIGNALED($?)) {
- $sig = WTERMSIG($?);
+ if ($WIFSIGNALED->($?)) {
+ $sig = $WTERMSIG->($?);
$conf->warn("git died with signal $sig\n");
- if ($sig == SIGINT || $sig == SIGQUIT) {
+ if ($sig == POSIX::SIGINT || $sig == POSIX::SIGQUIT) {
$conf->err("Aborting\n");
exit $sig;
}