From 191e5297febe69b06efea0d9165a94b8b67757b4 Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Thu, 30 Aug 2001 22:05:26 +0000 Subject: SF bug #456621: normpath on Win32 not collapsing c:\\.. I actually rewrote normpath quite a bit: it had no test cases, and as soon as I starting writing some I found several cases that didn't make sense. --- Lib/ntpath.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'Lib/ntpath.py') diff --git a/Lib/ntpath.py b/Lib/ntpath.py index 1be2961a4f..d55cc7c44f 100644 --- a/Lib/ntpath.py +++ b/Lib/ntpath.py @@ -407,7 +407,7 @@ def expandvars(path): return res -# Normalize a path, e.g. A//B, A/./B and A/foo/../B all become A/B. +# Normalize a path, e.g. A//B, A/./B and A/foo/../B all become A\B. # Previously, this function also truncated pathnames to 8+3 format, # but as this module is called "ntpath", that's obviously wrong! @@ -421,15 +421,18 @@ def normpath(path): comps = path.split("\\") i = 0 while i < len(comps): - if comps[i] == '.': - del comps[i] - elif comps[i] == '..' and i > 0 and comps[i-1] not in ('', '..'): - del comps[i-1:i+1] - i = i - 1 - elif comps[i] == '' and i > 0 and comps[i-1] != '': + if comps[i] in ('.', ''): del comps[i] + elif comps[i] == '..': + if i > 0 and comps[i-1] != '..': + del comps[i-1:i+1] + i -= 1 + elif i == 0 and prefix.endswith("\\"): + del comps[i] + else: + i += 1 else: - i = i + 1 + i += 1 # If the path is now empty, substitute '.' if not prefix and not comps: comps.append('.') -- cgit v1.2.1