Commit 4752cdbb authored by Eric Blake's avatar Eric Blake Committed by Markus Armbruster
Browse files

qapi: Drop inline nested struct in query-version



A future patch will be using a 'name':{dictionary} entry in the
QAPI schema to specify a default value for an optional argument
(see previous commit message for more details why); but existing
use of inline nested structs conflicts with that goal. This patch
fixes one of only two commands relying on nested types, by
breaking the nesting into an explicit type; it means that the
type is now boxed instead of unboxed in C code, but the QMP wire
format is unaffected by this change.

Prefer the safer g_new0() while making the conversion.

Signed-off-by: default avatarEric Blake <eblake@redhat.com>
Reviewed-by: default avatarMarkus Armbruster <armbru@redhat.com>
Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
parent 6446a592
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ void hmp_info_version(Monitor *mon, const QDict *qdict)
    info = qmp_query_version(NULL);

    monitor_printf(mon, "%" PRId64 ".%" PRId64 ".%" PRId64 "%s\n",
                   info->qemu.major, info->qemu.minor, info->qemu.micro,
                   info->qemu->major, info->qemu->minor, info->qemu->micro,
                   info->package);

    qapi_free_VersionInfo(info);
+19 −7
Original line number Diff line number Diff line
@@ -29,15 +29,28 @@
            'DeviceNotActive', 'DeviceNotFound', 'KVMMissingCap' ] }

##
# @VersionInfo:
# @VersionTriple
#
# A description of QEMU's version.
# A three-part version number.
#
# @qemu.major:  The major version number.
#
# @qemu.major:  The major version of QEMU
# @qemu.minor:  The minor version number.
#
# @qemu.minor:  The minor version of QEMU
# @qemu.micro:  The micro version number.
#
# Since: 2.4
##
{ 'struct': 'VersionTriple',
  'data': {'major': 'int', 'minor': 'int', 'micro': 'int'} }


##
# @VersionInfo:
#
# A description of QEMU's version.
#
# @qemu.micro:  The micro version of QEMU.  By current convention, a micro
# @qemu:        The version of QEMU.  By current convention, a micro
#               version of 50 signifies a development branch.  A micro version
#               greater than or equal to 90 signifies a release candidate for
#               the next minor version.  A micro version of less than 50
@@ -51,8 +64,7 @@
# Since: 0.14.0
##
{ 'struct': 'VersionInfo',
  'data': {'qemu': {'major': 'int', 'minor': 'int', 'micro': 'int'},
           'package': 'str'} }
  'data': {'qemu': 'VersionTriple', 'package': 'str'} }

##
# @query-version:
+5 −4
Original line number Diff line number Diff line
@@ -45,15 +45,16 @@ NameInfo *qmp_query_name(Error **errp)

VersionInfo *qmp_query_version(Error **errp)
{
    VersionInfo *info = g_malloc0(sizeof(*info));
    VersionInfo *info = g_new0(VersionInfo, 1);
    const char *version = QEMU_VERSION;
    char *tmp;

    info->qemu.major = strtol(version, &tmp, 10);
    info->qemu = g_new0(VersionTriple, 1);
    info->qemu->major = strtol(version, &tmp, 10);
    tmp++;
    info->qemu.minor = strtol(tmp, &tmp, 10);
    info->qemu->minor = strtol(tmp, &tmp, 10);
    tmp++;
    info->qemu.micro = strtol(tmp, &tmp, 10);
    info->qemu->micro = strtol(tmp, &tmp, 10);
    info->package = g_strdup(QEMU_PKGVERSION);

    return info;