From 57cdae17a7daed54750257e6e248360685dc43ec Mon Sep 17 00:00:00 2001 From: Aviv Palivoda Date: Mon, 29 Jul 2019 20:46:40 +0300 Subject: [PATCH] Add signal.getsignal --- vm/src/stdlib/signal.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/vm/src/stdlib/signal.rs b/vm/src/stdlib/signal.rs index 7298b5cad..6b39b8f51 100644 --- a/vm/src/stdlib/signal.rs +++ b/vm/src/stdlib/signal.rs @@ -46,6 +46,7 @@ fn signal( signal::SaFlags::empty(), signal::SigSet::empty(), ); + check_signals(vm); unsafe { signal::sigaction(signal_enum, &sig_action) }.unwrap(); let old_handler = vm .signal_handlers @@ -54,6 +55,15 @@ fn signal( Ok(old_handler) } +fn getsignal(signalnum: PyIntRef, vm: &VirtualMachine) -> PyResult> { + let signalnum = signalnum.as_bigint().to_i32().unwrap(); + Ok(vm + .signal_handlers + .borrow_mut() + .get(&signalnum) + .map(|x| x.clone())) +} + pub fn check_signals(vm: &VirtualMachine) { for (signum, handler) in vm.signal_handlers.borrow().iter() { if *signum as usize >= NSIG { @@ -71,5 +81,6 @@ pub fn make_module(vm: &VirtualMachine) -> PyObjectRef { py_module!(vm, "_signal", { "signal" => ctx.new_rustfunc(signal), + "getsignal" => ctx.new_rustfunc(getsignal) }) }