logread: intercept all fatal signals, not just SIGINT
function old new delta interrupted 27 20 -7 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
fd3ac96c0f
commit
2641426187
@ -52,7 +52,7 @@ struct globals {
|
|||||||
static void error_exit(const char *str) NORETURN;
|
static void error_exit(const char *str) NORETURN;
|
||||||
static void error_exit(const char *str)
|
static void error_exit(const char *str)
|
||||||
{
|
{
|
||||||
//release all acquired resources
|
/* Release all acquired resources */
|
||||||
shmdt(shbuf);
|
shmdt(shbuf);
|
||||||
bb_perror_msg_and_die(str);
|
bb_perror_msg_and_die(str);
|
||||||
}
|
}
|
||||||
@ -66,11 +66,10 @@ static void sem_up(int semid)
|
|||||||
error_exit("semop[SMrup]");
|
error_exit("semop[SMrup]");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void interrupted(int sig UNUSED_PARAM)
|
static void interrupted(int sig)
|
||||||
{
|
{
|
||||||
signal(SIGINT, SIG_IGN);
|
|
||||||
shmdt(shbuf);
|
shmdt(shbuf);
|
||||||
exit(EXIT_SUCCESS);
|
kill_myself_with_sig(sig);
|
||||||
}
|
}
|
||||||
|
|
||||||
int logread_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
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)
|
if (log_semid == -1)
|
||||||
error_exit("can't get access to semaphores for syslogd buffer");
|
error_exit("can't get access to semaphores for syslogd buffer");
|
||||||
|
|
||||||
signal(SIGINT, interrupted);
|
bb_signals(BB_FATAL_SIGS, interrupted);
|
||||||
|
|
||||||
/* Suppose atomic memory read */
|
/* Suppose atomic memory read */
|
||||||
/* Max possible value for tail is shbuf->size - 1 */
|
/* Max possible value for tail is shbuf->size - 1 */
|
||||||
|
Loading…
Reference in New Issue
Block a user