Date: Thu, 20 Sep 2001 12:10:02 -0700 (PDT) From: "Crist J. Clark" <cristjc@earthlink.net> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/30680: uptime and w utilities lie about real uptime Message-ID: <200109201910.f8KJA2D66277@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/30680; it has been noted by GNATS. From: "Crist J. Clark" <cristjc@earthlink.net> To: David Malone <dwmalone@maths.tcd.ie> Cc: FreeBSD-gnats-submit@freebsd.org, "Vladimir B.Grebenschikov" <vova@express.ru> Subject: Re: bin/30680: uptime and w utilities lie about real uptime Date: Thu, 20 Sep 2001 12:04:50 -0700 On Thu, Sep 20, 2001 at 05:40:05AM -0700, David Malone wrote: > The following reply was made to PR bin/30680; it has been noted by GNATS. > > From: David Malone <dwmalone@maths.tcd.ie> > To: "Vladimir B.Grebenschikov" <vova@express.ru> > Cc: FreeBSD-gnats-submit@freebsd.org, freebsd-hackers@freebsd.org > Subject: Re: bin/30680: uptime and w utilities lie about real uptime > Date: Thu, 20 Sep 2001 13:31:49 +0100 > > On Thu, Sep 20, 2001 at 03:21:08PM +0400, Vladimir B.Grebenschikov wrote: > > why utility increases uptime on 30 seconds ?? > > Is any real reasons for it ? > > It adds 30 because it wants to round the number of minutes to the > nearest minute, instead of rounding down. Unfortunately this isn't > a sensible thing to do if you are also going to display the number > of seconds. The only time this is noticed is when the time is printed in seconds. This should fix it, Index: src/usr.bin/w/w.c =================================================================== RCS file: /export/ncvs/src/usr.bin/w/w.c,v retrieving revision 1.48 diff -u -r1.48 w.c --- src/usr.bin/w/w.c 2001/07/26 19:20:13 1.48 +++ src/usr.bin/w/w.c 2001/09/20 19:00:57 @@ -452,13 +452,15 @@ if (sysctl(mib, 2, &boottime, &size, NULL, 0) != -1 && boottime.tv_sec != 0) { uptime = now - boottime.tv_sec; + /* Round to nearest minute. */ uptime += 30; days = uptime / 86400; uptime %= 86400; hrs = uptime / 3600; uptime %= 3600; mins = uptime / 60; - secs = uptime % 60; + /* Undo rounding to calculate uptime in seconds. */ + secs = (uptime - 30) % 60; (void)printf(" up"); if (days > 0) (void)printf(" %d day%s,", days, days > 1 ? "s" : ""); I will commit the fix later unless someone has comments. -- Crist J. Clark cjclark@alum.mit.edu To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200109201910.f8KJA2D66277>