1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
From: Dmitry Azhichakov <dmitry@dsa.pp.ru>
Date: Tue, 17 Nov 2020 02:14:58 +0800
Subject: Make godoc support symlinks.
Debian-Bug: 669354
Forwarded: https://golang.org/issue/1540
Due to the FHS, we use a symlink from /usr/share/golang/src to
/usr/lib/golang/src, but godoc does not support that.
See also https://groups.google.com/forum/#!topic/golang-nuts/396pWLsz-WI
---
godoc/vfs/os.go | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/godoc/vfs/os.go b/godoc/vfs/os.go
index 35d0509..4234305 100644
--- a/godoc/vfs/os.go
+++ b/godoc/vfs/os.go
@@ -101,5 +101,20 @@ func (root osFS) Stat(path string) (os.FileInfo, error) {
}
func (root osFS) ReadDir(path string) ([]os.FileInfo, error) {
- return ioutil.ReadDir(root.resolve(path)) // is sorted
+ dirName := root.resolve(path)
+ fis, err := ioutil.ReadDir(dirName) // is sorted
+ if err != nil {
+ return nil, err
+ }
+ // Replace symlinks with what they are pointing to
+ for i, fi := range fis {
+ if fi.Mode()&os.ModeSymlink != 0 {
+ fi, err = os.Stat(filepath.Join(dirName, fi.Name()))
+ if err != nil {
+ return nil, err
+ }
+ }
+ fis[i] = fi
+ }
+ return fis, nil
}
|