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)
}