]> Git Repo - qemu.git/blobdiff - qapi/string-input-visitor.c
Merge remote-tracking branch 'remotes/berrange/tags/pull-qio-2017-10-04-1' into staging
[qemu.git] / qapi / string-input-visitor.c
index 806b01ae3a2d34c57ed78343c8e6b7922fed7886..67a0a4a58b522153fa6debbf5890dc55402dcae2 100644 (file)
@@ -54,6 +54,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 +326,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 +365,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.023895 seconds and 4 git commands to generate.