+
+ // Compatibility for different operating systems
+ var compat string
+ switch goos {
+ case "linux":
+ compat = `
+dir_stat='drwxrwxrwt 0 0'
+file_stat="-rwx------ $(id -u) $(id -g)"
+compat_stat() {
+ stat -c '%A %u %g' "$1"
+}
+compat_sha512sum() {
+ sha512sum "$1"
+}
+`
+ case "freebsd", "openbsd":
+ compat = `
+dir_stat='41777 0 0'
+file_stat="100700 $(id -u) $(id -g)"
+compat_stat() {
+ stat -f '%p %u %g' "$1"
+}
+compat_sha512sum() {
+ sha512 -q "$1"
+}
+`
+ default:
+ return fmt.Errorf("internal error: no support for %q", goos)
+ }
+