aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/cli/internal/turbopath/absolute_system_path_darwin.go
diff options
context:
space:
mode:
Diffstat (limited to 'cli/internal/turbopath/absolute_system_path_darwin.go')
-rw-r--r--cli/internal/turbopath/absolute_system_path_darwin.go23
1 files changed, 23 insertions, 0 deletions
diff --git a/cli/internal/turbopath/absolute_system_path_darwin.go b/cli/internal/turbopath/absolute_system_path_darwin.go
new file mode 100644
index 0000000..e2c3bff
--- /dev/null
+++ b/cli/internal/turbopath/absolute_system_path_darwin.go
@@ -0,0 +1,23 @@
+//go:build darwin
+// +build darwin
+
+// Adapted from https://github.com/containerd/continuity/blob/b4ca35286886296377de39e6eafd1affae019fc3/driver/lchmod_unix.go
+// Copyright The containerd Authors
+// SPDX-License-Identifier: Apache-2.0
+
+package turbopath
+
+import (
+ "os"
+
+ "golang.org/x/sys/unix"
+)
+
+// Lchmod changes the mode of a file not following symlinks.
+func (p AbsoluteSystemPath) Lchmod(mode os.FileMode) error {
+ err := unix.Fchmodat(unix.AT_FDCWD, p.ToString(), uint32(mode), unix.AT_SYMLINK_NOFOLLOW)
+ if err != nil {
+ err = &os.PathError{Op: "lchmod", Path: p.ToString(), Err: err}
+ }
+ return err
+}