mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-15 23:54:19 +00:00
* fix issue #8251 ospaths.isAbsolute: out of bound errors * address comments * add reference to a spec for quirky macos paths
This commit is contained in:
@@ -423,12 +423,22 @@ proc isAbsolute*(path: string): bool {.rtl, noSideEffect, extern: "nos$1".} =
|
||||
## Checks whether a given `path` is absolute.
|
||||
##
|
||||
## On Windows, network paths are considered absolute too.
|
||||
runnableExamples:
|
||||
doAssert(not "".isAbsolute)
|
||||
doAssert(not ".".isAbsolute)
|
||||
when defined(posix):
|
||||
doAssert "/".isAbsolute
|
||||
doAssert(not "a/".isAbsolute)
|
||||
|
||||
if len(path) == 0: return false
|
||||
|
||||
when doslikeFileSystem:
|
||||
var len = len(path)
|
||||
result = (len > 0 and path[0] in {'/', '\\'}) or
|
||||
result = (path[0] in {'/', '\\'}) or
|
||||
(len > 1 and path[0] in {'a'..'z', 'A'..'Z'} and path[1] == ':')
|
||||
elif defined(macos):
|
||||
result = path.len > 0 and path[0] != ':'
|
||||
# according to https://perldoc.perl.org/File/Spec/Mac.html `:a` is a relative path
|
||||
result = path[0] != ':'
|
||||
elif defined(RISCOS):
|
||||
result = path[0] == '$'
|
||||
elif defined(posix):
|
||||
|
||||
Reference in New Issue
Block a user