aboutsummaryrefslogtreecommitdiff
path: root/procps
diff options
context:
space:
mode:
Diffstat (limited to 'procps')
-rw-r--r--procps/powertop.c10
-rw-r--r--procps/top.c10
2 files changed, 5 insertions, 15 deletions
diff --git a/procps/powertop.c b/procps/powertop.c
index ce85f4191..ee806161f 100644
--- a/procps/powertop.c
+++ b/procps/powertop.c
@@ -683,7 +683,6 @@ int powertop_main(int UNUSED_PARAM argc, char UNUSED_PARAM **argv)
683 ullong cur_duration[MAX_CSTATE_COUNT]; 683 ullong cur_duration[MAX_CSTATE_COUNT];
684 char cstate_lines[MAX_CSTATE_COUNT + 2][64]; 684 char cstate_lines[MAX_CSTATE_COUNT + 2][64];
685#if ENABLE_FEATURE_USE_TERMIOS 685#if ENABLE_FEATURE_USE_TERMIOS
686 struct termios new_settings;
687 struct pollfd pfd[1]; 686 struct pollfd pfd[1];
688 687
689 pfd[0].fd = 0; 688 pfd[0].fd = 0;
@@ -707,14 +706,11 @@ int powertop_main(int UNUSED_PARAM argc, char UNUSED_PARAM **argv)
707 puts("Collecting data for "DEFAULT_SLEEP_STR" seconds"); 706 puts("Collecting data for "DEFAULT_SLEEP_STR" seconds");
708 707
709#if ENABLE_FEATURE_USE_TERMIOS 708#if ENABLE_FEATURE_USE_TERMIOS
710 tcgetattr(0, (void *)&G.init_settings); 709 /* Turn on unbuffered input; turn off echoing, ^C ^Z etc */
711 memcpy(&new_settings, &G.init_settings, sizeof(new_settings)); 710 set_termios_to_raw(STDIN_FILENO, &G.init_settings, TERMIOS_CLEAR_ISIG);
712 /* Turn on unbuffered input, turn off echoing */ 711 bb_signals(BB_FATAL_SIGS, sig_handler);
713 new_settings.c_lflag &= ~(ISIG | ICANON | ECHO | ECHONL);
714 /* So we don't forget to reset term settings */ 712 /* So we don't forget to reset term settings */
715 atexit(reset_term); 713 atexit(reset_term);
716 bb_signals(BB_FATAL_SIGS, sig_handler);
717 tcsetattr_stdin_TCSANOW(&new_settings);
718#endif 714#endif
719 715
720 /* Collect initial data */ 716 /* Collect initial data */
diff --git a/procps/top.c b/procps/top.c
index 491acb574..91bb8a883 100644
--- a/procps/top.c
+++ b/procps/top.c
@@ -1089,9 +1089,6 @@ int top_main(int argc UNUSED_PARAM, char **argv)
1089 unsigned interval; 1089 unsigned interval;
1090 char *str_interval, *str_iterations; 1090 char *str_interval, *str_iterations;
1091 unsigned scan_mask = TOP_MASK; 1091 unsigned scan_mask = TOP_MASK;
1092#if ENABLE_FEATURE_USE_TERMIOS
1093 struct termios new_settings;
1094#endif
1095 1092
1096 INIT_G(); 1093 INIT_G();
1097 1094
@@ -1141,11 +1138,8 @@ int top_main(int argc UNUSED_PARAM, char **argv)
1141 } 1138 }
1142#if ENABLE_FEATURE_USE_TERMIOS 1139#if ENABLE_FEATURE_USE_TERMIOS
1143 else { 1140 else {
1144 tcgetattr(0, (void *) &initial_settings); 1141 /* Turn on unbuffered input; turn off echoing, ^C ^Z etc */
1145 memcpy(&new_settings, &initial_settings, sizeof(new_settings)); 1142 set_termios_to_raw(STDIN_FILENO, &initial_settings, TERMIOS_CLEAR_ISIG);
1146 /* unbuffered input, turn off echo */
1147 new_settings.c_lflag &= ~(ISIG | ICANON | ECHO | ECHONL);
1148 tcsetattr_stdin_TCSANOW(&new_settings);
1149 } 1143 }
1150 1144
1151 bb_signals(BB_FATAL_SIGS, sig_catcher); 1145 bb_signals(BB_FATAL_SIGS, sig_catcher);