// Copyright 2021 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris package osinfo import ( "bytes" "golang.org/x/sys/unix" ) func utsString(b []byte) string { i := bytes.IndexByte(b, 0) if i == -1 { return string(b) } return string(b[:i]) } // Version returns the OS version name/number. func Version() (string, error) { var uts unix.Utsname if err := unix.Uname(&uts); err != nil { return "", err } sysname := utsString(uts.Sysname[:]) release := utsString(uts.Release[:]) version := utsString(uts.Version[:]) machine := utsString(uts.Machine[:]) return sysname + " " + release + " " + version + " " + machine, nil }