operatingsystem_solaris.go 682 B

12345678910111213141516171819202122232425262728293031323334353637
  1. // +build solaris,cgo
  2. package operatingsystem
  3. /*
  4. #include <zone.h>
  5. */
  6. import "C"
  7. import (
  8. "bytes"
  9. "errors"
  10. "io/ioutil"
  11. )
  12. var etcOsRelease = "/etc/release"
  13. // GetOperatingSystem gets the name of the current operating system.
  14. func GetOperatingSystem() (string, error) {
  15. b, err := ioutil.ReadFile(etcOsRelease)
  16. if err != nil {
  17. return "", err
  18. }
  19. if i := bytes.Index(b, []byte("\n")); i >= 0 {
  20. b = bytes.Trim(b[:i], " ")
  21. return string(b), nil
  22. }
  23. return "", errors.New("release not found")
  24. }
  25. // IsContainerized returns true if we are running inside a container.
  26. func IsContainerized() (bool, error) {
  27. if C.getzoneid() != 0 {
  28. return true, nil
  29. }
  30. return false, nil
  31. }