1// Copyright 2011 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//go:build unix || (js && wasm) || wasip1
6
7package os
8
9const (
10	PathSeparator     = '/' // OS-specific path separator
11	PathListSeparator = ':' // OS-specific path list separator
12)
13
14// IsPathSeparator reports whether c is a directory separator character.
15func IsPathSeparator(c uint8) bool {
16	return PathSeparator == c
17}
18
19// splitPath returns the base name and parent directory.
20func splitPath(path string) (string, string) {
21	// if no better parent is found, the path is relative from "here"
22	dirname := "."
23
24	// Remove all but one leading slash.
25	for len(path) > 1 && path[0] == '/' && path[1] == '/' {
26		path = path[1:]
27	}
28
29	i := len(path) - 1
30
31	// Remove trailing slashes.
32	for ; i > 0 && path[i] == '/'; i-- {
33		path = path[:i]
34	}
35
36	// if no slashes in path, base is path
37	basename := path
38
39	// Remove leading directory path
40	for i--; i >= 0; i-- {
41		if path[i] == '/' {
42			if i == 0 {
43				dirname = path[:1]
44			} else {
45				dirname = path[:i]
46			}
47			basename = path[i+1:]
48			break
49		}
50	}
51
52	return dirname, basename
53}
54