time: fix diffus

This commit is contained in:
Matheus
2026-09-19 12:50:23 -03:00
parent c347afc761
commit 8d82a8fdf1
+14 -3
View File
@@ -32,9 +32,20 @@ static inline time_t timespec_diffms(timespec_t a, timespec_t b) {
} }
static inline time_t timespec_diffus(timespec_t a, timespec_t b) { static inline time_t timespec_diffus(timespec_t a, timespec_t b) {
time_t nsecdiff = abs(a.ns - b.ns); if (a.s > b.s || (a.s == b.s && a.ns > b.ns)) {
time_t secdiff = abs(a.s - b.s); timespec_t tmp = a;
return nsecdiff / 1000 + secdiff * 1000000; a = b;
b = tmp;
}
time_t secdiff = b.s - a.s;
time_t nsecdiff = b.ns - a.ns;
if (nsecdiff < 0) {
secdiff--;
nsecdiff += 1000000000;
}
return secdiff * 1000000 + nsecdiff / 1000;
} }
static inline time_t timespec_ns(timespec_t a) { static inline time_t timespec_ns(timespec_t a) {