mirror of
https://github.com/watchexec/watchexec.git
synced 2024-09-28 22:21:33 +02:00
Move convert_to_libc() method to signal.rs
This commit is contained in:
parent
4adde457dd
commit
0a445c9f76
@ -76,22 +76,9 @@ mod imp {
|
||||
}
|
||||
|
||||
pub fn signal(&self, signal: Signal) {
|
||||
use signal::ConvertToLibc;
|
||||
|
||||
// Convert from signal::Signal enum to libc::* c_int constants
|
||||
// TODO: This probably belongs into signal.rs (Maybe directly using libc::SIG*)
|
||||
let signo = match signal {
|
||||
Signal::SIGKILL => SIGKILL,
|
||||
Signal::SIGTERM => SIGTERM,
|
||||
Signal::SIGINT => SIGINT,
|
||||
Signal::SIGHUP => SIGHUP,
|
||||
Signal::SIGSTOP => SIGSTOP,
|
||||
Signal::SIGCONT => SIGCONT,
|
||||
Signal::SIGCHLD => SIGCHLD,
|
||||
Signal::SIGUSR1 => SIGUSR1,
|
||||
Signal::SIGUSR2 => SIGUSR2,
|
||||
_ => panic!("unsupported signal: {:?}", signal),
|
||||
};
|
||||
|
||||
let signo = signal.convert_to_libc();
|
||||
debug!("Sending {:?} (int: {}) to child process", signal, signo);
|
||||
self.c_signal(signo);
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
use libc::*;
|
||||
use std::sync::Mutex;
|
||||
use nix::sys::signal::Signal;
|
||||
|
||||
@ -5,6 +6,28 @@ lazy_static! {
|
||||
static ref CLEANUP: Mutex<Option<Box<Fn(self::Signal) + Send>>> = Mutex::new(None);
|
||||
}
|
||||
|
||||
pub trait ConvertToLibc {
|
||||
fn convert_to_libc(self) -> c_int;
|
||||
}
|
||||
|
||||
impl ConvertToLibc for Signal {
|
||||
fn convert_to_libc(self) -> c_int {
|
||||
// Convert from signal::Signal enum to libc::* c_int constants
|
||||
match self {
|
||||
Signal::SIGKILL => SIGKILL,
|
||||
Signal::SIGTERM => SIGTERM,
|
||||
Signal::SIGINT => SIGINT,
|
||||
Signal::SIGHUP => SIGHUP,
|
||||
Signal::SIGSTOP => SIGSTOP,
|
||||
Signal::SIGCONT => SIGCONT,
|
||||
Signal::SIGCHLD => SIGCHLD,
|
||||
Signal::SIGUSR1 => SIGUSR1,
|
||||
Signal::SIGUSR2 => SIGUSR2,
|
||||
_ => panic!("unsupported signal: {:?}", self),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn new(signal_name: &str) -> Signal {
|
||||
use nix::sys::signal::*;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user