1*959826caSMatt Macy /* $FreeBSD$ */ 2*959826caSMatt Macy #ifndef JSON_H 3*959826caSMatt Macy #define JSON_H 1 4*959826caSMatt Macy 5*959826caSMatt Macy #include "jsmn.h" 6*959826caSMatt Macy 7*959826caSMatt Macy jsmntok_t *parse_json(const char *fn, char **map, size_t *size, int *len); 8*959826caSMatt Macy void free_json(char *map, size_t size, jsmntok_t *tokens); 9*959826caSMatt Macy int json_line(char *map, jsmntok_t *t); 10*959826caSMatt Macy const char *json_name(jsmntok_t *t); 11*959826caSMatt Macy int json_streq(char *map, jsmntok_t *t, const char *s); 12*959826caSMatt Macy int json_len(jsmntok_t *t); 13*959826caSMatt Macy 14*959826caSMatt Macy extern int verbose; 15*959826caSMatt Macy 16*959826caSMatt Macy #include <stdbool.h> 17*959826caSMatt Macy 18*959826caSMatt Macy extern int eprintf(int level, int var, const char *fmt, ...); 19*959826caSMatt Macy #define pr_fmt(fmt) fmt 20*959826caSMatt Macy 21*959826caSMatt Macy #define pr_err(fmt, ...) \ 22*959826caSMatt Macy eprintf(0, verbose, pr_fmt(fmt), ##__VA_ARGS__) 23*959826caSMatt Macy 24*959826caSMatt Macy #define pr_info(fmt, ...) \ 25*959826caSMatt Macy eprintf(1, verbose, pr_fmt(fmt), ##__VA_ARGS__) 26*959826caSMatt Macy 27*959826caSMatt Macy #define pr_debug(fmt, ...) \ 28*959826caSMatt Macy eprintf(2, verbose, pr_fmt(fmt), ##__VA_ARGS__) 29*959826caSMatt Macy 30*959826caSMatt Macy #ifndef roundup 31*959826caSMatt Macy #define roundup(x, y) ( \ 32*959826caSMatt Macy { \ 33*959826caSMatt Macy const typeof(y) __y = y; \ 34*959826caSMatt Macy (((x) + (__y - 1)) / __y) * __y; \ 35*959826caSMatt Macy } \ 36*959826caSMatt Macy ) 37*959826caSMatt Macy #endif 38*959826caSMatt Macy 39*959826caSMatt Macy #endif 40