]> sjero.net Git - wget/blobdiff - src/ptimer.c
NEWS: cite --start-pos
[wget] / src / ptimer.c
index afa618a74107542c03ff3865f8ec15f14036d2a9..c53b5e7215cd08c6d4ed62763e01bd9325d504eb 100644 (file)
@@ -1,11 +1,12 @@
 /* Portable timers.
-   Copyright (C) 2005 Free Software Foundation, Inc.
+   Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+   Foundation, Inc.
 
 This file is part of GNU Wget.
 
 GNU Wget is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
+the Free Software Foundation; either version 3 of the License, or
 (at your option) any later version.
 
 GNU Wget is distributed in the hope that it will be useful,
@@ -14,18 +15,18 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with Wget; if not, write to the Free Software Foundation, Inc.,
-51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-In addition, as a special exception, the Free Software Foundation
-gives permission to link the code of its release of Wget with the
-OpenSSL project's "OpenSSL" library (or with modified versions of it
-that use the same license as the "OpenSSL" library), and distribute
-the linked executables.  You must obey the GNU General Public License
-in all respects for all of the code used other than "OpenSSL".  If you
-modify this file, you may extend this exception to your version of the
-file, but you are not obligated to do so.  If you do not wish to do
-so, delete this exception statement from your version.  */
+along with Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
 
 /* This file implements "portable timers" (ptimers), objects that
    measure elapsed time using the primitives most appropriate for the
@@ -34,7 +35,7 @@ so, delete this exception statement from your version.  */
      ptimer_new     -- creates a timer.
      ptimer_reset   -- resets the timer's elapsed time to zero.
      ptimer_measure -- measure and return the time elapsed since
-                      creation or last reset.
+                       creation or last reset.
      ptimer_read    -- reads the last measured elapsed value.
      ptimer_destroy -- destroy the timer.
      ptimer_granularity -- returns the approximate granularity of the timers.
@@ -50,19 +51,15 @@ so, delete this exception statement from your version.  */
      double secs = ptimer_measure ();
      printf ("The loop took %.2fs\n", secs);  */
 
-#include <config.h>
+#include "wget.h"
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
+#include <unistd.h>
 #include <time.h>
-#ifdef HAVE_SYS_TIME_H
-# include <sys/time.h>
-#endif
+#include <sys/time.h>
 
 /* Cygwin currently (as of 2005-04-08, Cygwin 1.5.14) lacks clock_getres,
    but still defines _POSIX_TIMERS!  Because of that we simply use the
@@ -71,7 +68,7 @@ so, delete this exception statement from your version.  */
 # include <windows.h>
 #endif
 
-#include "wget.h"
+#include "utils.h"
 #include "ptimer.h"
 
 /* Depending on the OS, one and only one of PTIMER_POSIX,
@@ -82,11 +79,11 @@ so, delete this exception statement from your version.  */
 #undef PTIMER_WINDOWS
 
 #if defined(WINDOWS) || defined(__CYGWIN__)
-# define PTIMER_WINDOWS                /* use Windows timers */
+# define PTIMER_WINDOWS         /* use Windows timers */
 #elif _POSIX_TIMERS - 0 > 0
-# define PTIMER_POSIX          /* use POSIX timers (clock_gettime) */
+# define PTIMER_POSIX           /* use POSIX timers (clock_gettime) */
 #else
-# define PTIMER_GETTIMEOFDAY   /* use gettimeofday */
+# define PTIMER_GETTIMEOFDAY    /* use gettimeofday */
 #endif
 
 #ifdef PTIMER_POSIX
@@ -133,7 +130,7 @@ posix_init (void)
 #endif
     { CLOCK_REALTIME, NO_SYSCONF_CHECK },
   };
-  int i;
+  size_t i;
 
   /* Determine the clock we can use.  For a clock to be usable, it
      must be confirmed with sysconf (where applicable) and with
@@ -143,23 +140,23 @@ posix_init (void)
     {
       struct timespec r;
       if (clocks[i].sysconf_name != NO_SYSCONF_CHECK)
-       if (sysconf (clocks[i].sysconf_name) < 0)
-         continue;             /* sysconf claims this clock is unavailable */
+        if (sysconf (clocks[i].sysconf_name) < 0)
+          continue;             /* sysconf claims this clock is unavailable */
       if (clock_getres (clocks[i].id, &r) < 0)
-       continue;               /* clock_getres doesn't work for this clock */
+        continue;               /* clock_getres doesn't work for this clock */
       posix_clock_id = clocks[i].id;
       posix_clock_resolution = (double) r.tv_sec + r.tv_nsec / 1e9;
       /* Guard against nonsense returned by a broken clock_getres.  */
       if (posix_clock_resolution == 0)
-       posix_clock_resolution = 1e-3;
+        posix_clock_resolution = 1e-3;
       break;
     }
   if (i == countof (clocks))
     {
       /* If no clock was found, it means that clock_getres failed for
-        the realtime clock.  */
+         the realtime clock.  */
       logprintf (LOG_NOTQUIET, _("Cannot get REALTIME clock frequency: %s\n"),
-                strerror (errno));
+                 strerror (errno));
       /* Use CLOCK_REALTIME, but invent a plausible resolution. */
       posix_clock_id = CLOCK_REALTIME;
       posix_clock_resolution = 1e-3;
@@ -176,7 +173,7 @@ static inline double
 posix_diff (ptimer_system_time *pst1, ptimer_system_time *pst2)
 {
   return ((pst1->tv_sec - pst2->tv_sec)
-         + (pst1->tv_nsec - pst2->tv_nsec) / 1e9);
+          + (pst1->tv_nsec - pst2->tv_nsec) / 1e9);
 }
 
 static inline double
@@ -184,7 +181,7 @@ posix_resolution (void)
 {
   return posix_clock_resolution;
 }
-#endif /* PTIMER_POSIX */
+#endif  /* PTIMER_POSIX */
 
 #ifdef PTIMER_GETTIMEOFDAY
 /* Elapsed time measurement using gettimeofday: system time is held in
@@ -209,7 +206,7 @@ static inline double
 gettimeofday_diff (ptimer_system_time *pst1, ptimer_system_time *pst2)
 {
   return ((pst1->tv_sec - pst2->tv_sec)
-         + (pst1->tv_usec - pst2->tv_usec) / 1e6);
+          + (pst1->tv_usec - pst2->tv_usec) / 1e6);
 }
 
 static inline double
@@ -220,7 +217,7 @@ gettimeofday_resolution (void)
      than 1ms.  Assume 100 usecs.  */
   return 0.1;
 }
-#endif /* PTIMER_GETTIMEOFDAY */
+#endif  /* PTIMER_GETTIMEOFDAY */
 
 #ifdef PTIMER_WINDOWS
 /* Elapsed time measurement on Windows: where high-resolution timers
@@ -291,9 +288,9 @@ windows_resolution (void)
   if (windows_hires_timers)
     return 1.0 / windows_hires_freq;
   else
-    return 10;                 /* according to MSDN */
+    return 10;                  /* according to MSDN */
 }
-#endif /* PTIMER_WINDOWS */
+#endif  /* PTIMER_WINDOWS */
 \f
 /* The code below this point is independent of timer implementation. */
 
@@ -352,7 +349,7 @@ ptimer_reset (struct ptimer *pt)
 }
 
 /* Measure the elapsed time since timer creation/reset.  This causes
-   the timer to internally call clock_gettime (or gettimeofday, etc.) 
+   the timer to internally call clock_gettime (or gettimeofday, etc.)
    to update its idea of current time.  The time is returned, but is
    also stored for later access through ptimer_read().