| /* SPDX-License-Identifier: GPL-2.0 */ |
| #ifndef JSON_H |
| #define JSON_H 1 |
| |
| #include "jsmn.h" |
| |
| jsmntok_t *parse_json(const char *fn, char **map, size_t *size, int *len); |
| void free_json(char *map, size_t size, jsmntok_t *tokens); |
| int json_line(char *map, jsmntok_t *t); |
| const char *json_name(jsmntok_t *t); |
| int json_streq(char *map, jsmntok_t *t, const char *s); |
| int json_len(jsmntok_t *t); |
| |
| extern int verbose; |
| |
| #include <stdbool.h> |
| |
| extern int eprintf(int level, int var, const char *fmt, ...); |
| #define pr_fmt(fmt) fmt |
| |
| #define pr_err(fmt, ...) \ |
| eprintf(0, verbose, pr_fmt(fmt), ##__VA_ARGS__) |
| |
| #define pr_info(fmt, ...) \ |
| eprintf(1, verbose, pr_fmt(fmt), ##__VA_ARGS__) |
| |
| #define pr_debug(fmt, ...) \ |
| eprintf(2, verbose, pr_fmt(fmt), ##__VA_ARGS__) |
| |
| #ifndef roundup |
| #define roundup(x, y) ( \ |
| { \ |
| const typeof(y) __y = y; \ |
| (((x) + (__y - 1)) / __y) * __y; \ |
| } \ |
| ) |
| #endif |
| |
| #endif |