| 1234567891011121314151617181920212223242526272829303132 | // Copyright 2009 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.// Package pathutil implements utility functions for handling slash-separated// paths.package pathutilimport "path"// CanonicalURLPath returns the canonical url path for p, which follows the rules:// 1. the path always starts with "/"// 2. replace multiple slashes with a single slash// 3. replace each '.' '..' path name element with equivalent one// 4. keep the trailing slash// The function is borrowed from stdlib http.cleanPath in server.go.func CanonicalURLPath(p string) string {	if p == "" {		return "/"	}	if p[0] != '/' {		p = "/" + p	}	np := path.Clean(p)	// path.Clean removes trailing slash except for root,	// put the trailing slash back if necessary.	if p[len(p)-1] == '/' && np != "/" {		np += "/"	}	return np}
 |