logread: intercept all fatal signals, not just SIGINT
No binary (build failed)
—
(log yok)
| @@ -52,7 +52,7 @@ struct globals { | |
| static void error_exit(const char *str) NORETURN; | |
| static void error_exit(const char *str) | |
| { | |
| - | //release all acquired resources |
| + | /* Release all acquired resources */ |
| shmdt(shbuf); | |
| bb_perror_msg_and_die(str); | |
| } | |
| @@ -66,11 +66,10 @@ static void sem_up(int semid) | |
| error_exit("semop[SMrup]"); | |
| } | |
| - | static void interrupted(int sig UNUSED_PARAM) |
| + | static void interrupted(int sig) |
| { | |
| - | signal(SIGINT, SIG_IGN); |
| shmdt(shbuf); | |
| - | exit(EXIT_SUCCESS); |
| + | kill_myself_with_sig(sig); |
| } | |
| int logread_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | |
| @@ -96,7 +95,7 @@ int logread_main(int argc UNUSED_PARAM, char **argv) | |
| if (log_semid == -1) | |
| error_exit("can't get access to semaphores for syslogd buffer"); | |
| - | signal(SIGINT, interrupted); |
| + | bb_signals(BB_FATAL_SIGS, interrupted); |
| /* Suppose atomic memory read */ | |
| /* Max possible value for tail is shbuf->size - 1 */ | |