=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/top/top.c,v retrieving revision 1.15 retrieving revision 1.16 diff -c -r1.15 -r1.16 *** src/usr.bin/top/top.c 2002/02/16 21:27:55 1.15 --- src/usr.bin/top/top.c 2002/04/21 18:52:33 1.16 *************** *** 1,4 **** ! /* $OpenBSD: top.c,v 1.15 2002/02/16 21:27:55 millert Exp $ */ const char copyright[] = "Copyright (c) 1984 through 1996, William LeFebvre"; --- 1,4 ---- ! /* $OpenBSD: top.c,v 1.16 2002/04/21 18:52:33 hugh Exp $ */ const char copyright[] = "Copyright (c) 1984 through 1996, William LeFebvre"; *************** *** 117,123 **** static char tempbuf2[50]; sigset_t mask, oldmask; int topn = Default_TOPN; ! int delay = Default_DELAY; int displays = 0; /* indicates unspecified */ time_t curr_time; char *(*get_userid)() = username; --- 117,123 ---- static char tempbuf2[50]; sigset_t mask, oldmask; int topn = Default_TOPN; ! double delay = Default_DELAY; int displays = 0; /* indicates unspecified */ time_t curr_time; char *(*get_userid)() = username; *************** *** 279,289 **** { char *endp; ! delay = strtoul(optarg, &endp, 10); ! if (delay < 0 || *endp != '\0') { fprintf(stderr, ! "%s: warning: seconds delay should be non-negative -- using default\n", myname); delay = Default_DELAY; warnings++; --- 279,290 ---- { char *endp; ! delay = strtod(optarg, &endp); ! ! if (delay < 0 || delay >= 1000000 || *endp != '\0') { fprintf(stderr, ! "%s: warning: delay should be a non-negative number -- using default\n", myname); delay = Default_DELAY; warnings++; *************** *** 611,618 **** /* set up arguments for select with timeout */ FD_ZERO(&readfds); FD_SET(STDIN_FILENO, &readfds); /* for standard input */ ! timeout.tv_sec = delay; ! timeout.tv_usec = 0; if (leaveflag) { end_screen(); --- 612,619 ---- /* set up arguments for select with timeout */ FD_ZERO(&readfds); FD_SET(STDIN_FILENO, &readfds); /* for standard input */ ! timeout.tv_sec = (long)delay; ! timeout.tv_usec = (long)((delay - timeout.tv_sec) * 1000000); if (leaveflag) { end_screen(); *************** *** 775,783 **** case CMD_delay: /* new seconds delay */ new_message(MT_standout, "Seconds to delay: "); ! if ((i = readline(tempbuf1, 8, Yes)) > -1) { ! delay = i; } clear_message(); break; --- 776,789 ---- case CMD_delay: /* new seconds delay */ new_message(MT_standout, "Seconds to delay: "); ! if (readline(tempbuf2, sizeof(tempbuf2), No) > 0) { ! char *endp; ! double newdelay = strtod(tempbuf2, &endp); ! if (newdelay >= 0 && newdelay < 1000000 && *endp == '\0') ! { ! delay = newdelay; ! } } clear_message(); break;