123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- // 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
- 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
- }
|