@@ -1,5 +1,5 @@
/*
- * JSON Parser
+ * JSON Parser
*
* Copyright IBM, Corp. 2009
*
@@ -17,7 +17,7 @@
#include "qemu-common.h"
#include "qapi/qmp/qlist.h"
-QObject *json_parser_parse(GQueue *tokens, va_list *ap);
-QObject *json_parser_parse_err(GQueue *tokens, va_list *ap, Error **errp);
+QObject *json_parser_parse(GQueue *tokens);
+QObject *json_parser_parse_err(GQueue *tokens, Error **errp);
#endif
@@ -3731,7 +3731,7 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens)
Monitor *mon = cur_mon;
Error *err = NULL;
- req = json_parser_parse_err(tokens, NULL, &err);
+ req = json_parser_parse_err(tokens, &err);
if (err || !req || qobject_type(req) != QTYPE_QDICT) {
if (!err) {
error_setg(&err, QERR_JSON_PARSING);
@@ -576,7 +576,7 @@ static void process_event(JSONMessageParser *parser, GQueue *tokens)
g_assert(s && parser);
g_debug("process_event: called");
- qdict = qobject_to_qdict(json_parser_parse_err(tokens, NULL, &err));
+ qdict = qobject_to_qdict(json_parser_parse_err(tokens, &err));
if (err || !qdict) {
QDECREF(qdict);
qdict = qdict_new();
@@ -37,7 +37,7 @@ typedef struct JSONParserContext
* 4) deal with premature EOI
*/
-static QObject *parse_value(JSONParserContext *ctxt, va_list *ap);
+static QObject *parse_value(JSONParserContext *ctxt);
/**
* Error handler
@@ -268,7 +268,7 @@ static void parser_context_free(JSONParserContext *ctxt)
/**
* Parsing rules
*/
-static int parse_pair(JSONParserContext *ctxt, QDict *dict, va_list *ap)
+static int parse_pair(JSONParserContext *ctxt, QDict *dict)
{
QObject *key = NULL, *value;
JSONToken *peek, *token;
@@ -279,7 +279,7 @@ static int parse_pair(JSONParserContext *ctxt, QDict *dict, va_list *ap)
goto out;
}
- key = parse_value(ctxt, ap);
+ key = parse_value(ctxt);
if (!key || qobject_type(key) != QTYPE_QSTRING) {
parse_error(ctxt, peek, "key is not a string in object");
goto out;
@@ -296,7 +296,7 @@ static int parse_pair(JSONParserContext *ctxt, QDict *dict, va_list *ap)
goto out;
}
- value = parse_value(ctxt, ap);
+ value = parse_value(ctxt);
if (value == NULL) {
parse_error(ctxt, token, "Missing value in dict");
goto out;
@@ -314,7 +314,7 @@ out:
return -1;
}
-static QObject *parse_object(JSONParserContext *ctxt, va_list *ap)
+static QObject *parse_object(JSONParserContext *ctxt)
{
QDict *dict = NULL;
JSONToken *token, *peek;
@@ -331,7 +331,7 @@ static QObject *parse_object(JSONParserContext *ctxt, va_list *ap)
}
if (peek->type != JSON_RCURLY) {
- if (parse_pair(ctxt, dict, ap) == -1) {
+ if (parse_pair(ctxt, dict) == -1) {
goto out;
}
@@ -347,7 +347,7 @@ static QObject *parse_object(JSONParserContext *ctxt, va_list *ap)
goto out;
}
- if (parse_pair(ctxt, dict, ap) == -1) {
+ if (parse_pair(ctxt, dict) == -1) {
goto out;
}
@@ -368,7 +368,7 @@ out:
return NULL;
}
-static QObject *parse_array(JSONParserContext *ctxt, va_list *ap)
+static QObject *parse_array(JSONParserContext *ctxt)
{
QList *list = NULL;
JSONToken *token, *peek;
@@ -387,7 +387,7 @@ static QObject *parse_array(JSONParserContext *ctxt, va_list *ap)
if (peek->type != JSON_RSQUARE) {
QObject *obj;
- obj = parse_value(ctxt, ap);
+ obj = parse_value(ctxt);
if (obj == NULL) {
parse_error(ctxt, token, "expecting value");
goto out;
@@ -407,7 +407,7 @@ static QObject *parse_array(JSONParserContext *ctxt, va_list *ap)
goto out;
}
- obj = parse_value(ctxt, ap);
+ obj = parse_value(ctxt);
if (obj == NULL) {
parse_error(ctxt, token, "expecting value");
goto out;
@@ -492,7 +492,7 @@ static QObject *parse_literal(JSONParserContext *ctxt)
}
}
-static QObject *parse_value(JSONParserContext *ctxt, va_list *ap)
+static QObject *parse_value(JSONParserContext *ctxt)
{
JSONToken *token;
@@ -504,9 +504,9 @@ static QObject *parse_value(JSONParserContext *ctxt, va_list *ap)
switch (token->type) {
case JSON_LCURLY:
- return parse_object(ctxt, ap);
+ return parse_object(ctxt);
case JSON_LSQUARE:
- return parse_array(ctxt, ap);
+ return parse_array(ctxt);
case JSON_INTEGER:
case JSON_FLOAT:
case JSON_STRING:
@@ -519,12 +519,12 @@ static QObject *parse_value(JSONParserContext *ctxt, va_list *ap)
}
}
-QObject *json_parser_parse(GQueue *tokens, va_list *ap)
+QObject *json_parser_parse(GQueue *tokens)
{
- return json_parser_parse_err(tokens, ap, NULL);
+ return json_parser_parse_err(tokens, NULL);
}
-QObject *json_parser_parse_err(GQueue *tokens, va_list *ap, Error **errp)
+QObject *json_parser_parse_err(GQueue *tokens, Error **errp)
{
JSONParserContext *ctxt = parser_context_new(tokens);
QObject *result;
@@ -533,7 +533,7 @@ QObject *json_parser_parse_err(GQueue *tokens, va_list *ap, Error **errp)
return NULL;
}
- result = parse_value(ctxt, ap);
+ result = parse_value(ctxt);
error_propagate(errp, ctxt->err);
@@ -28,7 +28,7 @@ typedef struct JSONParsingState
static void parse_json(JSONMessageParser *parser, GQueue *tokens)
{
JSONParsingState *s = container_of(parser, JSONParsingState, parser);
- s->result = json_parser_parse(tokens, NULL);
+ s->result = json_parser_parse(tokens);
}
QObject *qobject_from_json(const char *string)
@@ -373,7 +373,7 @@ static void qmp_response(JSONMessageParser *parser, GQueue *tokens)
QMPResponseParser *qmp = container_of(parser, QMPResponseParser, parser);
QObject *obj;
- obj = json_parser_parse(tokens, NULL);
+ obj = json_parser_parse(tokens);
if (!obj) {
fprintf(stderr, "QMP JSON response parsing failed\n");
exit(1);
Now that there are no callers of dynamic JSON parsing, the parser does not need to handle a va_list argument. Signed-off-by: Eric Blake <eblake@redhat.com> --- include/qapi/qmp/json-parser.h | 6 +++--- monitor.c | 2 +- qga/main.c | 2 +- qobject/json-parser.c | 34 +++++++++++++++++----------------- qobject/qjson.c | 2 +- tests/libqtest.c | 2 +- 6 files changed, 24 insertions(+), 24 deletions(-)