aboutsummaryrefslogtreecommitdiff
path: root/src/proone_util.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/proone_util.c')
-rw-r--r--src/proone_util.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/proone_util.c b/src/proone_util.c
index 118dc35..dc9e498 100644
--- a/src/proone_util.c
+++ b/src/proone_util.c
@@ -1,5 +1,13 @@
#include "proone_util.h"
+#include <stdlib.h>
+
+
+void proone_succeed_or_die (const int ret) {
+ if (ret < 0) {
+ abort();
+ }
+}
void proone_rnd_alphanumeric_str (proone_rnd_engine_t *rnd_engine, char *str, const size_t len) {
static const char SET[] = "qwertyuiopasdfghjklzxcvbnm0123456789";
@@ -22,3 +30,35 @@ void proone_rnd_alphanumeric_str (proone_rnd_engine_t *rnd_engine, char *str, co
}
}
}
+
+void proone_empty_func () {}
+
+struct timespec proone_sub_timespec (const struct timespec *a, const struct timespec *b) {
+ struct timespec ret;
+
+ if (a->tv_nsec < b->tv_nsec) {
+ ret.tv_sec = a->tv_sec - 1 - b->tv_sec;
+ ret.tv_nsec = 1000000000 + a->tv_nsec - b->tv_nsec;
+ }
+ else {
+ ret.tv_sec = a->tv_sec - b->tv_sec;
+ ret.tv_nsec = a->tv_nsec - b->tv_nsec;
+ }
+
+ return ret;
+}
+
+double proone_real_timespec (const struct timespec *ts) {
+ return (double)ts->tv_sec + (double)ts->tv_nsec / 1000000000.0;
+}
+
+int proone_cmp_timespec (const struct timespec *a, const struct timespec *b) {
+ if (a->tv_sec < b->tv_sec) {
+ return -1;
+ }
+ else if (a->tv_sec > b->tv_sec) {
+ return 1;
+ }
+
+ return a->tv_nsec < b->tv_nsec ? -1 : a->tv_nsec > b->tv_nsec ? 1 : 0;
+}