nushell/src/signals.rs

18 lines
470 B
Rust
Raw Normal View History

use nu_protocol::engine::EngineState;
use std::sync::{
atomic::{AtomicBool, Ordering},
Arc,
};
pub(crate) fn ctrlc_protection(engine_state: &mut EngineState, ctrlc: &Arc<AtomicBool>) {
let handler_ctrlc = ctrlc.clone();
let engine_state_ctrlc = ctrlc.clone();
ctrlc::set_handler(move || {
handler_ctrlc.store(true, Ordering::SeqCst);
})
.expect("Error setting Ctrl-C handler");
engine_state.ctrlc = Some(engine_state_ctrlc);
}