svn commit: r334906 - head/usr.bin/top
Eitan Adler
eadler at FreeBSD.org
Sun Jun 10 00:02:57 UTC 2018
Author: eadler
Date: Sun Jun 10 00:02:56 2018
New Revision: 334906
URL: https://svnweb.freebsd.org/changeset/base/334906
Log:
top(1): permit sub-second delay times
This removes the getuid check for delay==0. It didn't prevent users from
writing similar programs in the general case. In theory, if top(1) is
among one of the few restricted programs you're allowed to run, it may
have helped a little, but there are better ways of handling that case.
Modified:
head/usr.bin/top/top.c
head/usr.bin/top/top.h
Modified: head/usr.bin/top/top.c
==============================================================================
--- head/usr.bin/top/top.c Sat Jun 9 23:45:05 2018 (r334905)
+++ head/usr.bin/top/top.c Sun Jun 10 00:02:56 2018 (r334906)
@@ -235,7 +235,7 @@ main(int argc, char *argv[])
static char tempbuf2[50];
int old_sigmask; /* only used for BSD-style signals */
int topn = Infinity;
- int delay = Default_DELAY;
+ double delay = 2;
int displays = 0; /* indicates unspecified */
int sel_ret = 0;
time_t curr_time;
@@ -426,15 +426,16 @@ _Static_assert(sizeof(command_chars) == CMD_toggletid
break;
}
- case 's':
- if ((delay = atoi(optarg)) < 0 || (delay == 0 && getuid() != 0))
- {
- fprintf(stderr,
- "%s: warning: seconds delay should be positive -- using default\n",
- myname);
- delay = Default_DELAY;
- warnings++;
- }
+ case 's':
+ delay = strtod(optarg, NULL);
+ if (delay < 0) {
+ fprintf(stderr,
+ "%s: warning: seconds delay should be positive -- using default\n",
+ myname);
+ delay = 2;
+ warnings++;
+ }
+
break;
case 'q': /* be quick about it */
@@ -781,7 +782,7 @@ restart:
no_command = true;
if (!interactive)
{
- sleep(delay);
+ usleep(delay * 1e6);
if (leaveflag) {
end_screen();
exit(0);
Modified: head/usr.bin/top/top.h
==============================================================================
--- head/usr.bin/top/top.h Sat Jun 9 23:45:05 2018 (r334905)
+++ head/usr.bin/top/top.h Sun Jun 10 00:02:56 2018 (r334906)
@@ -1,18 +1,14 @@
-/*
+/*-
+ * Top - a top users display for Berkeley Unix
+ *
+ * General (global) definitions
* $FreeBSD$
*/
-/*
- * Top - a top users display for Berkeley Unix
- *
- * General (global) definitions
- */
#ifndef TOP_H
#define TOP_H
#include <unistd.h>
-
-#define Default_DELAY 2
/* Number of lines of header information on the standard screen */
extern int Header_lines; /* 7 */
More information about the svn-src-head
mailing list