Message ID | 1391087394-17914-2-git-send-email-pbonzini@redhat.com |
---|---|
State | New |
Headers | show |
On 01/30/2014 06:09 AM, Paolo Bonzini wrote: > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > qapi/string-input-visitor.c | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) Reviewed-by: Eric Blake <eblake@redhat.com>
Am 30.01.2014 14:09, schrieb Paolo Bonzini: > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > qapi/string-input-visitor.c | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/qapi/string-input-visitor.c b/qapi/string-input-visitor.c > index 8f1bc41..793548a 100644 > --- a/qapi/string-input-visitor.c > +++ b/qapi/string-input-visitor.c > @@ -14,6 +14,7 @@ > #include "qapi/string-input-visitor.h" > #include "qapi/visitor-impl.h" > #include "qapi/qmp/qerror.h" > +#include "qemu/option.h" > > struct StringInputVisitor > { > @@ -41,6 +42,28 @@ static void parse_type_int(Visitor *v, int64_t *obj, const char *name, > *obj = val; > } > > +static void parse_type_size(Visitor *v, uint64_t *obj, const char *name, > + Error **errp) > +{ > + StringInputVisitor *siv = DO_UPCAST(StringInputVisitor, visitor, v); > + Error *err = NULL; > + uint64_t val; > + > + if (siv->string) { > + parse_option_size(name, siv->string, &val, &err); > + } else { > + error_set(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null", > + "size"); error_setg()? Otherwise looks fine. CC'ing Luiz. Andreas > + return; > + } > + if (err) { > + error_propagate(errp, err); > + return; > + } > + > + *obj = val; > +} > + > static void parse_type_bool(Visitor *v, bool *obj, const char *name, > Error **errp) > { > @@ -128,6 +151,7 @@ StringInputVisitor *string_input_visitor_new(const char *str) > > v->visitor.type_enum = input_type_enum; > v->visitor.type_int = parse_type_int; > + v->visitor.type_size = parse_type_size; > v->visitor.type_bool = parse_type_bool; > v->visitor.type_str = parse_type_str; > v->visitor.type_number = parse_type_number; >
Il 05/02/2014 18:13, Andreas Färber ha scritto: > > + error_set(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null", > > + "size"); > > error_setg()? We're still using error_set for existing errors. In this case, the code is taken from qdev-properties.c. Paolo > Otherwise looks fine. CC'ing Luiz.
On 02/05/2014 10:18 AM, Paolo Bonzini wrote: > Il 05/02/2014 18:13, Andreas Färber ha scritto: >> > + error_set(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : >> "null", >> > + "size"); >> >> error_setg()? > > We're still using error_set for existing errors. In this case, the code > is taken from qdev-properties.c. error_setg uses the generic category, but here, we specifically want the INVALID_PARAMETER_TYPE category.
diff --git a/qapi/string-input-visitor.c b/qapi/string-input-visitor.c index 8f1bc41..793548a 100644 --- a/qapi/string-input-visitor.c +++ b/qapi/string-input-visitor.c @@ -14,6 +14,7 @@ #include "qapi/string-input-visitor.h" #include "qapi/visitor-impl.h" #include "qapi/qmp/qerror.h" +#include "qemu/option.h" struct StringInputVisitor { @@ -41,6 +42,28 @@ static void parse_type_int(Visitor *v, int64_t *obj, const char *name, *obj = val; } +static void parse_type_size(Visitor *v, uint64_t *obj, const char *name, + Error **errp) +{ + StringInputVisitor *siv = DO_UPCAST(StringInputVisitor, visitor, v); + Error *err = NULL; + uint64_t val; + + if (siv->string) { + parse_option_size(name, siv->string, &val, &err); + } else { + error_set(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null", + "size"); + return; + } + if (err) { + error_propagate(errp, err); + return; + } + + *obj = val; +} + static void parse_type_bool(Visitor *v, bool *obj, const char *name, Error **errp) { @@ -128,6 +151,7 @@ StringInputVisitor *string_input_visitor_new(const char *str) v->visitor.type_enum = input_type_enum; v->visitor.type_int = parse_type_int; + v->visitor.type_size = parse_type_size; v->visitor.type_bool = parse_type_bool; v->visitor.type_str = parse_type_str; v->visitor.type_number = parse_type_number;
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- qapi/string-input-visitor.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)