Fix timeradd
wow i am stupid for writing this code
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
#define _BITS_SYS_TIME
|
||||
|
||||
#define timeradd(x,y,res) (void) (\
|
||||
(res)->tv_sec = (x)->tv_sec + (y)->tv_sec + ((x)->tv_usec + (y)->tv_usec / 1000000), \
|
||||
(res)->tv_sec = (x)->tv_sec + (y)->tv_sec + (((x)->tv_usec + (y)->tv_usec) / 1000000), \
|
||||
(res)->tv_usec = ((x)->tv_usec + (y)->tv_usec) % 1000000 \
|
||||
)
|
||||
#define timersub(x,y,res) (void) ( \
|
||||
|
||||
+20
-10
@@ -2,10 +2,12 @@
|
||||
#include <sys/time.h>
|
||||
|
||||
int main() {
|
||||
struct timeval x = { .tv_sec = 0, .tv_usec = 15 };
|
||||
struct timeval y = { .tv_sec = 0, .tv_usec = 0 };
|
||||
struct timeval one = { .tv_sec = 0, .tv_usec = 1 };
|
||||
struct timeval max_usec = { .tv_sec = 0, .tv_usec = 999999 };
|
||||
struct timeval x = { .tv_usec = 15 };
|
||||
struct timeval y = { 0 };
|
||||
struct timeval z = { 0 };
|
||||
struct timeval one_usec = { .tv_usec = 1 };
|
||||
struct timeval max_usec = { .tv_usec = 999999 };
|
||||
struct timeval one_sec = { .tv_sec = 1 };
|
||||
|
||||
assert(!timerisset(&y));
|
||||
assert(timerisset(&x));
|
||||
@@ -13,14 +15,22 @@ int main() {
|
||||
assert(!timerisset(&x));
|
||||
|
||||
assert(timercmp(&x, &y, ==));
|
||||
timeradd(&y, &one, &y);
|
||||
assert(!timercmp(&x, &y, ==));
|
||||
assert(timercmp(&x, &y, <));
|
||||
timeradd(&y, &one_usec, &z);
|
||||
assert(!timercmp(&x, &z, ==));
|
||||
assert(timercmp(&x, &z, <));
|
||||
|
||||
timeradd(&y, &max_usec, &y);
|
||||
timeradd(&z, &max_usec, &y);
|
||||
assert(y.tv_sec == 1);
|
||||
assert(y.tv_usec == 0);
|
||||
timersub(&y, &one, &y);
|
||||
assert(y.tv_sec == 0);
|
||||
timersub(&y, &one_usec, &z);
|
||||
assert(z.tv_sec == 0);
|
||||
assert(z.tv_usec == 999999);
|
||||
timeradd(&z, &one_sec, &y);
|
||||
assert(y.tv_sec == 1);
|
||||
assert(y.tv_usec == 999999);
|
||||
for (int i = 0; i < 3; i += 1) {
|
||||
timersub(&y, &one_sec, &y);
|
||||
}
|
||||
assert(y.tv_sec == -2);
|
||||
assert(y.tv_usec == 999999);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user