From fedd00f0d18e7821b62b838b3408dbab8a59b041 Mon Sep 17 00:00:00 2001 From: IoIxD Date: Wed, 21 Jan 2026 20:31:20 -0700 Subject: [PATCH] signal handler works now. pushing so i can go back and see what i even did because i really was about to give up --- src/system/linux/linux.c | 9 ++++----- src/system/linux/signal.c | 7 ++++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/system/linux/linux.c b/src/system/linux/linux.c index 253798e..1cb3da3 100644 --- a/src/system/linux/linux.c +++ b/src/system/linux/linux.c @@ -124,20 +124,19 @@ int msh_execute(char *cmd, char **args) { SIZE_TYPE ret; char *status_str; - /* msh_linux_setup_signals(); */ + msh_linux_setup_signals(); ret = (SIZE_TYPE)SYSCALL(waitid, P_ALL, fork, &status, WEXITED, &ru); - /* - status_str = msh_allocate(64); + /*status_str = msh_allocate(64); itoa(status.si_code, status_str, 10); msh_print_strings("Status ", status_str, "\n", 0); - msh_deallocate(status_str); + msh_deallocate(status_str);*/ SYSCALL(kill, fork, SIGKILL); SYSCALL(write, 1, "\r", 2); - */ + msh_linux_start_input_capture(); return status.si_signo; diff --git a/src/system/linux/signal.c b/src/system/linux/signal.c index 7b51a56..964c9ea 100644 --- a/src/system/linux/signal.c +++ b/src/system/linux/signal.c @@ -14,22 +14,23 @@ #define INIT_SIGNAL(x) SYSCALL(rt_sigaction, x, &sigact, 0, sizeof(sigset_t)); static void signal_handler(int sig) { - char *status_str = msh_allocate(64); + /*char *status_str = msh_allocate(64); itoa(sig, status_str, 10); msh_print_strings("\nsignal ", status_str, "\n\n", 0); - msh_deallocate(status_str); + msh_deallocate(status_str);*/ } static void signal_restorer(void) { SYSCALL_0(rt_sigreturn); } void msh_linux_setup_signals() { struct sigaction sigact; + struct sigaction sigact_old; memset(&sigact, 0, sizeof(sigact)); sigact.sa_handler = signal_handler; sigact.sa_restorer = signal_restorer; - sigact.sa_flags = SA_RESTORER | SA_RESTART | SA_SIGINFO; + sigact.sa_flags = SA_RESTORER | SA_RESTART; SYSCALL(rt_sigprocmask, SIG_UNBLOCK, &sigact.sa_mask, &sigact.sa_mask, sizeof(sigset_t));