Alien-libmaxminddb
view release on metacpan or search on metacpan
maxminddb/src/maxminddb.c view on Meta::CPAN
#ifndef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 200809L
#endif
#if HAVE_CONFIG_H
#include <config.h>
#endif
#include "data-pool.h"
#include "maxminddb-compat-util.h"
#include "maxminddb.h"
#include <errno.h>
#include <fcntl.h>
#include <inttypes.h>
#include <limits.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#ifdef _WIN32
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <ws2ipdef.h>
#ifndef SSIZE_MAX
#define SSIZE_MAX INTPTR_MAX
#endif
typedef ADDRESS_FAMILY sa_family_t;
#else
#include <arpa/inet.h>
#include <sys/mman.h>
#include <unistd.h>
#endif
#define MMDB_DATA_SECTION_SEPARATOR (16)
#define MAXIMUM_DATA_STRUCTURE_DEPTH (512)
#ifdef MMDB_DEBUG
#define DEBUG_MSG(msg) fprintf(stderr, msg "\n")
#define DEBUG_MSGF(fmt, ...) fprintf(stderr, fmt "\n", __VA_ARGS__)
#define DEBUG_BINARY(fmt, byte) \
do { \
char *binary = byte_to_binary(byte); \
if (NULL == binary) { \
fprintf(stderr, "Calloc failed in DEBUG_BINARY\n"); \
abort(); \
} \
fprintf(stderr, fmt "\n", binary); \
free(binary); \
} while (0)
#define DEBUG_NL fprintf(stderr, "\n")
#else
#define DEBUG_MSG(...)
#define DEBUG_MSGF(...)
#define DEBUG_BINARY(...)
#define DEBUG_NL
#endif
#ifdef MMDB_DEBUG
char *byte_to_binary(uint8_t byte) {
char *bits = calloc(9, sizeof(char));
if (NULL == bits) {
return bits;
}
for (uint8_t i = 0; i < 8; i++) {
bits[i] = byte & (128 >> i) ? '1' : '0';
}
bits[8] = '\0';
return bits;
}
char *type_num_to_name(uint8_t num) {
switch (num) {
case 0:
return "extended";
case 1:
return "pointer";
case 2:
return "utf8_string";
case 3:
return "double";
case 4:
return "bytes";
case 5:
return "uint16";
case 6:
return "uint32";
case 7:
return "map";
case 8:
return "int32";
case 9:
return "uint64";
case 10:
return "uint128";
case 11:
return "array";
case 12:
return "container";
case 13:
return "end_marker";
case 14:
return "boolean";
case 15:
return "float";
default:
return "unknown type";
}
}
( run in 0.356 second using v1.01-cache-2.11-cpan-f5b5a18a01a )