...

Source file src/go.etcd.io/etcd/client/pkg/v3/pathutil/path.go

Documentation: go.etcd.io/etcd/client/pkg/v3/pathutil

     1  // Copyright 2009 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // Package pathutil implements utility functions for handling slash-separated
     6  // paths.
     7  package pathutil
     8  
     9  import "path"
    10  
    11  // CanonicalURLPath returns the canonical url path for p, which follows the rules:
    12  // 1. the path always starts with "/"
    13  // 2. replace multiple slashes with a single slash
    14  // 3. replace each '.' '..' path name element with equivalent one
    15  // 4. keep the trailing slash
    16  // The function is borrowed from stdlib http.cleanPath in server.go.
    17  func CanonicalURLPath(p string) string {
    18  	if p == "" {
    19  		return "/"
    20  	}
    21  	if p[0] != '/' {
    22  		p = "/" + p
    23  	}
    24  	np := path.Clean(p)
    25  	// path.Clean removes trailing slash except for root,
    26  	// put the trailing slash back if necessary.
    27  	if p[len(p)-1] == '/' && np != "/" {
    28  		np += "/"
    29  	}
    30  	return np
    31  }
    32  

View as plain text