~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/atomicfile.py

  • Committer: Martin Pool
  • Date: 2005-09-22 13:32:02 UTC
  • Revision ID: mbp@sourcefrog.net-20050922133202-347cfd35d2941dd5
- simple weave-based annotate code (not complete)

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
 
19
19
from warnings import warn
20
 
from osutils import rename
 
20
 
21
21
 
22
22
class AtomicFile(object):
23
23
    """A file that does an atomic-rename to move into place.
65
65
        self.f.close()
66
66
        self.f = None
67
67
        
68
 
        rename(self.tmpfilename, self.realfilename)
 
68
        if sys.platform == 'win32':
 
69
            # windows cannot rename over an existing file
 
70
            try:
 
71
                os.remove(self.realfilename)
 
72
            except OSError, e:
 
73
                import errno
 
74
                if e.errno != errno.ENOENT:
 
75
                    raise
 
76
                
 
77
        os.rename(self.tmpfilename, self.realfilename)
69
78
 
70
79
 
71
80
    def abort(self):