diff options
Diffstat (limited to 'procps/top.c')
-rw-r--r-- | procps/top.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/procps/top.c b/procps/top.c index 1b49a5e6b..f016f5501 100644 --- a/procps/top.c +++ b/procps/top.c | |||
@@ -901,11 +901,11 @@ enum { | |||
901 | }; | 901 | }; |
902 | 902 | ||
903 | #if ENABLE_FEATURE_TOP_INTERACTIVE | 903 | #if ENABLE_FEATURE_TOP_INTERACTIVE |
904 | static unsigned handle_input(unsigned scan_mask, unsigned interval) | 904 | static unsigned handle_input(unsigned scan_mask, duration_t interval) |
905 | { | 905 | { |
906 | if (option_mask32 & OPT_EOF) { | 906 | if (option_mask32 & OPT_EOF) { |
907 | /* EOF on stdin ("top </dev/null") */ | 907 | /* EOF on stdin ("top </dev/null") */ |
908 | sleep(interval); | 908 | sleep_for_duration(interval); |
909 | return scan_mask; | 909 | return scan_mask; |
910 | } | 910 | } |
911 | 911 | ||
@@ -1092,9 +1092,9 @@ static unsigned handle_input(unsigned scan_mask, unsigned interval) | |||
1092 | int top_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 1092 | int top_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
1093 | int top_main(int argc UNUSED_PARAM, char **argv) | 1093 | int top_main(int argc UNUSED_PARAM, char **argv) |
1094 | { | 1094 | { |
1095 | duration_t interval; | ||
1095 | int iterations; | 1096 | int iterations; |
1096 | unsigned col; | 1097 | unsigned col; |
1097 | unsigned interval; | ||
1098 | char *str_interval, *str_iterations; | 1098 | char *str_interval, *str_iterations; |
1099 | unsigned scan_mask = TOP_MASK; | 1099 | unsigned scan_mask = TOP_MASK; |
1100 | 1100 | ||
@@ -1120,8 +1120,10 @@ int top_main(int argc UNUSED_PARAM, char **argv) | |||
1120 | /* work around for "-d 1" -> "-d -1" done by make_all_argv_opts() */ | 1120 | /* work around for "-d 1" -> "-d -1" done by make_all_argv_opts() */ |
1121 | if (str_interval[0] == '-') | 1121 | if (str_interval[0] == '-') |
1122 | str_interval++; | 1122 | str_interval++; |
1123 | interval = parse_duration_str(str_interval); | ||
1123 | /* Need to limit it to not overflow poll timeout */ | 1124 | /* Need to limit it to not overflow poll timeout */ |
1124 | interval = xatou16(str_interval); | 1125 | if (interval > INT_MAX / 1000) |
1126 | interval = INT_MAX / 1000; | ||
1125 | } | 1127 | } |
1126 | if (col & OPT_n) { | 1128 | if (col & OPT_n) { |
1127 | if (str_iterations[0] == '-') | 1129 | if (str_iterations[0] == '-') |
@@ -1169,7 +1171,7 @@ int top_main(int argc UNUSED_PARAM, char **argv) | |||
1169 | /* We output to stdout, we need size of stdout (not stdin)! */ | 1171 | /* We output to stdout, we need size of stdout (not stdin)! */ |
1170 | get_terminal_width_height(STDOUT_FILENO, &col, &G.lines); | 1172 | get_terminal_width_height(STDOUT_FILENO, &col, &G.lines); |
1171 | if (G.lines < 5 || col < 10) { | 1173 | if (G.lines < 5 || col < 10) { |
1172 | sleep(interval); | 1174 | sleep_for_duration(interval); |
1173 | continue; | 1175 | continue; |
1174 | } | 1176 | } |
1175 | if (col > LINE_BUF_SIZE - 2) | 1177 | if (col > LINE_BUF_SIZE - 2) |
@@ -1254,7 +1256,7 @@ int top_main(int argc UNUSED_PARAM, char **argv) | |||
1254 | break; | 1256 | break; |
1255 | #if !ENABLE_FEATURE_TOP_INTERACTIVE | 1257 | #if !ENABLE_FEATURE_TOP_INTERACTIVE |
1256 | clearmems(); | 1258 | clearmems(); |
1257 | sleep(interval); | 1259 | sleep_for_duration(interval); |
1258 | #else | 1260 | #else |
1259 | new_mask = handle_input(scan_mask, interval); | 1261 | new_mask = handle_input(scan_mask, interval); |
1260 | if (new_mask == NO_RESCAN_MASK) | 1262 | if (new_mask == NO_RESCAN_MASK) |