/* * Copyright (c) 2016, 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); } uint64_t calc_padding(uint64_t offset, uint64_t alignment) { uint64_t 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) { for (int i = 0; i < length; i++) { fprintf(stderr, "%02X ", ((unsigned char *)data)[i]); } fprintf(stderr, "\n"); } uint64_t read_be64(const void *ptr) { uint64_t data; memcpy(&data, ptr, sizeof(data)); return NTOHLL(data); } uint32_t read_be32(const void *ptr) { uint32_t data; memcpy(&data, ptr, sizeof(data)); return ntohl(data); } uint16_t read_be16(const void *ptr) { uint16_t data; memcpy(&data, ptr, sizeof(data)); return ntohs(data); } /* Local Variables: */ /* c-file-style: "BSD" */ /* End: */