#include "tai.h" #include /** @file tai.c @author djb @source qmail @brief 'temps atomic' time handling */ void tai_add(struct tai *t, const struct tai *u, const struct tai *v) { t->x = u->x + v->x; } void tai_now(struct tai *t) { tai_unix(t, time((time_t *)0)); } void tai_pack(char *s, const struct tai *t) { uint64 x; x = t->x; // clang-format off s[7] = (char)x; x >>= 8; s[6] = (char)x; x >>= 8; s[5] = (char)x; x >>= 8; s[4] = (char)x; x >>= 8; s[3] = (char)x; x >>= 8; s[2] = (char)x; x >>= 8; s[1] = (char)x; x >>= 8; s[0] = (char)x; // clang-format on } void tai_sub(struct tai *t, const struct tai *u, const struct tai *v) { t->x = u->x - v->x; } void tai_uint(struct tai *t, unsigned int u) { t->x = u; } void tai_unpack(const char *s, struct tai *t) { uint64 x; x = (unsigned char)s[0]; // clang-format off x <<= 8; x += (unsigned char) s[1]; x <<= 8; x += (unsigned char) s[2]; x <<= 8; x += (unsigned char) s[3]; x <<= 8; x += (unsigned char) s[4]; x <<= 8; x += (unsigned char) s[5]; x <<= 8; x += (unsigned char) s[6]; x <<= 8; x += (unsigned char) s[7]; // clang-format on t->x = x; }