[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 05/16] vl: introduce object_parse_property_opt
From: |
Marc-André Lureau |
Subject: |
Re: [PATCH 05/16] vl: introduce object_parse_property_opt |
Date: |
Thu, 14 Nov 2019 12:23:28 +0400 |
On Wed, Nov 13, 2019 at 6:42 PM Paolo Bonzini <address@hidden> wrote:
>
> We will reuse the parsing loop of machine_set_property soon for "-accel",
> but we do not want the "_" -> "-" conversion since "-accel" can just
> standardize on dashes. We will also add a bunch of legacy option handling
> to keep the QOM machine object clean. Extract the loop into a separate
> function, and keep the legacy handling in machine_set_property.
>
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
> vl.c | 38 +++++++++++++++++++++++---------------
> 1 file changed, 23 insertions(+), 15 deletions(-)
>
> diff --git a/vl.c b/vl.c
> index dbc99d7..b93217d 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -2617,27 +2617,17 @@ static MachineClass *select_machine(void)
> return machine_class;
> }
>
> -static int machine_set_property(void *opaque,
> - const char *name, const char *value,
> - Error **errp)
> +static int object_parse_property_opt(Object *obj,
> + const char *name, const char *value,
> + const char *skip, Error **errp)
> {
> - Object *obj = OBJECT(opaque);
> Error *local_err = NULL;
> - char *p, *qom_name;
>
> - if (strcmp(name, "type") == 0) {
> + if (g_str_equal(name, skip)) {
> return 0;
> }
>
> - qom_name = g_strdup(name);
> - for (p = qom_name; *p; p++) {
> - if (*p == '_') {
> - *p = '-';
> - }
> - }
> -
> - object_property_parse(obj, value, qom_name, &local_err);
> - g_free(qom_name);
> + object_property_parse(obj, value, name, &local_err);
>
> if (local_err) {
> error_propagate(errp, local_err);
> @@ -2647,6 +2637,24 @@ static int machine_set_property(void *opaque,
> return 0;
> }
>
> +static int machine_set_property(void *opaque,
> + const char *name, const char *value,
> + Error **errp)
> +{
> + char *qom_name = g_strdup(name);
Could use g_autofree, and thus return directly without r.
> + char *p;
> + int r;
> +
> + for (p = qom_name; *p; p++) {
> + if (*p == '_') {
> + *p = '-';
> + }
> + }
> +
> + r = object_parse_property_opt(opaque, name, value, "type", errp);
You want to pass qom_name, I guess
> + g_free(qom_name);
> + return r;
> +}
>
> /*
> * Initial object creation happens before all other
> --
> 1.8.3.1
>
>
>
--
Marc-André Lureau
- Re: [PATCH 01/16] memory: do not look at current_machine->accel, (continued)
- [PATCH 04/16] vl: move icount configuration earlier, Paolo Bonzini, 2019/11/13
- [PATCH 03/16] vl: merge -accel processing into configure_accelerators, Paolo Bonzini, 2019/11/13
- [PATCH 05/16] vl: introduce object_parse_property_opt, Paolo Bonzini, 2019/11/13
- Re: [PATCH 05/16] vl: introduce object_parse_property_opt,
Marc-André Lureau <=
- [PATCH 06/16] vl: configure accelerators from -accel options, Paolo Bonzini, 2019/11/13
- [PATCH 07/16] vl: warn for unavailable accelerators, clarify messages, Paolo Bonzini, 2019/11/13
- [PATCH 08/16] qom: introduce object_register_sugar_prop, Paolo Bonzini, 2019/11/13
- [PATCH 09/16] qom: add object_new_with_class, Paolo Bonzini, 2019/11/13