diff options
Diffstat (limited to 'src/lib/os/stat_amd64_darwin.go')
-rw-r--r-- | src/lib/os/stat_amd64_darwin.go | 9 |
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; } |