]> Git Repo - qemu.git/blobdiff - qapi/string-input-visitor.c
ioapic: fix up includes
[qemu.git] / qapi / string-input-visitor.c
index 806b01ae3a2d34c57ed78343c8e6b7922fed7886..b3fdd0827dd0f28e7efb12d23b52282cce5907f9 100644 (file)
@@ -16,6 +16,7 @@
 #include "qapi/string-input-visitor.h"
 #include "qapi/visitor-impl.h"
 #include "qapi/qmp/qerror.h"
+#include "qapi/qmp/qnull.h"
 #include "qemu/option.h"
 #include "qemu/queue.h"
 #include "qemu/range.h"
@@ -54,6 +55,10 @@ static int parse_str(StringInputVisitor *siv, const char *name, Error **errp)
         return 0;
     }
 
+    if (!*str) {
+        return 0;
+    }
+
     do {
         errno = 0;
         start = strtoll(str, &endptr, 0);
@@ -322,6 +327,22 @@ static void parse_type_number(Visitor *v, const char *name, double *obj,
     *obj = val;
 }
 
+static void parse_type_null(Visitor *v, const char *name, QNull **obj,
+                            Error **errp)
+{
+    StringInputVisitor *siv = to_siv(v);
+
+    *obj = NULL;
+
+    if (!siv->string || siv->string[0]) {
+        error_setg(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
+                   "null");
+        return;
+    }
+
+    *obj = qnull();
+}
+
 static void string_input_free(Visitor *v)
 {
     StringInputVisitor *siv = to_siv(v);
@@ -345,6 +366,7 @@ Visitor *string_input_visitor_new(const char *str)
     v->visitor.type_bool = parse_type_bool;
     v->visitor.type_str = parse_type_str;
     v->visitor.type_number = parse_type_number;
+    v->visitor.type_null = parse_type_null;
     v->visitor.start_list = start_list;
     v->visitor.next_list = next_list;
     v->visitor.check_list = check_list;
This page took 0.024476 seconds and 4 git commands to generate.