Explorar o código

Add a portable tor_timercmp

We can't use the platform timercmp, because
  1) some platforms don't have them
  2) some that do have them only support certain relational operators
Nick Mathewson %!s(int64=15) %!d(string=hai) anos
pai
achega
94a99ad205
Modificáronse 1 ficheiros con 7 adicións e 0 borrados
  1. 7 0
      src/common/compat.h

+ 7 - 0
src/common/compat.h

@@ -332,6 +332,13 @@ struct tm *tor_localtime_r(const time_t *timep, struct tm *result);
 struct tm *tor_gmtime_r(const time_t *timep, struct tm *result);
 #endif
 
+/** Return true iff the tvp is related to uvp according to the relational
+ * operator cmp.  Recognized values for cmp are ==, <=, <, >=, and >. */
+#define tor_timercmp(tvp, uvp, cmp)                                     \
+  (((tvp)->tv_sec == (uvp)->tv_sec) ?                                   \
+   ((tvp)->tv_usec cmp  (uvp)->tv_usec) :                               \
+   ((tvp)->tv_sec cmp  (uvp)->tv_sec))
+
 /* ===== File compatibility */
 int replace_file(const char *from, const char *to);
 int touch_file(const char *fname);