Provide a macro helper for json_pack that checks the return value and describes what the error is and where it came from
This commit is contained in:
parent
f26273f34f
commit
67f6a0148c
@ -933,6 +933,16 @@ out:
|
||||
}
|
||||
|
||||
|
||||
void _json_check(json_t *val, json_error_t *err, const char *file, const char *func, const int line)
|
||||
{
|
||||
if (likely(val))
|
||||
return;
|
||||
|
||||
LOGERR("Invalid json line:%d col:%d pos:%d text: %s from %s %s:%d",
|
||||
err->line, err->column, err->position, err->text,
|
||||
file, func, line);
|
||||
}
|
||||
|
||||
/* Extracts a string value from a json array with error checking. To be used
|
||||
* when the value of the string returned is only examined and not to be stored.
|
||||
* See json_array_string below */
|
||||
|
||||
@ -266,6 +266,17 @@ typedef struct unixsock unixsock_t;
|
||||
|
||||
typedef struct proc_instance proc_instance_t;
|
||||
|
||||
|
||||
void _json_check(json_t *val, json_error_t *err, const char *file, const char *func, const int line);
|
||||
#define json_check(val, err) _json_check(val, err, __FILE__, __func__, __LINE__)
|
||||
|
||||
/* Check and pack json */
|
||||
#define JSON_CPACK(val, ...) do { \
|
||||
json_error_t err; \
|
||||
val = json_pack_ex(&err, 0, ##__VA_ARGS__); \
|
||||
json_check(val, &err); \
|
||||
} while (0)
|
||||
|
||||
/* No error checking with these, make sure we know they're valid already! */
|
||||
static inline void json_strcpy(char *buf, json_t *val, const char *key)
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user