#
# Copyright (c) 2007 Christian Jaeger, copying@christianjaeger.ch
#
# This is free software, offered under either the same terms as perl 5
# or the terms of the Artistic License version 2 or the terms of the
# MIT License (Expat version). See the file COPYING.md that came
# bundled with this file.
#
=head1 NAME
Chj::Unix::Signal
=head1 SYNOPSIS
=head1 DESCRIPTION
=head1 NOTE
This is alpha software! Read the status section in the package README
or on the L.
=cut
package Chj::Unix::Signal;
use strict;
use warnings;
use warnings FATAL => 'uninitialized';
use Chj::Class::Array -fields => -publica => 'number',
;
sub new {
my $class = shift;
my $s = $class->SUPER::new;
($$s[Number]) = @_;
$s
}
# how do we do reverse mapping? I did it already somewhere, I know.
# and /bin/kill doesn't know all of them, bush eh bash is much better.
# ah, man perlipc "Signals":
our $inited = 0;
our $signo;
our $signame;
sub MaybeInit {
$inited ||= do {
require Config;
my $cfg = $Config::Config{sig_name};
defined $cfg or die "No sigs?";
my $i = 0;
foreach my $name (split(' ', $cfg)) {
$$signo{$name} = $i;
$$signame[$i] = $name;
$i++
}
1
}
}
sub as_string {
my $s = shift;
MaybeInit;
my $maybe_str = $$signame[$$s[Number]];
defined $maybe_str ? $maybe_str : ""
}
end Chj::Class::Array;