Commit 5fc02525 authored by Guido van Rossum's avatar Guido van Rossum

same thing as for dospath, plus HOMEDRIVE/HOMEPATH support

parent ea2b92a1
# Module 'dospath' -- common operations on DOS pathnames
# Module 'ntpath' -- common operations on DOS pathnames
import os
import stat
......@@ -7,27 +7,22 @@ import string
# Normalize the case of a pathname.
# On MS-DOS it maps the pathname to lowercase, turns slashes into
# backslashes and maps invalid consecutive characters to a single '_'.
# backslashes.
# Other normalizations (such as optimizing '../' away) are not allowed
# (this is done by normpath).
mapchar = '_'
# Previously, this version mapped invalid consecutive characters to a
# single '_', but this has been removed. This functionality should
# possibly be added as a new function.
def normcase(s):
res, s = splitdrive(s)
for c in s:
if c in '/\\':
res = res + os.sep
elif c == '.' and res[-1:] == os.sep:
res = res + mapchar + c
elif ord(c) < 32 or c in ' "*+,:;<=>?[]|':
if res[-1:] != mapchar:
res = res + mapchar
else:
res = res + c
return string.lower(res)
# Return wheter a path is absolute.
# Trivial in Posix, harder on the Mac or MS-DOS.
# For DOS it is absolute if it starts with a slash or backslash (current
......@@ -243,9 +238,13 @@ def expanduser(path):
while i < n and path[i] not in '/\\':
i = i+1
if i == 1:
if not os.environ.has_key('HOME'):
try:
drive=os.environ['HOMEDRIVE']
except KeyError:
drive = ''
if not os.environ.has_key('HOMEPATH'):
return path
userhome = os.environ['HOME']
userhome = join(drive, os.environ['HOMEPATH'])
else:
return path
return userhome + path[i:]
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment