vmware: make version parsing more robust

Since commit d69415d4, vmware version is parsed from both stdout and
stderr. This patch makes version parsing work even if there is garbage
(libvirt debug messages for example) in the command output.

Add test data for this case.
This commit is contained in:
Jean-Baptiste Rouault 2014-04-09 11:59:53 +02:00 committed by Ján Tomko
parent 3c43b6a7b2
commit 775bb9b15f
3 changed files with 12 additions and 2 deletions

View File

@ -1,7 +1,7 @@
/*---------------------------------------------------------------------------*/
/*
* Copyright (C) 2011-2014 Red Hat, Inc.
* Copyright 2010, diateam (www.diateam.net)
* Copyright (C) 2010-2014, diateam (www.diateam.net)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -241,7 +241,13 @@ vmwareParseVersionStr(int type, const char *verbuf, unsigned long *version)
return -1;
}
if ((tmp = STRSKIP(verbuf, pattern)) == NULL) {
if ((tmp = strstr(verbuf, pattern)) == NULL) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("cannot find version pattern \"%s\""), pattern);
return -1;
}
if ((tmp = STRSKIP(tmp, pattern)) == NULL) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("failed to parse %sversion"), pattern);
return -1;

View File

@ -0,0 +1,3 @@
garbage line
VMware Workstation 7.0.0 build-203739 Release
garbage line

View File

@ -88,6 +88,7 @@ mymain(void)
} while (0)
DO_TEST("ws", "workstation-7.0.0", 7000000);
DO_TEST("ws", "workstation-7.0.0-with-garbage", 7000000);
DO_TEST("fusion", "fusion-5.0.3", 5000003);
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;