summaryrefslogtreecommitdiff
path: root/src/lib/os/stat_amd64_darwin.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/os/stat_amd64_darwin.go')
-rw-r--r--src/lib/os/stat_amd64_darwin.go9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/lib/os/stat_amd64_darwin.go b/src/lib/os/stat_amd64_darwin.go
index 0c811680a..e72d76f91 100644
--- a/src/lib/os/stat_amd64_darwin.go
+++ b/src/lib/os/stat_amd64_darwin.go
@@ -9,7 +9,11 @@ package os
import syscall "syscall"
import os "os"
-func dirFromStat(name string, dir *Dir, stat *syscall.Stat_t) *Dir {
+func isSymlink(stat *syscall.Stat_t) bool {
+ return stat.Mode & syscall.S_IFMT == syscall.S_IFLNK
+}
+
+func dirFromStat(name string, dir *Dir, lstat, stat *syscall.Stat_t) *Dir {
dir.Dev = uint64(stat.Dev);
dir.Ino = stat.Ino;
dir.Nlink = uint64(stat.Nlink);
@@ -30,5 +34,8 @@ func dirFromStat(name string, dir *Dir, stat *syscall.Stat_t) *Dir {
}
}
dir.Name = name;
+ if isSymlink(lstat) && !isSymlink(stat) {
+ dir.FollowedSymlink = true;
+ }
return dir;
}