diff options
Diffstat (limited to 'Lib/dospath.py')
-rw-r--r-- | Lib/dospath.py | 34 |
1 files changed, 13 insertions, 21 deletions
diff --git a/Lib/dospath.py b/Lib/dospath.py index d7aa752..bd5e560 100644 --- a/Lib/dospath.py +++ b/Lib/dospath.py @@ -54,31 +54,23 @@ def splitdrive(p): # Split a path in head (everything up to the last '/') and tail (the -# rest). If the original path ends in '/' but is not the root, this -# '/' is stripped. After the trailing '/' is stripped, the invariant +# rest). After the trailing '/' is stripped, the invariant # join(head, tail) == p holds. # The resulting head won't end in '/' unless it is the root. def split(p): - d, p = splitdrive(p) - slashes = '' - while p and p[-1:] in '/\\': - slashes = slashes + p[-1] - p = p[:-1] - if p == '': - p = p + slashes - head, tail = '', '' - for c in p: - tail = tail + c - if c in '/\\': - head, tail = head + tail, '' - slashes = '' - while head and head[-1:] in '/\\': - slashes = slashes + head[-1] - head = head[:-1] - if head == '': - head = head + slashes - return d + head, tail + d, p = splitdrive(p) + # set i to index beyond p's last slash + i = len(p) + while i and p[i-1] not in '/\\': + i = i - 1 + head, tail = p[:i], p[i:] # now tail has no slashes + # remove trailing slashes from head, unless it's all slashes + head2 = head + while head2 and head2[-1] in '/\\': + head2 = head2[:-1] + head = head2 or head + return d + head, tail # Split a path in root and extension. |