func (self *FileSystemUsage) Get(path string) error { /* Get free, available, total free bytes: fsutil volume diskfree C: */ var availableBytes C.ULARGE_INTEGER var totalBytes C.ULARGE_INTEGER var totalFreeBytes C.ULARGE_INTEGER pathChars := C.CString(path) defer C.free(unsafe.Pointer(pathChars)) succeeded := C.GetDiskFreeSpaceEx((*C.CHAR)(pathChars), &availableBytes, &totalBytes, &totalFreeBytes) if succeeded == C.FALSE { return syscall.GetLastError() } self.Total = *(*uint64)(unsafe.Pointer(&totalBytes)) self.Free = *(*uint64)(unsafe.Pointer(&totalFreeBytes)) self.Used = self.Total - self.Free self.Avail = *(*uint64)(unsafe.Pointer(&availableBytes)) return nil }
func (self *FileSystemUsage) Get(path string) error { var availableBytes C.ULARGE_INTEGER var totalBytes C.ULARGE_INTEGER var totalFreeBytes C.ULARGE_INTEGER pathChars := C.CString(path) defer C.free(unsafe.Pointer(pathChars)) succeeded := C.GetDiskFreeSpaceEx((*C.CHAR)(pathChars), &availableBytes, &totalBytes, &totalFreeBytes) if succeeded == C.FALSE { lastError := C.GetLastError() return fmt.Errorf("GetDiskFreeSpaceEx failed with error: %d", int(lastError)) } self.Total = *(*uint64)(unsafe.Pointer(&totalBytes)) return nil }