Top was catching sigterm (and fumbling sigint) so it could reset the terminal
authorRob Landley <rob@landley.net>
Wed, 28 Jun 2006 14:11:25 +0000 (14:11 -0000)
committerRob Landley <rob@landley.net>
Wed, 28 Jun 2006 14:11:25 +0000 (14:11 -0000)
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...

procps/top.c

index a97e557aa830e35549ce999e1ca87c758aa15480..172933cbe9ab398701c026556cd5f48426fa757b 100644 (file)
@@ -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 */