| 1 | //go:build darwin |
| 2 | |
| 3 | package projectiondb |
| 4 | |
| 5 | import ( |
| 6 | "strings" |
| 7 | "syscall" |
| 8 | ) |
| 9 | |
| 10 | func filesystemRemote(path string) bool { |
| 11 | var stat syscall.Statfs_t |
| 12 | if err := syscall.Statfs(path, &stat); err != nil { |
| 13 | return false |
| 14 | } |
| 15 | name := make([]byte, 0, len(stat.Fstypename)) |
| 16 | for _, char := range stat.Fstypename { |
| 17 | if char == 0 { |
| 18 | break |
| 19 | } |
| 20 | name = append(name, byte(char)) |
| 21 | } |
| 22 | switch strings.ToLower(string(name)) { |
| 23 | case "nfs", "smbfs", "webdav", "afpfs", "cifs": |
| 24 | return true |
| 25 | default: |
| 26 | return false |
| 27 | } |
| 28 | } |
| 29 |