Blame t/lib/Utils.pm

Packit Service 44c065
package Utils;
Packit Service 44c065
use strict;
Packit Service 44c065
use warnings;
Packit Service 44c065
use File::Spec;
Packit Service 44c065
use Config;
Packit Service 44c065
Packit Service 44c065
require Exporter;
Packit Service 44c065
our @ISA = 'Exporter';
Packit Service 44c065
our @EXPORT = qw/save_std restore_std next_fd sig_num/;
Packit Service 44c065
Packit Service 44c065
sub _open {
Packit Service 44c065
  open $_[0], $_[1] or die "Error from open( " . join(q{, }, @_) . "): $!";
Packit Service 44c065
}
Packit Service 44c065
Packit Service 44c065
my @saved;
Packit Service 44c065
sub save_std {
Packit Service 44c065
  for my $h ( @_ ) {
Packit Service 44c065
    my $fh;
Packit Service 44c065
    _open $fh, ($h eq 'stdin' ? "<&" : ">&") . uc $h;
Packit Service 44c065
    push @saved, $fh;
Packit Service 44c065
  }
Packit Service 44c065
}
Packit Service 44c065
Packit Service 44c065
sub restore_std {
Packit Service 44c065
  for my $h ( @_ ) {
Packit Service 44c065
    no strict 'refs';
Packit Service 44c065
    my $fh = shift @saved;
Packit Service 44c065
    _open \*{uc $h}, ($h eq 'stdin' ? "<&" : ">&") . fileno( $fh );
Packit Service 44c065
    close $fh;
Packit Service 44c065
  }
Packit Service 44c065
}
Packit Service 44c065
Packit Service 44c065
sub next_fd {
Packit Service 44c065
  no warnings 'io';
Packit Service 44c065
  open my $fh, ">", File::Spec->devnull;
Packit Service 44c065
  my $fileno = fileno $fh;
Packit Service 44c065
  close $fh;
Packit Service 44c065
  return $fileno;
Packit Service 44c065
}
Packit Service 44c065
Packit Service 44c065
#--------------------------------------------------------------------------#
Packit Service 44c065
Packit Service 44c065
my %sig_num;
Packit Service 44c065
my @sig_name;
Packit Service 44c065
unless($Config{sig_name} && $Config{sig_num}) {
Packit Service 44c065
  die "No sigs?";
Packit Service 44c065
} else {
Packit Service 44c065
  my @names = split ' ', $Config{sig_name};
Packit Service 44c065
  @sig_num{@names} = split ' ', $Config{sig_num};
Packit Service 44c065
  foreach (@names) {
Packit Service 44c065
    $sig_name[$sig_num{$_}] ||= $_;
Packit Service 44c065
  }
Packit Service 44c065
}
Packit Service 44c065
Packit Service 44c065
sub sig_num {
Packit Service 44c065
  my $name = shift;
Packit Service 44c065
  return exists $sig_num{$name} ? $sig_num{$name} : '';
Packit Service 44c065
}
Packit Service 44c065
Packit Service 44c065
1;