]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
compat for timespecsub() and friends
authorDamien Miller <djm@mindrot.org>
Wed, 17 Nov 2021 22:26:20 +0000 (09:26 +1100)
committerDamien Miller <djm@mindrot.org>
Wed, 17 Nov 2021 22:26:20 +0000 (09:26 +1100)
defines.h

index 857abb8b1d6fd6dd92938066625a74f650e5a588..36c06eddd67b13a31eb32224941e8caae390aaa6 100644 (file)
--- a/defines.h
+++ b/defines.h
@@ -532,6 +532,39 @@ struct winsize {
            ((tsp)->tv_sec cmp (usp)->tv_sec))
 #endif
 
+/* Operations on timespecs. */
+#ifndef timespecclear
+#define        timespecclear(tsp)              (tsp)->tv_sec = (tsp)->tv_nsec = 0
+#endif
+#ifndef timespeccmp
+#define        timespeccmp(tsp, usp, cmp)                                      \
+       (((tsp)->tv_sec == (usp)->tv_sec) ?                             \
+           ((tsp)->tv_nsec cmp (usp)->tv_nsec) :                       \
+           ((tsp)->tv_sec cmp (usp)->tv_sec))
+#endif
+#ifndef timespecadd
+#define        timespecadd(tsp, usp, vsp)                                      \
+       do {                                                            \
+               (vsp)->tv_sec = (tsp)->tv_sec + (usp)->tv_sec;          \
+               (vsp)->tv_nsec = (tsp)->tv_nsec + (usp)->tv_nsec;       \
+               if ((vsp)->tv_nsec >= 1000000000L) {                    \
+                       (vsp)->tv_sec++;                                \
+                       (vsp)->tv_nsec -= 1000000000L;                  \
+               }                                                       \
+       } while (0)
+#endif
+#ifndef timespecsub
+#define        timespecsub(tsp, usp, vsp)                                      \
+       do {                                                            \
+               (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec;          \
+               (vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec;       \
+               if ((vsp)->tv_nsec < 0) {                               \
+                       (vsp)->tv_sec--;                                \
+                       (vsp)->tv_nsec += 1000000000L;                  \
+               }                                                       \
+       } while (0)
+#endif
+
 #ifndef __P
 # define __P(x) x
 #endif