On Thu, Oct 13, 2016 at 06:44:14PM +0200, Markus Armbruster wrote: > machine_set_property() replaces '_' by '-' in the property name. > Except it fails to replace an initial '_'. Screwed up in commit > b0ddb8b. Reproducer: "-M pc,__foo_bar=true" produces "Property > '._-foo-bar' not found". > > Error messages using a mangled name rather than the name the user > actually wrote is user-hostile, but that's a different topic. > > Signed-off-by: Markus Armbruster <[email protected]>
Reviewed-by: Eduardo Habkost <[email protected]> I suggest we follow the same approach we used in the x86 CPU code: instead of requiring a special parser that magically translate strings, just add property aliases for the old names that contained "_". It would fix the user-hostile error messages as well. > --- > vl.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/vl.c b/vl.c > index c657acd..1c0b0ba 100644 > --- a/vl.c > +++ b/vl.c > @@ -2804,17 +2804,16 @@ static int machine_set_property(void *opaque, > { > Object *obj = OBJECT(opaque); > Error *local_err = NULL; > - char *c, *qom_name; > + char *p, *qom_name; > > if (strcmp(name, "type") == 0) { > return 0; > } > > qom_name = g_strdup(name); > - c = qom_name; > - while (*c++) { > - if (*c == '_') { > - *c = '-'; > + for (p = qom_name; *p; p++) { > + if (*p == '_') { > + *p = '-'; > } > } > > -- > 2.5.5 > -- Eduardo
