From 54d2f6781f314a6cb550a5307c2cb792796cc596 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Olivier=20Mengu=C3=A9?= Date: Mon, 24 Mar 2025 14:15:06 +0100 Subject: [PATCH] bbmain: simplify ResolveUntilLastSymlink Reduce redundant calls to AbsSymlink in ResolveUntilLastSymlink. --- src/pkg/bb/bbmain/cmd/main.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/pkg/bb/bbmain/cmd/main.go b/src/pkg/bb/bbmain/cmd/main.go index c7564d0..3cbefa8 100644 --- a/src/pkg/bb/bbmain/cmd/main.go +++ b/src/pkg/bb/bbmain/cmd/main.go @@ -63,8 +63,20 @@ func IsTargetSymlink(originalFile, target string) bool { // // ResolveUntilLastSymlink(/foo/bar) returns /baz/foo. func ResolveUntilLastSymlink(p string) string { - for target, err := os.Readlink(p); err == nil && IsTargetSymlink(p, target); target, err = os.Readlink(p) { - p = AbsSymlink(p, target) + for { + target, err := os.Readlink(p) + if err != nil { + break + } + q := AbsSymlink(p, target) + s, err := os.Lstat(q) + if err != nil { + break + } + if s.Mode()&os.ModeSymlink != os.ModeSymlink { + break + } + p = q } return p }