#include <matchy/maxminddb.h>
#include <stdarg.h>
#include <stddef.h>
#include <stdlib.h>
#define MAX_PATH_DEPTH 32
int MMDB_get_value(MMDB_entry_s *start, MMDB_entry_data_s *entry_data, ...) {
va_list args;
const char *path[MAX_PATH_DEPTH + 1];
size_t count = 0;
va_start(args, entry_data);
while (count < MAX_PATH_DEPTH) {
const char *arg = va_arg(args, const char *);
if (arg == NULL) {
break;
}
path[count++] = arg;
}
va_end(args);
path[count] = NULL;
return MMDB_aget_value(start, entry_data, path);
}
int MMDB_vget_value(MMDB_entry_s *start, MMDB_entry_data_s *entry_data, va_list va_path) {
const char *path[MAX_PATH_DEPTH + 1];
size_t count = 0;
va_list args_copy;
va_copy(args_copy, va_path);
while (count < MAX_PATH_DEPTH) {
const char *arg = va_arg(args_copy, const char *);
if (arg == NULL) {
break;
}
path[count++] = arg;
}
va_end(args_copy);
path[count] = NULL;
return MMDB_aget_value(start, entry_data, path);
}