github.com/stevegt/moby@v1.13.1/pkg/mount/mountinfo_solaris.go (about) 1 // +build solaris,cgo 2 3 package mount 4 5 /* 6 #include <stdio.h> 7 #include <sys/mnttab.h> 8 */ 9 import "C" 10 11 import ( 12 "fmt" 13 ) 14 15 func parseMountTable() ([]*Info, error) { 16 mnttab := C.fopen(C.CString(C.MNTTAB), C.CString("r")) 17 if mnttab == nil { 18 return nil, fmt.Errorf("Failed to open %s", C.MNTTAB) 19 } 20 21 var out []*Info 22 var mp C.struct_mnttab 23 24 ret := C.getmntent(mnttab, &mp) 25 for ret == 0 { 26 var mountinfo Info 27 mountinfo.Mountpoint = C.GoString(mp.mnt_mountp) 28 mountinfo.Source = C.GoString(mp.mnt_special) 29 mountinfo.Fstype = C.GoString(mp.mnt_fstype) 30 mountinfo.Opts = C.GoString(mp.mnt_mntopts) 31 out = append(out, &mountinfo) 32 ret = C.getmntent(mnttab, &mp) 33 } 34 35 C.fclose(mnttab) 36 return out, nil 37 }