Fix timeradd

wow i am stupid for writing this code
This commit is contained in:
jD91mZM2
2018-10-11 19:52:54 +02:00
parent 1f3154b45c
commit b517629371
2 changed files with 21 additions and 11 deletions
+1 -1
View File
@@ -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
View File
@@ -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);
}