github.com/getong/docker@v1.13.1/pkg/parsers/operatingsystem/operatingsystem_solaris.go (about)

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