- case json_type_null:
- printf("unset %s %s_TYPE %s_LENGTH %s_KEYS; ",
- prefix, prefix, prefix, prefix);
- break;
+static void
+match_cb(struct json_object *res, void *priv)
+{
+ struct list_head *h = priv;
+ struct match_item *i = calloc(1, sizeof(*i));
+
+ if (i)
+ {
+ i->jsobj = res;
+ list_add_tail(&i->list, h);
+ }
+}
+
+static void
+print_error(struct jp_state *state, char *expr)
+{
+ int i;
+ bool first = true;
+
+ fprintf(stderr, "Syntax error: ");
+
+ switch (state->error_code)
+ {
+ case -4:
+ fprintf(stderr, "Unexpected character\n");
+ break;
+
+ case -3:
+ fprintf(stderr, "String or label literal too long\n");
+ break;
+
+ case -2:
+ fprintf(stderr, "Invalid escape sequence\n");
+ break;
+
+ case -1:
+ fprintf(stderr, "Unterminated string\n");
+ break;
+
+ default:
+ for (i = 0; i < sizeof(state->error_code) * 8; i++)
+ {
+ if (state->error_code & (1 << i))
+ {
+ fprintf(stderr,
+ first ? "Expecting %s" : " or %s", tokennames[i]);
+
+ first = false;
+ }