aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/elastic/gosigar/sys/windows/version.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/elastic/gosigar/sys/windows/version.go')
-rw-r--r--vendor/github.com/elastic/gosigar/sys/windows/version.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/vendor/github.com/elastic/gosigar/sys/windows/version.go b/vendor/github.com/elastic/gosigar/sys/windows/version.go
new file mode 100644
index 000000000..d0bca89c1
--- /dev/null
+++ b/vendor/github.com/elastic/gosigar/sys/windows/version.go
@@ -0,0 +1,43 @@
+// +build windows
+
+package windows
+
+import (
+ "fmt"
+ "syscall"
+)
+
+// Version identifies a Windows version by major, minor, and build number.
+type Version struct {
+ Major int
+ Minor int
+ Build int
+}
+
+// GetWindowsVersion returns the Windows version information. Applications not
+// manifested for Windows 8.1 or Windows 10 will return the Windows 8 OS version
+// value (6.2).
+//
+// For a table of version numbers see:
+// https://msdn.microsoft.com/en-us/library/windows/desktop/ms724833(v=vs.85).aspx
+func GetWindowsVersion() Version {
+ // https://msdn.microsoft.com/en-us/library/windows/desktop/ms724439(v=vs.85).aspx
+ ver, err := syscall.GetVersion()
+ if err != nil {
+ // GetVersion should never return an error.
+ panic(fmt.Errorf("GetVersion failed: %v", err))
+ }
+
+ return Version{
+ Major: int(ver & 0xFF),
+ Minor: int(ver >> 8 & 0xFF),
+ Build: int(ver >> 16),
+ }
+}
+
+// IsWindowsVistaOrGreater returns true if the Windows version is Vista or
+// greater.
+func (v Version) IsWindowsVistaOrGreater() bool {
+ // Vista is 6.0.
+ return v.Major >= 6 && v.Minor >= 0
+}