X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fjson.c;h=a214eac190a655d7fc795530406aa54d9dfb9cdb;hp=d3cee687fcceee6b5dc2403cb6970f4ac77281eb;hb=a6b61b9f8b6576e8159a4e7e6aee88bba7e5d07d;hpb=99a9c51b93fd45748c78ace834345f2921c94d88 diff --git a/src/json.c b/src/json.c index d3cee68..a214eac 100644 --- a/src/json.c +++ b/src/json.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2012 Index Data + * Copyright (C) Index Data * See the file LICENSE for details. */ /** @@ -36,7 +36,7 @@ struct json_parser_s { json_parser_t json_parser_create(void) { json_parser_t p = (json_parser_t) xmalloc(sizeof(*p)); - + p->buf = 0; p->cp = 0; p->err_msg = 0; @@ -198,7 +198,7 @@ static struct json_node *json_parse_string(json_parser_t p) } n = json_new_node(p, json_node_string); dst = n->u.string = (char *) xmalloc(l + 1); - + cp = p->cp; while (*cp && *cp != '"') { @@ -302,7 +302,7 @@ static struct json_node *json_parse_elements(json_parser_t p) } m2 = json_new_node(p, json_node_list); m2->u.link[0] = n2; - + m1->u.link[1] = m2; m1 = m2; } @@ -377,7 +377,7 @@ static struct json_node *json_parse_members(json_parser_t p) } m2 = json_new_node(p, json_node_list); m2->u.link[0] = n2; - + m1->u.link[1] = m2; m1 = m2; } @@ -462,46 +462,6 @@ struct json_node *json_parse(const char *json_str, const char **errmsg) return json_parse2(json_str, errmsg, 0); } -static void wrbuf_json_write(WRBUF b, const char *cp, size_t sz) -{ - size_t i; - for (i = 0; i < sz; i++) - { - if (cp[i] > 0 && cp[i] < 32) - { - wrbuf_putc(b, '\\'); - switch (cp[i]) - { - case '\b': wrbuf_putc(b, 'b'); break; - case '\f': wrbuf_putc(b, 'f'); break; - case '\n': wrbuf_putc(b, 'n'); break; - case '\r': wrbuf_putc(b, 'r'); break; - case '\t': wrbuf_putc(b, 't'); break; - default: - wrbuf_printf(b, "u%04x", cp[i]); - } - } - else if (cp[i] == '"') - { - wrbuf_putc(b, '\\'); wrbuf_putc(b, '"'); - } - else if (cp[i] == '\\') - { - wrbuf_putc(b, '\\'); wrbuf_putc(b, '\\'); - } - else - { /* leave encoding as raw UTF-8 */ - wrbuf_putc(b, cp[i]); - } - } - -} - -void wrbuf_json_puts(WRBUF b, const char *str) -{ - wrbuf_json_write(b, str, strlen(str)); -} - static void json_indent(WRBUF result, int indent) { size_t l = wrbuf_len(result); @@ -525,7 +485,7 @@ static void json_write_wrbuf_r(struct json_node *node, WRBUF result, int indent) wrbuf_puts(result, "{"); if (indent >= 0) { - wrbuf_puts(result, "\n"); + wrbuf_puts(result, "\n"); json_indent(result, sub_indent); } if (node->u.link[0]) @@ -623,7 +583,7 @@ static struct json_node **json_get_objectp(struct json_node *n, struct json_node *json_get_object(struct json_node *n, const char *name) { struct json_node **np = json_get_objectp(n, name); - + if (np) return *np; return 0; @@ -632,7 +592,7 @@ struct json_node *json_get_object(struct json_node *n, const char *name) struct json_node *json_detach_object(struct json_node *n, const char *name) { struct json_node **np = json_get_objectp(n, name); - + if (np) { struct json_node *n = *np;