mirror of
https://github.com/golang/go
synced 2024-11-22 06:54:39 -07:00
godoc: bug fix in relativePath
This fixes a problem with relativePath, where a prefix was not recognized because it ended in "//" as opposed to just "/". Also: Minor unrelated cleanup of a declaration. R=rsc CC=golang-dev https://golang.org/cl/3146041
This commit is contained in:
parent
18ae633472
commit
e38b7f4953
@ -51,6 +51,7 @@ var (
|
|||||||
verbose = flag.Bool("v", false, "verbose mode")
|
verbose = flag.Bool("v", false, "verbose mode")
|
||||||
|
|
||||||
// file system roots
|
// file system roots
|
||||||
|
// TODO(gri) consider the invariant that goroot always end in '/'
|
||||||
goroot = flag.String("goroot", runtime.GOROOT(), "Go root directory")
|
goroot = flag.String("goroot", runtime.GOROOT(), "Go root directory")
|
||||||
path = flag.String("path", "", "additional package directories (colon-separated)")
|
path = flag.String("path", "", "additional package directories (colon-separated)")
|
||||||
filter = flag.String("filter", "", "filter file containing permitted package directory paths")
|
filter = flag.String("filter", "", "filter file containing permitted package directory paths")
|
||||||
@ -260,9 +261,16 @@ func absolutePath(path, defaultRoot string) string {
|
|||||||
|
|
||||||
func relativePath(path string) string {
|
func relativePath(path string) string {
|
||||||
relpath := fsMap.ToRelative(path)
|
relpath := fsMap.ToRelative(path)
|
||||||
if relpath == "" && strings.HasPrefix(path, *goroot+"/") {
|
if relpath == "" {
|
||||||
|
// prefix must end in '/'
|
||||||
|
prefix := *goroot
|
||||||
|
if len(prefix) > 0 && prefix[len(prefix)-1] != '/' {
|
||||||
|
prefix += "/"
|
||||||
|
}
|
||||||
|
if strings.HasPrefix(path, prefix) {
|
||||||
// no user-defined mapping found; use default mapping
|
// no user-defined mapping found; use default mapping
|
||||||
relpath = path[len(*goroot)+1:]
|
relpath = path[len(prefix):]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Only if path is an invalid absolute path is relpath == ""
|
// Only if path is an invalid absolute path is relpath == ""
|
||||||
// at this point. This should never happen since absolute paths
|
// at this point. This should never happen since absolute paths
|
||||||
@ -793,7 +801,7 @@ func readTemplates() {
|
|||||||
// Generic HTML wrapper
|
// Generic HTML wrapper
|
||||||
|
|
||||||
func servePage(w http.ResponseWriter, title, subtitle, query string, content []byte) {
|
func servePage(w http.ResponseWriter, title, subtitle, query string, content []byte) {
|
||||||
type Data struct {
|
d := struct {
|
||||||
Title string
|
Title string
|
||||||
Subtitle string
|
Subtitle string
|
||||||
PkgRoots []string
|
PkgRoots []string
|
||||||
@ -801,16 +809,14 @@ func servePage(w http.ResponseWriter, title, subtitle, query string, content []b
|
|||||||
Version string
|
Version string
|
||||||
Menu []byte
|
Menu []byte
|
||||||
Content []byte
|
Content []byte
|
||||||
}
|
}{
|
||||||
|
title,
|
||||||
d := Data{
|
subtitle,
|
||||||
Title: title,
|
fsMap.PrefixList(),
|
||||||
Subtitle: subtitle,
|
query,
|
||||||
PkgRoots: fsMap.PrefixList(),
|
runtime.Version(),
|
||||||
Query: query,
|
nil,
|
||||||
Version: runtime.Version(),
|
content,
|
||||||
Menu: nil,
|
|
||||||
Content: content,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := godocHTML.Execute(&d, w); err != nil {
|
if err := godocHTML.Execute(&d, w); err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user