From 5b3dc8b76e0fd9e77c8ea8ce1942577e5e31269c Mon Sep 17 00:00:00 2001 From: Ryan Voots Date: Tue, 18 Apr 2017 11:12:53 -0400 Subject: [PATCH] Use %Config to generate syscall name mapping automagically. --- lib/EvalServer.pm | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/lib/EvalServer.pm b/lib/EvalServer.pm index 804587e..4a1e640 100644 --- a/lib/EvalServer.pm +++ b/lib/EvalServer.pm @@ -8,6 +8,17 @@ use POE::Filter::Line; use POE::Filter::Stream; use POE::Wheel::Run; use strict; +use Config; + +my %sig_map; + +do { + my @sig_names = split ' ', $Config{sig_name}; + my @sig_nums = split ' ', $Config{sig_num}; + @sig_map{@sig_nums} = map {'SIG' . $_} @sig_names; + $sig_map{31} = "SIGSYS (Illegal Syscall)"; +}; + sub start { my( $class ) = @_; @@ -46,22 +57,7 @@ warn "Spawning Eval: $args->{code}\n"; if ($exit) { print "[Exited $exit]"; } elsif ($signal) { - my $signame = { - 1 => "SIGHUP", - 2 => "SIGINT", - 3 => "SIGQUIT", - 4 => "SIGILL", - 5 => "SIGTRAP", - 6 => "SIGABRT", - 7 => "SIGBUS", - 8 => "SIGFPE", - 9 => "SIGKILL", - 11 => "SIGSEGV", - 13 => "SIGPIPE", - 14 => "SIGALRM", - 15 => "SIGTERM", - 31 => "SIGSYS (Illegal Syscall)", - }->{$signal} // $signal; + my $signame = $sig_map{$signal} // $signal; print "[Died $signame]"; } },