Re: [PATCH v3 07/44] qemu-option: Make uses of find_desc_by_name() more similar

2020-07-07 Thread Greg Kurz
On Mon,  6 Jul 2020 10:09:13 +0200
Markus Armbruster  wrote:

> This is to make the next commit easier to review.
> 
> Signed-off-by: Markus Armbruster 
> Reviewed-by: Eric Blake 
> Reviewed-by: Vladimir Sementsov-Ogievskiy 
> ---

Reviewed-by: Greg Kurz 

>  util/qemu-option.c | 32 ++--
>  1 file changed, 18 insertions(+), 14 deletions(-)
> 
> diff --git a/util/qemu-option.c b/util/qemu-option.c
> index fd1fd23521..1df55bc881 100644
> --- a/util/qemu-option.c
> +++ b/util/qemu-option.c
> @@ -270,6 +270,7 @@ static void qemu_opt_del_all(QemuOpts *opts, const char 
> *name)
>  const char *qemu_opt_get(QemuOpts *opts, const char *name)
>  {
>  QemuOpt *opt;
> +const QemuOptDesc *desc;
>  
>  if (opts == NULL) {
>  return NULL;
> @@ -277,7 +278,7 @@ const char *qemu_opt_get(QemuOpts *opts, const char *name)
>  
>  opt = qemu_opt_find(opts, name);
>  if (!opt) {
> -const QemuOptDesc *desc = find_desc_by_name(opts->list->desc, name);
> +desc = find_desc_by_name(opts->list->desc, name);
>  if (desc && desc->def_value_str) {
>  return desc->def_value_str;
>  }
> @@ -348,6 +349,7 @@ static bool qemu_opt_get_bool_helper(QemuOpts *opts, 
> const char *name,
>   bool defval, bool del)
>  {
>  QemuOpt *opt;
> +const QemuOptDesc *desc;
>  bool ret = defval;
>  
>  if (opts == NULL) {
> @@ -356,7 +358,7 @@ static bool qemu_opt_get_bool_helper(QemuOpts *opts, 
> const char *name,
>  
>  opt = qemu_opt_find(opts, name);
>  if (opt == NULL) {
> -const QemuOptDesc *desc = find_desc_by_name(opts->list->desc, name);
> +desc = find_desc_by_name(opts->list->desc, name);
>  if (desc && desc->def_value_str) {
>  parse_option_bool(name, desc->def_value_str, &ret, &error_abort);
>  }
> @@ -384,6 +386,7 @@ static uint64_t qemu_opt_get_number_helper(QemuOpts 
> *opts, const char *name,
> uint64_t defval, bool del)
>  {
>  QemuOpt *opt;
> +const QemuOptDesc *desc;
>  uint64_t ret = defval;
>  
>  if (opts == NULL) {
> @@ -392,7 +395,7 @@ static uint64_t qemu_opt_get_number_helper(QemuOpts 
> *opts, const char *name,
>  
>  opt = qemu_opt_find(opts, name);
>  if (opt == NULL) {
> -const QemuOptDesc *desc = find_desc_by_name(opts->list->desc, name);
> +desc = find_desc_by_name(opts->list->desc, name);
>  if (desc && desc->def_value_str) {
>  parse_option_number(name, desc->def_value_str, &ret, 
> &error_abort);
>  }
> @@ -421,6 +424,7 @@ static uint64_t qemu_opt_get_size_helper(QemuOpts *opts, 
> const char *name,
>   uint64_t defval, bool del)
>  {
>  QemuOpt *opt;
> +const QemuOptDesc *desc;
>  uint64_t ret = defval;
>  
>  if (opts == NULL) {
> @@ -429,7 +433,7 @@ static uint64_t qemu_opt_get_size_helper(QemuOpts *opts, 
> const char *name,
>  
>  opt = qemu_opt_find(opts, name);
>  if (opt == NULL) {
> -const QemuOptDesc *desc = find_desc_by_name(opts->list->desc, name);
> +desc = find_desc_by_name(opts->list->desc, name);
>  if (desc && desc->def_value_str) {
>  parse_option_size(name, desc->def_value_str, &ret, &error_abort);
>  }
> @@ -540,18 +544,18 @@ void qemu_opt_set_bool(QemuOpts *opts, const char 
> *name, bool val,
> Error **errp)
>  {
>  QemuOpt *opt;
> -const QemuOptDesc *desc = opts->list->desc;
> +const QemuOptDesc *desc;
>  
> -opt = g_malloc0(sizeof(*opt));
> -opt->desc = find_desc_by_name(desc, name);
> -if (!opt->desc && !opts_accepts_any(opts)) {
> +desc = find_desc_by_name(opts->list->desc, name);
> +if (!desc && !opts_accepts_any(opts)) {
>  error_setg(errp, QERR_INVALID_PARAMETER, name);
> -g_free(opt);
>  return;
>  }
>  
> +opt = g_malloc0(sizeof(*opt));
>  opt->name = g_strdup(name);
>  opt->opts = opts;
> +opt->desc = desc;
>  opt->value.boolean = !!val;
>  opt->str = g_strdup(val ? "on" : "off");
>  QTAILQ_INSERT_TAIL(&opts->head, opt, next);
> @@ -561,18 +565,18 @@ void qemu_opt_set_number(QemuOpts *opts, const char 
> *name, int64_t val,
>   Error **errp)
>  {
>  QemuOpt *opt;
> -const QemuOptDesc *desc = opts->list->desc;
> +const QemuOptDesc *desc;
>  
> -opt = g_malloc0(sizeof(*opt));
> -opt->desc = find_desc_by_name(desc, name);
> -if (!opt->desc && !opts_accepts_any(opts)) {
> +desc = find_desc_by_name(opts->list->desc, name);
> +if (!desc && !opts_accepts_any(opts)) {
>  error_setg(errp, QERR_INVALID_PARAMETER, name);
> -g_free(opt);
>  return;
>  }
>  
> +opt = g_malloc0(sizeof(*opt));
>  opt->name = g_strdup(name);
>  opt->opts = opts;
> +opt->desc = desc;
>  opt->valu

[PATCH v3 07/44] qemu-option: Make uses of find_desc_by_name() more similar

2020-07-06 Thread Markus Armbruster
This is to make the next commit easier to review.

Signed-off-by: Markus Armbruster 
Reviewed-by: Eric Blake 
Reviewed-by: Vladimir Sementsov-Ogievskiy 
---
 util/qemu-option.c | 32 ++--
 1 file changed, 18 insertions(+), 14 deletions(-)

diff --git a/util/qemu-option.c b/util/qemu-option.c
index fd1fd23521..1df55bc881 100644
--- a/util/qemu-option.c
+++ b/util/qemu-option.c
@@ -270,6 +270,7 @@ static void qemu_opt_del_all(QemuOpts *opts, const char 
*name)
 const char *qemu_opt_get(QemuOpts *opts, const char *name)
 {
 QemuOpt *opt;
+const QemuOptDesc *desc;
 
 if (opts == NULL) {
 return NULL;
@@ -277,7 +278,7 @@ const char *qemu_opt_get(QemuOpts *opts, const char *name)
 
 opt = qemu_opt_find(opts, name);
 if (!opt) {
-const QemuOptDesc *desc = find_desc_by_name(opts->list->desc, name);
+desc = find_desc_by_name(opts->list->desc, name);
 if (desc && desc->def_value_str) {
 return desc->def_value_str;
 }
@@ -348,6 +349,7 @@ static bool qemu_opt_get_bool_helper(QemuOpts *opts, const 
char *name,
  bool defval, bool del)
 {
 QemuOpt *opt;
+const QemuOptDesc *desc;
 bool ret = defval;
 
 if (opts == NULL) {
@@ -356,7 +358,7 @@ static bool qemu_opt_get_bool_helper(QemuOpts *opts, const 
char *name,
 
 opt = qemu_opt_find(opts, name);
 if (opt == NULL) {
-const QemuOptDesc *desc = find_desc_by_name(opts->list->desc, name);
+desc = find_desc_by_name(opts->list->desc, name);
 if (desc && desc->def_value_str) {
 parse_option_bool(name, desc->def_value_str, &ret, &error_abort);
 }
@@ -384,6 +386,7 @@ static uint64_t qemu_opt_get_number_helper(QemuOpts *opts, 
const char *name,
uint64_t defval, bool del)
 {
 QemuOpt *opt;
+const QemuOptDesc *desc;
 uint64_t ret = defval;
 
 if (opts == NULL) {
@@ -392,7 +395,7 @@ static uint64_t qemu_opt_get_number_helper(QemuOpts *opts, 
const char *name,
 
 opt = qemu_opt_find(opts, name);
 if (opt == NULL) {
-const QemuOptDesc *desc = find_desc_by_name(opts->list->desc, name);
+desc = find_desc_by_name(opts->list->desc, name);
 if (desc && desc->def_value_str) {
 parse_option_number(name, desc->def_value_str, &ret, &error_abort);
 }
@@ -421,6 +424,7 @@ static uint64_t qemu_opt_get_size_helper(QemuOpts *opts, 
const char *name,
  uint64_t defval, bool del)
 {
 QemuOpt *opt;
+const QemuOptDesc *desc;
 uint64_t ret = defval;
 
 if (opts == NULL) {
@@ -429,7 +433,7 @@ static uint64_t qemu_opt_get_size_helper(QemuOpts *opts, 
const char *name,
 
 opt = qemu_opt_find(opts, name);
 if (opt == NULL) {
-const QemuOptDesc *desc = find_desc_by_name(opts->list->desc, name);
+desc = find_desc_by_name(opts->list->desc, name);
 if (desc && desc->def_value_str) {
 parse_option_size(name, desc->def_value_str, &ret, &error_abort);
 }
@@ -540,18 +544,18 @@ void qemu_opt_set_bool(QemuOpts *opts, const char *name, 
bool val,
Error **errp)
 {
 QemuOpt *opt;
-const QemuOptDesc *desc = opts->list->desc;
+const QemuOptDesc *desc;
 
-opt = g_malloc0(sizeof(*opt));
-opt->desc = find_desc_by_name(desc, name);
-if (!opt->desc && !opts_accepts_any(opts)) {
+desc = find_desc_by_name(opts->list->desc, name);
+if (!desc && !opts_accepts_any(opts)) {
 error_setg(errp, QERR_INVALID_PARAMETER, name);
-g_free(opt);
 return;
 }
 
+opt = g_malloc0(sizeof(*opt));
 opt->name = g_strdup(name);
 opt->opts = opts;
+opt->desc = desc;
 opt->value.boolean = !!val;
 opt->str = g_strdup(val ? "on" : "off");
 QTAILQ_INSERT_TAIL(&opts->head, opt, next);
@@ -561,18 +565,18 @@ void qemu_opt_set_number(QemuOpts *opts, const char 
*name, int64_t val,
  Error **errp)
 {
 QemuOpt *opt;
-const QemuOptDesc *desc = opts->list->desc;
+const QemuOptDesc *desc;
 
-opt = g_malloc0(sizeof(*opt));
-opt->desc = find_desc_by_name(desc, name);
-if (!opt->desc && !opts_accepts_any(opts)) {
+desc = find_desc_by_name(opts->list->desc, name);
+if (!desc && !opts_accepts_any(opts)) {
 error_setg(errp, QERR_INVALID_PARAMETER, name);
-g_free(opt);
 return;
 }
 
+opt = g_malloc0(sizeof(*opt));
 opt->name = g_strdup(name);
 opt->opts = opts;
+opt->desc = desc;
 opt->value.uint = val;
 opt->str = g_strdup_printf("%" PRId64, val);
 QTAILQ_INSERT_TAIL(&opts->head, opt, next);
-- 
2.26.2