]> git.ipfire.org Git - thirdparty/open-vm-tools.git/commitdiff
Common source file change not directly applicable to open-vm-tools.
authorOliver Kurth <okurth@vmware.com>
Wed, 30 Oct 2019 18:21:53 +0000 (11:21 -0700)
committerOliver Kurth <okurth@vmware.com>
Wed, 30 Oct 2019 18:21:53 +0000 (11:21 -0700)
open-vm-tools/lib/misc/hostinfoPosix.c

index 348a67ecb95473eb441b16e1764c93b6977380ab..e7ae9d25756e041c5af545f40efc1d00355c3340 100644 (file)
@@ -733,23 +733,49 @@ static Bool
 HostinfoESX(struct utsname *buf)  // IN:
 {
    int len;
+   uint32 major;
+   uint32 minor;
    char osName[MAX_OS_NAME_LEN];
    char osNameFull[MAX_OS_FULLNAME_LEN];
 
-   /* The most recent osName always goes here. */
-   Str_Strcpy(osName, STR_OS_VMKERNEL "7", sizeof osName);
+   if (sscanf(buf->release, "%u.%u", &major, &minor) != 2) {
+      if (sscanf(buf->release, "%u", &major) != 1) {
+         major = 0;
+      }
+
+      minor = 0;
+   }
 
-   /* Handle any special cases */
-   if ((buf->release[0] <= '4') && (buf->release[1] == '.')) {
+   switch (major) {
+   case 0:
+   case 1:
+   case 2:
+   case 3:
+   case 4:
       Str_Strcpy(osName, STR_OS_VMKERNEL, sizeof osName);
-   } else if ((buf->release[0] == '5') && (buf->release[1] == '.')) {
+      break;
+
+   case 5:
       Str_Strcpy(osName, STR_OS_VMKERNEL "5", sizeof osName);
-   } else if ((buf->release[0] >= '6') && (buf->release[1] == '.')) {
-      if (buf->release[2] < '5') {
+      break;
+
+   case 6:
+      if (minor < 5) {
          Str_Strcpy(osName, STR_OS_VMKERNEL "6", sizeof osName);
       } else {
          Str_Strcpy(osName, STR_OS_VMKERNEL "65", sizeof osName);
       }
+      break;
+
+   case 7:
+   default:
+      /*
+       * New osName are created IFF the VMX/monitor requires them (rare),
+       * not (simply) with every ESXi release.
+       */
+
+      Str_Strcpy(osName, STR_OS_VMKERNEL "7", sizeof osName);
+      break;
    }
 
    len = Str_Snprintf(osNameFull, sizeof osNameFull, "VMware ESXi %s",