despite being marked legacy, this was specified by SUSv3 as part of the XSI option; only the most recent version of the standard dropped it. reportedly there's actual code using it.
@@ -0,0 +1,22 @@
+#ifndef _SYS_TIMEB_H
+#define _SYS_TIMEB_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_time_t
+#include <bits/alltypes.h>
+struct timeb {
+ time_t time;
+ unsigned short millitm;
+ short timezone, dstflag;
+};
+int ftime(struct timeb *);
+}
@@ -0,0 +1,12 @@
+#include <sys/timeb.h>
+#include <time.h>
+int ftime(struct timeb *tp)
+{
+ struct timespec ts;
+ clock_gettime(CLOCK_REALTIME, &ts);
+ tp->time = ts.tv_sec;
+ tp->millitm = ts.tv_nsec / 1000000;
+ tp->timezone = tp->dstflag = 0;
+ return 0;