[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, µ, &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, µ) != 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