]> code.delx.au - gnu-emacs/blobdiff - lib/timespec-sub.c
doh, fixing year in ChangeLog entries introduced by last two commits
[gnu-emacs] / lib / timespec-sub.c
index 7c4c781b7f633799bf80ed35fe42388c2e683331..c57437556d1b2fbae5b24491d02950c635d210b8 100644 (file)
@@ -1,6 +1,6 @@
 /* Subtract two struct timespec values.
 
-   Copyright (C) 2011-2012 Free Software Foundation, Inc.
+   Copyright (C) 2011-2015 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -18,8 +18,8 @@
 /* Written by Paul Eggert.  */
 
 /* Return the difference between two timespec values A and B.  On
-   overflow, return an extremal value.  This assumes 0 <= tv_nsec <=
-   999999999.  */
+   overflow, return an extremal value.  This assumes 0 <= tv_nsec <
+   TIMESPEC_RESOLUTION.  */
 
 #include <config.h>
 #include "timespec.h"
@@ -29,7 +29,6 @@
 struct timespec
 timespec_sub (struct timespec a, struct timespec b)
 {
-  struct timespec r;
   time_t rs = a.tv_sec;
   time_t bs = b.tv_sec;
   int ns = a.tv_nsec - b.tv_nsec;
@@ -37,7 +36,7 @@ timespec_sub (struct timespec a, struct timespec b)
 
   if (ns < 0)
     {
-      rns = ns + 1000000000;
+      rns = ns + TIMESPEC_RESOLUTION;
       if (rs == TYPE_MINIMUM (time_t))
         {
           if (bs <= 0)
@@ -59,13 +58,11 @@ timespec_sub (struct timespec a, struct timespec b)
       else
         {
           rs = TYPE_MAXIMUM (time_t);
-          rns = 999999999;
+          rns = TIMESPEC_RESOLUTION - 1;
         }
     }
   else
     rs -= bs;
 
-  r.tv_sec = rs;
-  r.tv_nsec = rns;
-  return r;
+  return make_timespec (rs, rns);
 }