[common]linux: add HostEtc to switch '/etc' See #175.

v1
Shirou WAKAYAMA
parent 4dfd293fa8
commit fa3e1cc196

@ -17,10 +17,6 @@ psutil functions on some architectures...
Package (a.k.a. directory) structure has been changed!! see `issue 24 <https://github.com/shirou/gopsutil/issues/24>`_ Package (a.k.a. directory) structure has been changed!! see `issue 24 <https://github.com/shirou/gopsutil/issues/24>`_
.. highlights:: golang 1.4 will become REQUIRED!
Since syscall package becomes frozen, we should use golang/x/sys of golang 1.4 as soon as possible.
Available Architectures Available Architectures
------------------------------------ ------------------------------------
@ -63,6 +59,7 @@ The output is below.
You can set an alternative location to /proc by setting the HOST_PROC environment variable. You can set an alternative location to /proc by setting the HOST_PROC environment variable.
You can set an alternative location to /sys by setting the HOST_SYS environment variable. You can set an alternative location to /sys by setting the HOST_SYS environment variable.
You can set an alternative location to /etc by setting the HOST_ETC environment variable.
Documentation Documentation
------------------------ ------------------------

@ -214,8 +214,7 @@ var fsTypeMap = map[int64]string{
// Get disk partitions. // Get disk partitions.
// should use setmntent(3) but this implement use /etc/mtab file // should use setmntent(3) but this implement use /etc/mtab file
func DiskPartitions(all bool) ([]DiskPartitionStat, error) { func DiskPartitions(all bool) ([]DiskPartitionStat, error) {
filename := common.HostEtc("mtab")
filename := "/etc/mtab"
lines, err := common.ReadLines(filename) lines, err := common.ReadLines(filename)
if err != nil { if err != nil {
return nil, err return nil, err

@ -141,8 +141,8 @@ func Users() ([]UserStat, error) {
func getLSB() (*LSB, error) { func getLSB() (*LSB, error) {
ret := &LSB{} ret := &LSB{}
if common.PathExists("/etc/lsb-release") { if common.PathExists(common.HostEtc("lsb-release")) {
contents, err := common.ReadLines("/etc/lsb-release") contents, err := common.ReadLines(common.HostEtc("lsb-release"))
if err != nil { if err != nil {
return ret, err // return empty return ret, err // return empty
} }
@ -196,19 +196,20 @@ func GetPlatformInformation() (platform string, family string, version string, e
lsb = &LSB{} lsb = &LSB{}
} }
if common.PathExists("/etc/oracle-release") { if common.PathExists(common.HostEtc("oracle-release")) {
platform = "oracle" platform = "oracle"
contents, err := common.ReadLines("/etc/oracle-release") contents, err := common.ReadLines(common.HostEtc("oracle-release"))
if err == nil { if err == nil {
version = getRedhatishVersion(contents) version = getRedhatishVersion(contents)
} }
} else if common.PathExists("/etc/enterprise-release") {
} else if common.PathExists(common.HostEtc("enterprise-release")) {
platform = "oracle" platform = "oracle"
contents, err := common.ReadLines("/etc/enterprise-release") contents, err := common.ReadLines(common.HostEtc("enterprise-release"))
if err == nil { if err == nil {
version = getRedhatishVersion(contents) version = getRedhatishVersion(contents)
} }
} else if common.PathExists("/etc/debian_version") { } else if common.PathExists(common.HostEtc("debian_version")) {
if lsb.ID == "Ubuntu" { if lsb.ID == "Ubuntu" {
platform = "ubuntu" platform = "ubuntu"
version = lsb.Release version = lsb.Release
@ -221,37 +222,37 @@ func GetPlatformInformation() (platform string, family string, version string, e
} else { } else {
platform = "debian" platform = "debian"
} }
contents, err := common.ReadLines("/etc/debian_version") contents, err := common.ReadLines(common.HostEtc("debian_version"))
if err == nil { if err == nil {
version = contents[0] version = contents[0]
} }
} }
} else if common.PathExists("/etc/redhat-release") { } else if common.PathExists(common.HostEtc("redhat-release")) {
contents, err := common.ReadLines("/etc/redhat-release") contents, err := common.ReadLines(common.HostEtc("redhat-release"))
if err == nil { if err == nil {
version = getRedhatishVersion(contents) version = getRedhatishVersion(contents)
platform = getRedhatishPlatform(contents) platform = getRedhatishPlatform(contents)
} }
} else if common.PathExists("/etc/system-release") { } else if common.PathExists(common.HostEtc("system-release")) {
contents, err := common.ReadLines("/etc/system-release") contents, err := common.ReadLines(common.HostEtc("system-release"))
if err == nil { if err == nil {
version = getRedhatishVersion(contents) version = getRedhatishVersion(contents)
platform = getRedhatishPlatform(contents) platform = getRedhatishPlatform(contents)
} }
} else if common.PathExists("/etc/gentoo-release") { } else if common.PathExists(common.HostEtc("gentoo-release")) {
platform = "gentoo" platform = "gentoo"
contents, err := common.ReadLines("/etc/gentoo-release") contents, err := common.ReadLines(common.HostEtc("gentoo-release"))
if err == nil { if err == nil {
version = getRedhatishVersion(contents) version = getRedhatishVersion(contents)
} }
} else if common.PathExists("/etc/SuSE-release") { } else if common.PathExists(common.HostEtc("SuSE-release")) {
contents, err := common.ReadLines("/etc/SuSE-release") contents, err := common.ReadLines(common.HostEtc("SuSE-release"))
if err == nil { if err == nil {
version = getSuseVersion(contents) version = getSuseVersion(contents)
platform = getSusePlatform(contents) platform = getSusePlatform(contents)
} }
// TODO: slackware detecion // TODO: slackware detecion
} else if common.PathExists("/etc/arch-release") { } else if common.PathExists(common.HostEtc("arch-release")) {
platform = "arch" platform = "arch"
version = lsb.Release version = lsb.Release
} else if lsb.ID == "RedHat" { } else if lsb.ID == "RedHat" {

@ -274,3 +274,7 @@ func HostProc(combineWith ...string) string {
func HostSys(combineWith ...string) string { func HostSys(combineWith ...string) string {
return GetEnv("HOST_SYS", "/sys", combineWith...) return GetEnv("HOST_SYS", "/sys", combineWith...)
} }
func HostEtc(combineWith ...string) string {
return GetEnv("HOST_ETC", "/etc", combineWith...)
}

@ -88,3 +88,10 @@ func TestPathExists(t *testing.T) {
t.Error("not exists but return exists") t.Error("not exists but return exists")
} }
} }
func TestHostEtc(t *testing.T) {
p := HostEtc("mtab")
if p != "/etc/mtab" {
t.Errorf("invalid HostEtc, %s", p)
}
}

Loading…
Cancel
Save