summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Landley2006-06-28 14:11:25 +0000
committerRob Landley2006-06-28 14:11:25 +0000
commitdb1ab1aeb3dd4401411d147e290261c8f1ad472f (patch)
treec0277dbc990cfde1b30284b507f9e824d7c9458a
parentea7c18514b6c9304b969cd977390aa09f5095f8d (diff)
downloadbusybox-db1ab1aeb3dd4401411d147e290261c8f1ad472f.zip
busybox-db1ab1aeb3dd4401411d147e290261c8f1ad472f.tar.gz
Top was catching sigterm (and fumbling sigint) so it could reset the terminal
type on the way out, but the signal handler didn't exit. Plus it did unnecessary things with sigaction. This code is overgrown and needs a serious weed-whacking...
-rw-r--r--procps/top.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/procps/top.c b/procps/top.c
index a97e557..172933c 100644
--- a/procps/top.c
+++ b/procps/top.c
@@ -388,6 +388,7 @@ static void reset_term(void)
static void sig_catcher(int sig ATTRIBUTE_UNUSED)
{
reset_term();
+ exit(1);
}
#endif /* CONFIG_FEATURE_USE_TERMIOS */
@@ -423,11 +424,7 @@ int top_main(int argc, char **argv)
new_settings.c_lflag &= ~(ECHO | ECHONL);
signal(SIGTERM, sig_catcher);
- sigaction(SIGTERM, (struct sigaction *) 0, &sa);
- sa.sa_flags |= SA_RESTART;
- sa.sa_flags &= ~SA_INTERRUPT;
- sigaction(SIGTERM, &sa, (struct sigaction *) 0);
- sigaction(SIGINT, &sa, (struct sigaction *) 0);
+ signal(SIGINT, sig_catcher);
tcsetattr(0, TCSANOW, (void *) &new_settings);
atexit(reset_term);
#endif /* CONFIG_FEATURE_USE_TERMIOS */