From 27ebeff879126434740af3db63004cb4eb4b0021 Mon Sep 17 00:00:00 2001 From: Magnus Ahltorp Date: Fri, 12 Feb 2016 16:03:05 +0100 Subject: Move code to util.c and filebuffer.c --- c_src/util.c | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 c_src/util.c (limited to 'c_src/util.c') diff --git a/c_src/util.c b/c_src/util.c new file mode 100644 index 0000000..76294eb --- /dev/null +++ b/c_src/util.c @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2015, NORDUnet A/S. + * See LICENSE for licensing information. + */ + +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "erlport.h" +#include "permdb.h" +#include "util.h" + +void +set_error(char **error, const char *format, ...) +{ + va_list args; + int ret; + + if (error == NULL) { + return; + } + + va_start(args, format); + char *formatted = NULL; + ret = vasprintf (&formatted, format, args); + if (ret == -1) { + fprintf(stderr, "vasprintf error\n"); + return; + } + if (*error) { + free(*error); + } + fprintf(stderr, "error: %s\n", formatted); + *error = formatted; + va_end(args); +} + +int +calc_padding(int offset, int alignment) +{ + int misalign = offset % alignment; + if (misalign == 0) { + return 0; + } + return alignment - misalign; +} + +void +print_entry(node_object node) +{ + for (int i = 0; i < entriespernode; i++) { + fprintf(stderr, " %016llx", (long long unsigned int)node.data[i]); + } + fprintf(stderr, "\n"); +} + +void +print_hex(const void *data, int length) +{ + int i; + for (i = 0; i < length; i++) { + fprintf(stderr, "%02X ", ((unsigned char *)data)[i]); + } + fprintf(stderr, "\n"); +} + +uint64_t +read_host64(void *ptr) +{ + uint64_t data; + + memcpy(&data, ptr, sizeof(data)); + + return data; +} + +uint32_t +read_be32(void *ptr) +{ + uint32_t data; + + memcpy(&data, ptr, sizeof(data)); + + return ntohl(data); +} + +uint16_t +read_be16(void *ptr) +{ + uint16_t data; + + memcpy(&data, ptr, sizeof(data)); + + return ntohs(data); +} + -- cgit v1.1