~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/osutils.py

  • Committer: John Arbash Meinel
  • Date: 2006-06-30 14:57:22 UTC
  • mfrom: (1711.5.4 win32-sftp)
  • mto: This revision was merged to the branch mainline in revision 1827.
  • Revision ID: john@arbash-meinel.com-20060630145722-a1a54b622e7ec699
[merge] sftp fixes for win32 (and drive letters)

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
                    join as _nt_join,
23
23
                    normpath as _nt_normpath,
24
24
                    realpath as _nt_realpath,
 
25
                    splitdrive as _nt_splitdrive,
25
26
                    )
26
27
import os
27
28
from os import listdir
215
216
    return posixpath.realpath(path.encode(_fs_enc)).decode(_fs_enc)
216
217
 
217
218
 
 
219
def _win32_fixdrive(path):
 
220
    """Force drive letters to be consistent.
 
221
 
 
222
    win32 is inconsistent whether it returns lower or upper case
 
223
    and even if it was consistent the user might type the other
 
224
    so we force it to uppercase
 
225
    running python.exe under cmd.exe return capital C:\\
 
226
    running win32 python inside a cygwin shell returns lowercase c:\\
 
227
    """
 
228
    drive, path = _nt_splitdrive(path)
 
229
    return drive.upper() + path
 
230
 
 
231
 
218
232
def _win32_abspath(path):
219
233
    # Real _nt_abspath doesn't have a problem with a unicode cwd
220
 
    return _nt_abspath(unicode(path)).replace('\\', '/')
 
234
    return _win32_fixdrive(_nt_abspath(unicode(path)).replace('\\', '/'))
221
235
 
222
236
 
223
237
def _win32_realpath(path):
224
238
    # Real _nt_realpath doesn't have a problem with a unicode cwd
225
 
    return _nt_realpath(unicode(path)).replace('\\', '/')
 
239
    return _win32_fixdrive(_nt_realpath(unicode(path)).replace('\\', '/'))
226
240
 
227
241
 
228
242
def _win32_pathjoin(*args):
230
244
 
231
245
 
232
246
def _win32_normpath(path):
233
 
    return _nt_normpath(unicode(path)).replace('\\', '/')
 
247
    return _win32_fixdrive(_nt_normpath(unicode(path)).replace('\\', '/'))
234
248
 
235
249
 
236
250
def _win32_getcwd():
237
 
    return os.getcwdu().replace('\\', '/')
 
251
    return _win32_fixdrive(os.getcwdu().replace('\\', '/'))
238
252
 
239
253
 
240
254
def _win32_mkdtemp(*args, **kwargs):
241
 
    return tempfile.mkdtemp(*args, **kwargs).replace('\\', '/')
 
255
    return _win32_fixdrive(tempfile.mkdtemp(*args, **kwargs).replace('\\', '/'))
242
256
 
243
257
 
244
258
def _win32_rename(old, new):