//go:build linux // +build linux package util /* #cgo LDFLAGS: -lmount -lblkid -luuid #include #include #include #cgo pkg-config: libselinux libsepol #include */ import "C" import ( "errors" "unsafe" ) // ResolveDevice this isn't reliable - blkid -L LABEL works more often :( func ResolveDevice(spec string) string { cSpec := C.CString(spec) defer C.free(unsafe.Pointer(cSpec)) cString := C.blkid_evaluate_spec(cSpec, nil) defer C.free(unsafe.Pointer(cString)) return C.GoString(cString) } func GetFsType(device string) (string, error) { var ambi *C.int cDevice := C.CString(device) defer C.free(unsafe.Pointer(cDevice)) cString := C.mnt_get_fstype(cDevice, ambi, nil) defer C.free(unsafe.Pointer(cString)) if cString != nil { return C.GoString(cString), nil } return "", errors.New("Error while getting fstype") }