//! Unix signal handling (SIGINT).
//!
//! We let the first SIGINT reach child processes, which ought to build-fail
//! and let the parent properly print that progress.  This also lets us still
//! write out pending debug traces, too.

use std::sync::atomic::AtomicBool;

static mut INTERRUPTED: AtomicBool = AtomicBool::new(false);

#[cfg(unix)]
extern "C" fn sigint_handler(_sig: libc::c_int) {
    unsafe {
        INTERRUPTED.store(true, std::sync::atomic::Ordering::Relaxed);
    }
    // SA_RESETHAND should clear the handler.
}

#[cfg(unix)]
pub fn register_sigint() {
    // Safety: registering a signal handler is libc unsafe code.
    unsafe {
        let mut sa: libc::sigaction = std::mem::zeroed();
        sa.sa_sigaction = sigint_handler as libc::sighandler_t;
        sa.sa_flags = libc::SA_RESETHAND;
        libc::sigaction(libc::SIGINT, &sa, std::ptr::null_mut());
    }
}

pub fn was_interrupted() -> bool {
    unsafe { INTERRUPTED.load(std::sync::atomic::Ordering::Relaxed) }
}
