diff options
Diffstat (limited to 'src/misc.c')
| -rw-r--r-- | src/misc.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/misc.c b/src/misc.c new file mode 100644 index 0000000..ddd857a --- /dev/null +++ b/src/misc.c @@ -0,0 +1,48 @@ +#include "misc.h" + +#include <stdio.h> +#include <time.h> + +#if defined(_WIN32) +#error GetCurrentTime implementation missing +#else +int64_t GetCurrentTime() +{ + struct timespec t; + + if (clock_gettime(CLOCK_MONOTONIC, &t) == -1) + return -1; + + return ((int64_t) t.tv_sec * 1000) + (int64_t) t.tv_nsec / 1000 / 1000; +} +#endif + +// https://gist.github.com/ccbrown/9722406 +void DumpHex(const void* data, size_t size) { + char ascii[17]; + size_t i, j; + ascii[16] = '\0'; + for (i = 0; i < size; ++i) { + printf("%02X ", ((unsigned char*)data)[i]); + if (((unsigned char*)data)[i] >= ' ' && ((unsigned char*)data)[i] <= '~') { + ascii[i % 16] = ((unsigned char*)data)[i]; + } else { + ascii[i % 16] = '.'; + } + if ((i+1) % 8 == 0 || i+1 == size) { + printf(" "); + if ((i+1) % 16 == 0) { + printf("| %s \n", ascii); + } else if (i+1 == size) { + ascii[(i+1) % 16] = '\0'; + if ((i+1) % 16 <= 8) { + printf(" "); + } + for (j = (i+1) % 16; j < 16; ++j) { + printf(" "); + } + printf("| %s \n", ascii); + } + } + } +} |
