package term
import "core:sync"
import "core:sys/linux"
intterm_called: bool
sigint_sigterm_handler :: proc "c" (sig: linux.Signal) {
sync.atomic_store(&intterm_called, true)
}
sigwinch_handler :: proc "c" (sig: linux.Signal) {
// TODO: implement terminal resize
}
install_signal_handlers :: proc() {
intterm_action := linux.Sig_Action {
handler = sigint_sigterm_handler,
}
winch_action := linux.Sig_Action {
handler = sigwinch_handler,
}
linux.rt_sigaction(.SIGINT, &intterm_action, nil)
linux.rt_sigaction(.SIGTERM, &intterm_action, nil)
linux.rt_sigaction(.SIGWINCH, &winch_action, nil)
}
should_quit :: proc() -> bool {
return sync.atomic_load(&intterm_called)
}