Message ID | 1341949831-13547-2-git-send-email-lcapitulino@redhat.com |
---|---|
State | New |
Headers | show |
Luiz Capitulino <lcapitulino@redhat.com> writes: > It allows for specifying an alias for each option name, see next commits > examples. > > Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> > --- > qemu-option.c | 9 ++++++++- > qemu-option.h | 1 + > 2 files changed, 9 insertions(+), 1 deletion(-) > > diff --git a/qemu-option.c b/qemu-option.c > index bb3886c..59a1f6e 100644 > --- a/qemu-option.c > +++ b/qemu-option.c > @@ -616,6 +616,7 @@ static void opt_set(QemuOpts *opts, const char *name, const char *value, > bool prepend, Error **errp) > { > QemuOpt *opt; > + const char *optname; > const QemuOptDesc *desc = opts->list->desc; > Error *local_err = NULL; > int i; > @@ -624,18 +625,24 @@ static void opt_set(QemuOpts *opts, const char *name, const char *value, > if (strcmp(desc[i].name, name) == 0) { > break; > } > + if (desc[i].alias && strcmp(desc[i].alias, name) == 0) { > + break; > + } > } > if (desc[i].name == NULL) { > if (i == 0) { > /* empty list -> allow any */; > + optname = name; > } else { > error_set(errp, QERR_INVALID_PARAMETER, name); > return; > } > + } else { > + optname = desc[i].name; > } > > opt = g_malloc0(sizeof(*opt)); > - opt->name = g_strdup(name); > + opt->name = g_strdup(optname); > opt->opts = opts; > if (prepend) { > QTAILQ_INSERT_HEAD(&opts->head, opt, next); What about qemu_opt_set_bool() and qemu_opts_validate()? Don't they need alias support as well? By the way, I really dislike qemu_opt_set_bool() duplicating qemu_opt_set(). Shame on commit f02b77c9. > diff --git a/qemu-option.h b/qemu-option.h > index 951dec3..7106d2f 100644 > --- a/qemu-option.h > +++ b/qemu-option.h > @@ -94,6 +94,7 @@ enum QemuOptType { > > typedef struct QemuOptDesc { > const char *name; > + const char *alias; > enum QemuOptType type; > const char *help; > } QemuOptDesc;
On Wed, 11 Jul 2012 09:00:59 +0200 Markus Armbruster <armbru@redhat.com> wrote: > Luiz Capitulino <lcapitulino@redhat.com> writes: > > > It allows for specifying an alias for each option name, see next commits > > examples. > > > > Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> > > --- > > qemu-option.c | 9 ++++++++- > > qemu-option.h | 1 + > > 2 files changed, 9 insertions(+), 1 deletion(-) > > > > diff --git a/qemu-option.c b/qemu-option.c > > index bb3886c..59a1f6e 100644 > > --- a/qemu-option.c > > +++ b/qemu-option.c > > @@ -616,6 +616,7 @@ static void opt_set(QemuOpts *opts, const char *name, const char *value, > > bool prepend, Error **errp) > > { > > QemuOpt *opt; > > + const char *optname; > > const QemuOptDesc *desc = opts->list->desc; > > Error *local_err = NULL; > > int i; > > @@ -624,18 +625,24 @@ static void opt_set(QemuOpts *opts, const char *name, const char *value, > > if (strcmp(desc[i].name, name) == 0) { > > break; > > } > > + if (desc[i].alias && strcmp(desc[i].alias, name) == 0) { > > + break; > > + } > > } > > if (desc[i].name == NULL) { > > if (i == 0) { > > /* empty list -> allow any */; > > + optname = name; > > } else { > > error_set(errp, QERR_INVALID_PARAMETER, name); > > return; > > } > > + } else { > > + optname = desc[i].name; > > } > > > > opt = g_malloc0(sizeof(*opt)); > > - opt->name = g_strdup(name); > > + opt->name = g_strdup(optname); > > opt->opts = opts; > > if (prepend) { > > QTAILQ_INSERT_HEAD(&opts->head, opt, next); > > What about qemu_opt_set_bool() and qemu_opts_validate()? Don't they > need alias support as well? Oh, you're right, thanks for catching this. > By the way, I really dislike qemu_opt_set_bool() duplicating > qemu_opt_set(). Shame on commit f02b77c9. Yeah, I'll fix the duplication. > > > diff --git a/qemu-option.h b/qemu-option.h > > index 951dec3..7106d2f 100644 > > --- a/qemu-option.h > > +++ b/qemu-option.h > > @@ -94,6 +94,7 @@ enum QemuOptType { > > > > typedef struct QemuOptDesc { > > const char *name; > > + const char *alias; > > enum QemuOptType type; > > const char *help; > > } QemuOptDesc; >
diff --git a/qemu-option.c b/qemu-option.c index bb3886c..59a1f6e 100644 --- a/qemu-option.c +++ b/qemu-option.c @@ -616,6 +616,7 @@ static void opt_set(QemuOpts *opts, const char *name, const char *value, bool prepend, Error **errp) { QemuOpt *opt; + const char *optname; const QemuOptDesc *desc = opts->list->desc; Error *local_err = NULL; int i; @@ -624,18 +625,24 @@ static void opt_set(QemuOpts *opts, const char *name, const char *value, if (strcmp(desc[i].name, name) == 0) { break; } + if (desc[i].alias && strcmp(desc[i].alias, name) == 0) { + break; + } } if (desc[i].name == NULL) { if (i == 0) { /* empty list -> allow any */; + optname = name; } else { error_set(errp, QERR_INVALID_PARAMETER, name); return; } + } else { + optname = desc[i].name; } opt = g_malloc0(sizeof(*opt)); - opt->name = g_strdup(name); + opt->name = g_strdup(optname); opt->opts = opts; if (prepend) { QTAILQ_INSERT_HEAD(&opts->head, opt, next); diff --git a/qemu-option.h b/qemu-option.h index 951dec3..7106d2f 100644 --- a/qemu-option.h +++ b/qemu-option.h @@ -94,6 +94,7 @@ enum QemuOptType { typedef struct QemuOptDesc { const char *name; + const char *alias; enum QemuOptType type; const char *help; } QemuOptDesc;
It allows for specifying an alias for each option name, see next commits examples. Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> --- qemu-option.c | 9 ++++++++- qemu-option.h | 1 + 2 files changed, 9 insertions(+), 1 deletion(-)