]> git.sesse.net Git - cubemap/blobdiff - timespec.cpp
Fix an issue where access.log would have the wrong timestamp.
[cubemap] / timespec.cpp
diff --git a/timespec.cpp b/timespec.cpp
new file mode 100644 (file)
index 0000000..66fa26a
--- /dev/null
@@ -0,0 +1,28 @@
+#include <assert.h>
+#include <sys/time.h>
+
+#include "timespec.h"
+
+timespec clock_diff(const timespec &a, const timespec &b)
+{
+       timespec ret;
+       ret.tv_sec = b.tv_sec - a.tv_sec;
+       ret.tv_nsec = b.tv_nsec - a.tv_nsec;
+       if (ret.tv_nsec < 0) {
+               ret.tv_sec--;
+               ret.tv_nsec += 1000000000;
+       }
+       assert(ret.tv_nsec >= 0);
+       return ret;
+}
+
+timespec clock_add(const timespec &a, const timespec &b)
+{
+       timespec ret;
+       ret.tv_sec = a.tv_sec + b.tv_sec;
+       ret.tv_nsec = b.tv_nsec + b.tv_nsec;
+
+       ret.tv_sec += ret.tv_nsec / 1000000000;
+       ret.tv_nsec %= 1000000000;
+       return ret;
+}