add nonstandard timespec/timeval conversion macros in sys/time.h
authorRich Felker <dalias@aerifal.cx>
Wed, 5 Feb 2014 21:34:23 +0000 (16:34 -0500)
committerRich Felker <dalias@aerifal.cx>
Wed, 5 Feb 2014 21:34:23 +0000 (16:34 -0500)
these are poorly designed (illogical argument order) and even poorly
implemented (brace issues) on glibc, but unfortunately some software
is using them. we could consider removing them again in the future at
some point if they're documented as deprecated, but for now the
simplest thing to do is just to provide them under _GNU_SOURCE.

include/sys/time.h

index b6787c3c309015d953c815d67a86df2025a200a2..bfe1414e86fbc5b95f87680d022c6042cdd175c0 100644 (file)
@@ -51,6 +51,17 @@ int adjtime (const struct timeval *, struct timeval *);
        ((a)->tv_usec += 1000000, (a)->tv_sec--) )
 #endif
 
+#if defined(_GNU_SOURCE)
+#define TIMEVAL_TO_TIMESPEC(tv, ts) ( \
+       (ts)->tv_sec = (tv)->tv_sec, \
+       (ts)->tv_nsec = (tv)->tv_usec * 1000, \
+       (void)0 )
+#define TIMESPEC_TO_TIMEVAL(tv, ts) ( \
+       (tv)->tv_sec = (ts)->tv_sec, \
+       (tv)->tv_usec = (ts)->tv_nsec / 1000, \
+       (void)0 )
+#endif
+
 #ifdef __cplusplus
 }
 #endif