comparison mercurial/windows.py @ 15637:7f01ad702405 stable

icasefs: use util.normcase() instead of str.lower() or os.path.normpath()
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Mon, 12 Dec 2011 17:10:19 +0900
parents 6eff984d8e76
children 5402fd9dd13e 3c5e818ac679
comparison
equal deleted inserted replaced
15635:82f5e471792d 15637:7f01ad702405
138 Returns the true, canonical file system path equivalent to the given 138 Returns the true, canonical file system path equivalent to the given
139 path. 139 path.
140 ''' 140 '''
141 # TODO: There may be a more clever way to do this that also handles other, 141 # TODO: There may be a more clever way to do this that also handles other,
142 # less common file systems. 142 # less common file systems.
143 return os.path.normpath(os.path.normcase(os.path.realpath(path))) 143 return os.path.normpath(normcase(os.path.realpath(path)))
144 144
145 def samestat(s1, s2): 145 def samestat(s1, s2):
146 return False 146 return False
147 147
148 # A sequence of backslashes is special iff it precedes a double quote: 148 # A sequence of backslashes is special iff it precedes a double quote:
214 return findexisting(os.path.expanduser(os.path.expandvars(command))) 214 return findexisting(os.path.expanduser(os.path.expandvars(command)))
215 215
216 def statfiles(files): 216 def statfiles(files):
217 '''Stat each file in files and yield stat or None if file does not exist. 217 '''Stat each file in files and yield stat or None if file does not exist.
218 Cluster and cache stat per directory to minimize number of OS stat calls.''' 218 Cluster and cache stat per directory to minimize number of OS stat calls.'''
219 ncase = os.path.normcase
220 dircache = {} # dirname -> filename -> status | None if file does not exist 219 dircache = {} # dirname -> filename -> status | None if file does not exist
221 for nf in files: 220 for nf in files:
222 nf = ncase(nf) 221 nf = normcase(nf)
223 dir, base = os.path.split(nf) 222 dir, base = os.path.split(nf)
224 if not dir: 223 if not dir:
225 dir = '.' 224 dir = '.'
226 cache = dircache.get(dir, None) 225 cache = dircache.get(dir, None)
227 if cache is None: 226 if cache is None:
228 try: 227 try:
229 dmap = dict([(ncase(n), s) 228 dmap = dict([(normcase(n), s)
230 for n, k, s in osutil.listdir(dir, True)]) 229 for n, k, s in osutil.listdir(dir, True)])
231 except OSError, err: 230 except OSError, err:
232 # handle directory not found in Python version prior to 2.5 231 # handle directory not found in Python version prior to 2.5
233 # Python <= 2.4 returns native Windows code 3 in errno 232 # Python <= 2.4 returns native Windows code 3 in errno
234 # Python >= 2.5 returns ENOENT and adds winerror field 233 # Python >= 2.5 returns ENOENT and adds winerror field