cvs-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Cvs-cvs] ccvs ChangeLog NEWS src/ChangeLog src/subr.c


From: Derek Robert Price
Subject: [Cvs-cvs] ccvs ChangeLog NEWS src/ChangeLog src/subr.c
Date: Sun, 19 Jul 2009 04:07:31 +0000

CVSROOT:        /cvsroot/cvs
Module name:    ccvs
Changes by:     Derek Robert Price <dprice>     09/07/19 04:07:30

Modified files:
        .              : ChangeLog NEWS 
        src            : ChangeLog subr.c 

Log message:
        Merge imperfectly synchronized time() & gettimeofday() fixes from 
production.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/ccvs/ChangeLog?cvsroot=cvs&r1=1.1375&r2=1.1376
http://cvs.savannah.gnu.org/viewcvs/ccvs/NEWS?cvsroot=cvs&r1=1.383&r2=1.384
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/ChangeLog?cvsroot=cvs&r1=1.3640&r2=1.3641
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/subr.c?cvsroot=cvs&r1=1.176&r2=1.177

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/cvs/ccvs/ChangeLog,v
retrieving revision 1.1375
retrieving revision 1.1376
diff -u -b -r1.1375 -r1.1376
--- ChangeLog   25 Nov 2008 22:56:22 -0000      1.1375
+++ ChangeLog   19 Jul 2009 04:07:29 -0000      1.1376
@@ -1,3 +1,8 @@
+2009-07-18  Derek R. Price  <address@hidden>
+
+       * NEWS: Note timestamp fix for systems with imperfectly synchronized
+       time() & gettimeofday() functions.
+
 2008-11-25  Larry Jones  <address@hidden>
 
        * HACKING, NEWS: Note update to Autoconf 2.63.

Index: NEWS
===================================================================
RCS file: /cvsroot/cvs/ccvs/NEWS,v
retrieving revision 1.383
retrieving revision 1.384
diff -u -b -r1.383 -r1.384
--- NEWS        25 Nov 2008 22:56:22 -0000      1.383
+++ NEWS        19 Jul 2009 04:07:29 -0000      1.384
@@ -50,6 +50,9 @@
 
 BUG FIXES
 
+* Time stamps are set correctly on systems where time() and gettimeofday()
+  return times with different values for the current second.
+
 * Changing keyword substitution mode no longer interferes with conflict
   tracking (fixes bug #17565).
 

Index: src/ChangeLog
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/ChangeLog,v
retrieving revision 1.3640
retrieving revision 1.3641
diff -u -b -r1.3640 -r1.3641
--- src/ChangeLog       2 Dec 2008 19:33:59 -0000       1.3640
+++ src/ChangeLog       19 Jul 2009 04:07:30 -0000      1.3641
@@ -1,3 +1,8 @@
+2009-07-18  Derek R. Price  <address@hidden>
+
+       * subr.c (sleep_past): Don't assume that time() called after
+       gettimeofday() must return a seconds value >= than gettimeofday() did.
+
 2008-12-02  Larry Jones  <address@hidden>
 
        * commit.c: Remove defunct variable (got_message).

Index: src/subr.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/subr.c,v
retrieving revision 1.176
retrieving revision 1.177
diff -u -b -r1.176 -r1.177
--- src/subr.c  25 Sep 2008 18:45:17 -0000      1.176
+++ src/subr.c  19 Jul 2009 04:07:30 -0000      1.177
@@ -906,14 +906,14 @@
     time_t t;
     long s;
     long us;
-
+/*    printf ("sleep requested until %d, current time it %d\n",
+           desttime, time(&t));  */
     while (time (&t) <= desttime)
     {
 #ifdef HAVE_GETTIMEOFDAY
        struct timeval tv;
        gettimeofday (&tv, NULL);
-       if (tv.tv_sec > desttime)
-           break;
+       if (tv.tv_sec <= desttime) {
        s = desttime - tv.tv_sec;
        if (tv.tv_usec > 0)
            us = 1000000 - tv.tv_usec;
@@ -922,11 +922,21 @@
            s++;
            us = 0;
        }
-#else
+       }
+       else
+#endif
+       {
+           /* On at least one Linux 2.6.24 system, time() lags behind
+            * gettimeofday() by up to 10 msec, and file time stamps use
+            * time().  For example, time() might return 1247677670 while
+            * gettimeofday() returns 1247677671.000060, so we always sleep
+            * at least 20ms and retry the test using time(), like we do when
+            * gettimeofday() is not available.
+            */
        /* default to 20 ms increments */
-       s = desttime - t;
        us = 20000;
-#endif
+           s = desttime - t;
+       }
 
        {
            struct timespec ts;
@@ -935,6 +945,7 @@
            (void)nanosleep (&ts, NULL);
        }
     }
+    /* printf ("slept until %d\n", time(&t));  */
 }
 
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]