projects
/
yaz-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add json_parser_get_position and json_parse2
[yaz-moved-to-github.git]
/
src
/
json.c
diff --git
a/src/json.c
b/src/json.c
index
6c34fcb
..
1cef6bd
100644
(file)
--- a/
src/json.c
+++ b/
src/json.c
@@
-433,7
+433,8
@@
struct json_node *json_parser_parse(json_parser_t p, const char *json_str)
return n;
}
return n;
}
-struct json_node *json_parse(const char *json_str, const char **errmsg)
+struct json_node *json_parse2(const char *json_str, const char **errmsg,
+ size_t *pos)
{
json_parser_t p = json_parser_create();
struct json_node *n = 0;
{
json_parser_t p = json_parser_create();
struct json_node *n = 0;
@@
-447,11
+448,18
@@
struct json_node *json_parse(const char *json_str, const char **errmsg)
n = json_parser_parse(p, json_str);
if (!n && errmsg)
*errmsg = json_parser_get_errmsg(p);
n = json_parser_parse(p, json_str);
if (!n && errmsg)
*errmsg = json_parser_get_errmsg(p);
+ if (pos)
+ *pos = json_parser_get_position(p);
json_parser_destroy(p);
}
return n;
}
json_parser_destroy(p);
}
return n;
}
+struct json_node *json_parse(const char *json_str, const char **errmsg)
+{
+ return json_parse2(json_str, errmsg, 0);
+}
+
void json_write_wrbuf(struct json_node *node, WRBUF result)
{
switch (node->type)
void json_write_wrbuf(struct json_node *node, WRBUF result)
{
switch (node->type)
@@
-586,6
+594,11
@@
const char *json_parser_get_errmsg(json_parser_t p)
return p->err_msg;
}
return p->err_msg;
}
+size_t json_parser_get_position(json_parser_t p)
+{
+ return p->cp - p->buf;
+}
+
/*
* Local variables:
* c-basic-offset: 4
/*
* Local variables:
* c-basic-offset: 4