Imported Debian patch 2.5.1p3-1
[debian/amanda] / common-src / clock.c
index 840992f86378f45c85cf06960eee3667e799c718..8f6d6699bd4ac2cfc88cfc3f581cbf7cd8d43447 100644 (file)
@@ -25,7 +25,7 @@
  *                        University of Maryland at College Park
  */
 /*
- * $Id: clock.c,v 1.2.2.2 2002/03/31 21:01:33 jrjackson Exp $
+ * $Id: clock.c,v 1.7.2.1 2007/02/06 12:44:03 martinea Exp $
  *
  * timing functions
  */
 #include "clock.h"
 
 /* local functions */
-static struct timeval timesub P((struct timeval end, struct timeval start));
-static struct timeval timeadd P((struct timeval a, struct timeval b));
+static struct timeval timesub(struct timeval end, struct timeval start);
+static struct timeval timeadd(struct timeval a, struct timeval b);
 
-times_t times_zero = {{0,0}};
+times_t times_zero;
 times_t start_time;
 static int clock_running = 0;
 
-#ifdef HAVE_TWO_ARG_GETTIMEOFDAY
-#  define amanda_gettimeofday(x, y) gettimeofday((x), (y))
-#else
-#  define amanda_gettimeofday(x, y) gettimeofday((x))
-#endif
-
-int clock_is_running()
+int
+clock_is_running(void)
 {
     return clock_running;
 }
 
-void startclock()
+void
+startclock(void)
 {
-#ifdef HAVE_TWO_ARG_GETTIMEOFDAY
-    struct timezone dontcare;
-#endif
+    amanda_timezone dontcare;
 
     clock_running = 1;
     amanda_gettimeofday(&start_time.r, &dontcare);
 }
 
-times_t stopclock()
+times_t
+stopclock(void)
 {
     times_t diff;
     struct timeval end_time;
-
-#ifdef HAVE_TWO_ARG_GETTIMEOFDAY
-    struct timezone dontcare;
-#endif
+    amanda_timezone dontcare;
 
     if(!clock_running) {
        fprintf(stderr,"stopclock botch\n");
@@ -81,14 +73,12 @@ times_t stopclock()
     return diff;
 }
 
-times_t curclock()
+times_t
+curclock(void)
 {
     times_t diff;
     struct timeval end_time;
-
-#ifdef HAVE_TWO_ARG_GETTIMEOFDAY
-    struct timezone dontcare;
-#endif
+    amanda_timezone dontcare;
 
     if(!clock_running) {
        fprintf(stderr,"curclock botch\n");
@@ -99,8 +89,10 @@ times_t curclock()
     return diff;
 }
 
-times_t timesadd(a,b)
-times_t a,b;
+times_t
+timesadd(
+    times_t    a,
+    times_t    b)
 {
     times_t sum;
 
@@ -108,8 +100,10 @@ times_t a,b;
     return sum;
 }
 
-times_t timessub(a,b)
-times_t a,b;
+times_t
+timessub(
+    times_t    a,
+    times_t    b)
 {
     times_t dif;
 
@@ -117,52 +111,66 @@ times_t a,b;
     return dif;
 }
 
-char *times_str(t)
-times_t t;
+char *
+times_str(
+    times_t    t)
 {
     static char str[10][NUM_STR_SIZE+10];
-    static int n = 0;
+    static size_t n = 0;
     char *s;
 
     /* tv_sec/tv_usec are longs on some systems */
-    ap_snprintf(str[n], sizeof(str[n]),
-               "rtime %d.%03d", (int)t.r.tv_sec, (int)t.r.tv_usec/1000);
+    snprintf(str[n], SIZEOF(str[n]), "rtime %lu.%03lu",
+            (unsigned long)t.r.tv_sec,
+            (unsigned long)t.r.tv_usec / 1000);
     s = str[n++];
     n %= am_countof(str);
     return s;
 }
 
-char *walltime_str(t)
-times_t t;
+char *
+walltime_str(
+    times_t    t)
 {
     static char str[10][NUM_STR_SIZE+10];
-    static int n = 0;
+    static size_t n = 0;
     char *s;
 
     /* tv_sec/tv_usec are longs on some systems */
-    ap_snprintf(str[n], sizeof(str[n]),
-               "%d.%03d", (int)t.r.tv_sec, (int)t.r.tv_usec/1000);
+    snprintf(str[n], SIZEOF(str[n]), "%lu.%03lu",
+            (unsigned long)t.r.tv_sec,
+            (unsigned long)t.r.tv_usec/1000);
     s = str[n++];
     n %= am_countof(str);
     return s;
 }
 
-static struct timeval timesub(end,start)
-struct timeval end,start;
+static struct timeval
+timesub(
+    struct timeval     end,
+    struct timeval     start)
 {
     struct timeval diff;
 
     if(end.tv_usec < start.tv_usec) { /* borrow 1 sec */
-       end.tv_sec -= 1;
+       if (end.tv_sec > 0)
+           end.tv_sec -= 1;
        end.tv_usec += 1000000;
     }
     diff.tv_usec = end.tv_usec - start.tv_usec;
-    diff.tv_sec = end.tv_sec - start.tv_sec;
+
+    if (end.tv_sec > start.tv_sec)
+       diff.tv_sec = end.tv_sec - start.tv_sec;
+    else
+       diff.tv_sec = 0;
+
     return diff;
 }
 
-static struct timeval timeadd(a,b)
-struct timeval a,b;
+static struct timeval
+timeadd(
+    struct timeval     a,
+    struct timeval     b)
 {
     struct timeval sum;