qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 11/11] RFC: qemu-img: Use new JSON output format


From: Fam Zheng
Subject: Re: [Qemu-devel] [PATCH 11/11] RFC: qemu-img: Use new JSON output formatter
Date: Fri, 11 Dec 2015 09:36:41 +0800
User-agent: Mutt/1.5.21 (2010-09-15)

On Thu, 12/10 16:53, Eric Blake wrote:
> Now that we can pretty-print straight to JSON from a visitor,
> we can eliminate the temporary conversion into QObject inside
> qemu-img.
> 
> RFC because at least qemu-iotests 043 has changed output, not
> included in this version of the patch.  Conflicts with Fam's
> qemu-img edits, so one of the two of us will get to rebase on
> the other:
> https://lists.gnu.org/archive/html/qemu-devel/2015-12/msg01756.html

I touched qemu-img map's output, this patch updates info and check, so the
context conflict should be okay, but it would be better to get this patch in
before mine so I can update my patch to make use of the new formatter, without
code churn.

Thanks!

Fam

> 
> Signed-off-by: Eric Blake <address@hidden>
> Cc: Fam Zheng <address@hidden>
> ---
>  qemu-img.c | 70 
> ++++++++++++++++++++++++++------------------------------------
>  1 file changed, 29 insertions(+), 41 deletions(-)
> 
> diff --git a/qemu-img.c b/qemu-img.c
> index cb961e6..08dca98 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -22,9 +22,9 @@
>   * THE SOFTWARE.
>   */
>  #include "qapi-visit.h"
> -#include "qapi/qmp-output-visitor.h"
> +#include "qapi/json-output-visitor.h"
>  #include "qapi/qmp/qerror.h"
> -#include "qapi/qmp/qobject-json.h"
> +#include "qapi/qmp/qstring.h"
>  #include "qemu-common.h"
>  #include "qemu/option.h"
>  #include "qemu/error-report.h"
> @@ -375,19 +375,15 @@ fail:
> 
>  static void dump_json_image_check(ImageCheck *check, bool quiet)
>  {
> -    Error *local_err = NULL;
> -    QString *str;
> -    QmpOutputVisitor *ov = qmp_output_visitor_new();
> -    QObject *obj;
> -    visit_type_ImageCheck(qmp_output_get_visitor(ov),
> -                          &check, NULL, &local_err);
> -    obj = qmp_output_get_qobject(ov);
> -    str = qobject_to_json_pretty(obj);
> -    assert(str != NULL);
> -    qprintf(quiet, "%s\n", qstring_get_str(str));
> -    qobject_decref(obj);
> -    qmp_output_visitor_cleanup(ov);
> -    QDECREF(str);
> +    char *str;
> +    JsonOutputVisitor *ov = json_output_visitor_new(true);
> +    visit_type_ImageCheck(json_output_get_visitor(ov),
> +                          &check, NULL, &error_abort);
> +    str = json_output_get_string(ov);
> +    assert(str);
> +    qprintf(quiet, "%s\n", str);
> +    g_free(str);
> +    json_output_visitor_cleanup(ov);
>  }
> 
>  static void dump_human_image_check(ImageCheck *check, bool quiet)
> @@ -1926,36 +1922,28 @@ static void dump_snapshots(BlockDriverState *bs)
> 
>  static void dump_json_image_info_list(ImageInfoList *list)
>  {
> -    Error *local_err = NULL;
> -    QString *str;
> -    QmpOutputVisitor *ov = qmp_output_visitor_new();
> -    QObject *obj;
> -    visit_type_ImageInfoList(qmp_output_get_visitor(ov),
> -                             &list, NULL, &local_err);
> -    obj = qmp_output_get_qobject(ov);
> -    str = qobject_to_json_pretty(obj);
> -    assert(str != NULL);
> -    printf("%s\n", qstring_get_str(str));
> -    qobject_decref(obj);
> -    qmp_output_visitor_cleanup(ov);
> -    QDECREF(str);
> +    char *str;
> +    JsonOutputVisitor *ov = json_output_visitor_new(true);
> +    visit_type_ImageInfoList(json_output_get_visitor(ov),
> +                             &list, NULL, &error_abort);
> +    str = json_output_get_string(ov);
> +    assert(str);
> +    printf("%s\n", str);
> +    json_output_visitor_cleanup(ov);
> +    g_free(str);
>  }
> 
>  static void dump_json_image_info(ImageInfo *info)
>  {
> -    Error *local_err = NULL;
> -    QString *str;
> -    QmpOutputVisitor *ov = qmp_output_visitor_new();
> -    QObject *obj;
> -    visit_type_ImageInfo(qmp_output_get_visitor(ov),
> -                         &info, NULL, &local_err);
> -    obj = qmp_output_get_qobject(ov);
> -    str = qobject_to_json_pretty(obj);
> -    assert(str != NULL);
> -    printf("%s\n", qstring_get_str(str));
> -    qobject_decref(obj);
> -    qmp_output_visitor_cleanup(ov);
> -    QDECREF(str);
> +    char *str;
> +    JsonOutputVisitor *ov = json_output_visitor_new(true);
> +    visit_type_ImageInfo(json_output_get_visitor(ov),
> +                         &info, NULL, &error_abort);
> +    str = json_output_get_string(ov);
> +    assert(str);
> +    printf("%s\n", str);
> +    json_output_visitor_cleanup(ov);
> +    g_free(str);
>  }
> 
>  static void dump_human_image_info_list(ImageInfoList *list)
> -- 
> 2.4.3
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]