[libvirt] [PATCH 1/3] Re-factor qemu version parsing

Daniel P. Berrange berrange at redhat.com
Wed Jun 10 12:21:55 UTC 2009


On Wed, Jun 10, 2009 at 01:17:35PM +0100, Mark McLoughlin wrote:
> This patch is purely re-factoring without any functional changes
> to make way for the next patch.
> 
> The main thing achieved by the refactoring is that we now have
> easier access to the parenthesised string that KVM folks seem
> to delight in changing.

>  
>  int qemudExtractVersionInfo(const char *qemu,
>                              unsigned int *retversion,
> @@ -421,7 +488,6 @@ int qemudExtractVersionInfo(const char *qemu,
>      pid_t child;
>      int newstdout = -1;
>      int ret = -1, status;
> -    unsigned int major, minor, micro;
>      unsigned int version, kvm_version;
>      unsigned int flags = 0;
>  
> @@ -443,22 +509,11 @@ int qemudExtractVersionInfo(const char *qemu,
>          goto cleanup2;
>      }
>  
> -    if (sscanf(help, "QEMU PC emulator version %u.%u.%u (kvm-%u)",
> -               &major, &minor, &micro, &kvm_version) != 4)
> -        kvm_version = 0;
> +    char *eol = strchr(help, '\n');
> +    if (eol) *eol = '\0';

IIUC this NULL terminates the 'help' string on the first line, which
will surely break....

>  
> -    if (!kvm_version &&
> -        sscanf(help, "QEMU PC emulator version %u.%u.%u",
> -               &major, &minor, &micro) != 3) {
> -        char *eol = strchr(help, '\n');
> -        if (eol) *eol = '\0';
> -        qemudReportError(NULL, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
> -                         _("cannot parse QEMU version number in '%s'"),
> -                         help);
> +    if (qemudParseVersionStr(help, &version, &kvm_version) == -1)
>          goto cleanup2;
> -    }
> -
> -    version = (major * 1000 * 1000) + (minor * 1000) + micro;
>  
>      if (strstr(help, "-no-kqemu"))
>          flags |= QEMUD_CMD_FLAG_KQEMU;

....this code which looks at subsequent lines of 'help' ?

Regards,
Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list