From owner-svn-src-all@FreeBSD.ORG Tue Aug 3 20:56:24 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0F7E1106564A; Tue, 3 Aug 2010 20:56:24 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F21E78FC1B; Tue, 3 Aug 2010 20:56:23 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o73KuNJu058701; Tue, 3 Aug 2010 20:56:23 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o73KuNVh058700; Tue, 3 Aug 2010 20:56:23 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201008032056.o73KuNVh058700@svn.freebsd.org> From: Ulrich Spoerlein Date: Tue, 3 Aug 2010 20:56:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r210827 - head/games/grdc X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Aug 2010 20:56:24 -0000 Author: uqs Date: Tue Aug 3 20:56:23 2010 New Revision: 210827 URL: http://svn.freebsd.org/changeset/base/210827 Log: grdc(6): de-obfuscate the timekeeping of now/delay - 'now' only contains current time readings - delay is only used as parameter to nanosleep - prev_sec contains the time_t of the previous loop iteration Submitted by: bde MFC after: 2 weeks Modified: head/games/grdc/grdc.c Modified: head/games/grdc/grdc.c ============================================================================== --- head/games/grdc/grdc.c Tue Aug 3 19:25:58 2010 (r210826) +++ head/games/grdc/grdc.c Tue Aug 3 20:56:23 2010 (r210827) @@ -55,6 +55,7 @@ int main(int argc, char *argv[]) { struct timespec delay; + time_t prev_sec; long t, a; int i, j, s, k; int n; @@ -138,6 +139,7 @@ main(int argc, char *argv[]) attrset(COLOR_PAIR(2)); } clock_gettime(CLOCK_REALTIME_FAST, &now); + prev_sec = now.tv_sec; do { mask = 0; tm = localtime(&now.tv_sec); @@ -194,20 +196,20 @@ main(int argc, char *argv[]) } movto(6, 0); refresh(); - clock_gettime(CLOCK_REALTIME_FAST, &delay); - if (delay.tv_sec == now.tv_sec) { + clock_gettime(CLOCK_REALTIME_FAST, &now); + if (now.tv_sec == prev_sec) { if (delay.tv_nsec > 0) { delay.tv_sec = 0; - delay.tv_nsec = 1000000000 - delay.tv_nsec; + delay.tv_nsec = 1000000000 - now.tv_nsec; } else { delay.tv_sec = 1; delay.tv_nsec = 0; } nanosleep(&delay, NULL); - clock_gettime(CLOCK_REALTIME_FAST, &delay); + clock_gettime(CLOCK_REALTIME_FAST, &now); } - n -= delay.tv_sec - now.tv_sec; - now.tv_sec = delay.tv_sec; + n -= now.tv_sec - prev_sec; + prev_sec = now.tv_sec; if (sigtermed) { standend(); clear();