- uint64_t usec;
-
- usec = t.tv_nsec / 1000 + (uint64_t)t.tv_sec * 1000000;
- return usec;
-}
-
-uint64_t time_to_nsec(struct timespec t)
-{
- uint64_t nsec;
-
- nsec = t.tv_nsec + (uint64_t)t.tv_sec * 1000000000;
- return nsec;
-}
-
-struct timespec time_from_msec(uint64_t msec)
-{
- struct timespec t;
-
- t.tv_nsec = (msec % 1000) * 1000000;
- t.tv_sec = msec / 1000;
+ if (t.tv_sec < 0 || t.tv_nsec >= 1000000000) {
+ if (abortstr) {
+ fprintf(stderr, "%s: malformed time %li.%09li\n",
+ abortstr,
+ (long)t.tv_sec, (long)t.tv_nsec);
+ abort();
+ } else {
+ struct timespec old = t;
+
+ if (t.tv_nsec >= 1000000000) {
+ t.tv_sec += t.tv_nsec / 1000000000;
+ t.tv_nsec %= 1000000000;
+ }
+ if (t.tv_sec < 0)
+ t.tv_sec = 0;
+
+ fprintf(stderr, "WARNING: malformed time"
+ " %li seconds %li ns converted to %li.%09li.\n",
+ (long)old.tv_sec, (long)old.tv_nsec,
+ (long)t.tv_sec, (long)t.tv_nsec);
+ }
+ }