~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/osutils.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2006-07-03 13:56:48 UTC
  • mfrom: (1711.4.41 win32-accepted)
  • Revision ID: pqm@pqm.ubuntu.com-20060703135648-b927e5efb9f5b907
(jam) cleanup for win32, close open file handles, tests pass

Show diffs side-by-side

added added

removed removed

Lines of Context:
256
256
 
257
257
 
258
258
def _win32_rename(old, new):
259
 
    fancy_rename(old, new, rename_func=os.rename, unlink_func=os.unlink)
 
259
    """We expect to be able to atomically replace 'new' with old.
 
260
 
 
261
    On win32, if new exists, it must be moved out of the way first,
 
262
    and then deleted. 
 
263
    """
 
264
    try:
 
265
        fancy_rename(old, new, rename_func=os.rename, unlink_func=os.unlink)
 
266
    except OSError, e:
 
267
        if e.errno in (errno.EPERM, errno.EACCES, errno.EBUSY):
 
268
            # If we try to rename a non-existant file onto cwd, we get EPERM
 
269
            # instead of ENOENT, this will raise ENOENT if the old path
 
270
            # doesn't exist
 
271
            os.lstat(old)
 
272
        raise
260
273
 
261
274
 
262
275
# Default is to just use the python builtins, but these can be rebound on