// Copyright 2011 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. //go:build aix || darwin || dragonfly || freebsd || hurd || (js && wasm) || linux || netbsd || openbsd || solaris // +build aix darwin dragonfly freebsd hurd js,wasm linux netbsd openbsd solaris package os const ( PathSeparator = '/' // OS-specific path separator PathListSeparator = ':' // OS-specific path list separator ) // IsPathSeparator reports whether c is a directory separator character. func IsPathSeparator(c uint8) bool { return PathSeparator == c } // basename removes trailing slashes and the leading directory name from path name. func basename(name string) string { i := len(name) - 1 // Remove trailing slashes for ; i > 0 && name[i] == '/'; i-- { name = name[:i] } // Remove leading directory name for i--; i >= 0; i-- { if name[i] == '/' { name = name[i+1:] break } } return name } // splitPath returns the base name and parent directory. func splitPath(path string) (string, string) { // if no better parent is found, the path is relative from "here" dirname := "." // Remove all but one leading slash. for len(path) > 1 && path[0] == '/' && path[1] == '/' { path = path[1:] } i := len(path) - 1 // Remove trailing slashes. for ; i > 0 && path[i] == '/'; i-- { path = path[:i] } // if no slashes in path, base is path basename := path // Remove leading directory path for i--; i >= 0; i-- { if path[i] == '/' { if i == 0 { dirname = path[:1] } else { dirname = path[:i] } basename = path[i+1:] break } } return dirname, basename } func fixRootDirectory(p string) string { return p }