From 12b10a9f5a97362b64e85895ba591ed73382acaa Mon Sep 17 00:00:00 2001 From: WAKAYAMA Shirou Date: Tue, 29 Apr 2014 14:15:00 +0900 Subject: [PATCH] implements disk_partitions on linux using /etc/mtab --- README.rst | 2 +- disk_linux.go | 26 ++++++++++++++++++++++++++ disk_test.go | 12 ++++-------- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/README.rst b/README.rst index e506e3f..23b780a 100644 --- a/README.rst +++ b/README.rst @@ -65,7 +65,7 @@ Current Status - cpu_count (linux, freebsd, windows) - virtual_memory (linux, windows) - swap_memory (linux) - - disk_partitions (freebsd, windows) + - disk_partitions (linux, freebsd, windows) - disk_usage (linux, freebsd, windows) - net_io_counters (linux) - boot_time (linux, freebsd, windows(but little broken)) diff --git a/disk_linux.go b/disk_linux.go index ad7192d..c245bea 100644 --- a/disk_linux.go +++ b/disk_linux.go @@ -2,8 +2,34 @@ package gopsutil +import ( + "strings" +) + +const( + MNT_WAIT = 1 +) + +// Get disk partitions. +// should use setmntent(3) but this implement use /etc/mtab file func Disk_partitions(all bool) ([]Disk_partitionStat, error) { ret := make([]Disk_partitionStat, 0) + filename := "/etc/mtab" + lines, err := ReadLines(filename) + if err != nil{ + return ret, err + } + + for _, line := range lines{ + fields := strings.Fields(line) + d := Disk_partitionStat{ + Mountpoint: fields[1], + Fstype: fields[2], + Opts: fields[3], + } + ret = append(ret, d) + } + return ret, nil } diff --git a/disk_test.go b/disk_test.go index f7dfd68..a372720 100644 --- a/disk_test.go +++ b/disk_test.go @@ -1,8 +1,6 @@ package gopsutil import ( - "encoding/json" - "fmt" "runtime" "testing" ) @@ -12,19 +10,17 @@ func TestDisk_usage(t *testing.T) { if runtime.GOOS == "windows" { path = "C:" } - v, err := Disk_usage(path) + _, err := Disk_usage(path) if err != nil { t.Errorf("error %v", err) } - d, _ := json.Marshal(v) - fmt.Printf("%s\n", d) +// d, _ := json.Marshal(v) +// fmt.Printf("%s\n", d) } func TestDisk_partitions(t *testing.T) { - v, err := Disk_partitions(false) + _, err := Disk_partitions(false) if err != nil { t.Errorf("error %v", err) } - d, _ := json.Marshal(v) - fmt.Printf("%s\n", d) } -- GitLab