[vmware] Fix VMware driver version checking on Linux

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

 



> Daniel

Excellent point, Daniel. Try two is below. The verbuf string is tokenized on
newline, then iterated over with blank lines ignored. First match of the
VMware driver pattern will break out of the loop with tmp set correctly or
the default NULL if it's not found. This should allow vmwareExtractVersion
to work as expected without change and VMware Fusion/Player/Workstation to
continue working on OS X and Linux.

Tested successfully with VMware Player 5.0.3 and 6.0.1 on an SL6 box. Would
appreciate a Fusion test on OS X if possible.

  -r

(sorry if this reply shows up incorrectly, my git skills are... lacking.)


diff --git a/src/vmware/vmware_conf.c b/src/vmware/vmware_conf.c
index c96bd62..1f5b4ae 100644
--- a/src/vmware/vmware_conf.c
+++ b/src/vmware/vmware_conf.c
@@ -222,8 +222,10 @@ vmwareSetSentinal(const char **prog, const char *key)
 int
 vmwareParseVersionStr(int type, const char *verbuf, unsigned long *version)
 {
+    int tok;
     const char *pattern;
-    const char *tmp;
+    const char *tmp = NULL;
+    char **verbuftok = NULL;
 
     switch (type) {
         case VMWARE_DRIVER_PLAYER:
@@ -241,7 +243,18 @@ vmwareParseVersionStr(int type, const char *verbuf, unsigned long *version)
             return -1;
     }
 
-    if ((tmp = STRSKIP(verbuf, pattern)) == NULL) {
+    verbuftok = virStringSplit(verbuf, "\n", 0);
+    for(tok = 0; verbuftok[tok] != NULL; tok++){
+        if (strlen(verbuftok[tok]) > 0) {
+            tmp = STRSKIP(verbuftok[tok], pattern);
+            if (tmp == NULL)
+                continue;
+            else
+                break;
+        }
+    }
+
+    if (tmp == NULL) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("failed to parse %sversion"), pattern);
         return -1;

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]