Merged revisions 77442 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r77442 | ezio.melotti | 2010-01-12 05:32:05 +0200 (Tue, 12 Jan 2010) | 1 line

  #5827: make sure that normpath preserves unicode
........
This commit is contained in:
Ezio Melotti 2010-01-12 03:38:53 +00:00
parent 0d54bd5122
commit 698037a232
5 changed files with 25 additions and 8 deletions

View file

@ -397,6 +397,8 @@ def expandvars(path):
def normpath(path):
"""Normalize path, eliminating double slashes, etc."""
# Preserve unicode (if path is unicode)
backslash, dot = (u'\\', u'.') if isinstance(path, unicode) else ('\\', '.')
path = path.replace("/", "\\")
prefix, path = splitdrive(path)
# We need to be careful here. If the prefix is empty, and the path starts
@ -411,12 +413,12 @@ def normpath(path):
if prefix == '':
# No drive letter - preserve initial backslashes
while path[:1] == "\\":
prefix = prefix + "\\"
prefix = prefix + backslash
path = path[1:]
else:
# We have a drive letter - collapse initial backslashes
if path.startswith("\\"):
prefix = prefix + "\\"
prefix = prefix + backslash
path = path.lstrip("\\")
comps = path.split("\\")
i = 0
@ -435,8 +437,8 @@ def normpath(path):
i += 1
# If the path is now empty, substitute '.'
if not prefix and not comps:
comps.append('.')
return prefix + "\\".join(comps)
comps.append(dot)
return prefix + backslash.join(comps)
# Return an absolute path.