~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/lock.py

  • Committer: aaron.bentley at utoronto
  • Date: 2005-08-21 04:15:04 UTC
  • mto: (1092.1.41) (1185.3.4)
  • mto: This revision was merged to the branch mainline in revision 1110.
  • Revision ID: aaron.bentley@utoronto.ca-20050821041504-866f53c120065af3
Added revision-based common-ancestor checking

Show diffs side-by-side

added added

removed removed

Lines of Context:
35
35
"""
36
36
 
37
37
 
38
 
import sys, os
 
38
import sys
 
39
import os
39
40
 
40
 
from trace import mutter, note, warning
41
 
from errors import LockError
 
41
from bzrlib.trace import mutter, note, warning
 
42
from bzrlib.errors import LockError
42
43
 
43
44
class _base_Lock(object):
44
45
    def _open(self, filename, filemode):
45
 
        self.f = open(filename, filemode)
46
 
        return self.f
47
 
    
 
46
        import errno
 
47
        try:
 
48
            self.f = open(filename, filemode)
 
49
            return self.f
 
50
        except IOError, e:
 
51
            if e.errno != errno.ENOENT:
 
52
                raise
 
53
 
 
54
            # maybe this is an old branch (before may 2005)
 
55
            mutter("trying to create missing branch lock %r" % filename)
 
56
            
 
57
            self.f = open(filename, 'wb')
 
58
            return self.f
 
59
 
48
60
 
49
61
    def __del__(self):
50
62
        if self.f:
51
63
            from warnings import warn
52
64
            warn("lock on %r not released" % self.f)
53
65
            self.unlock()
 
66
            
54
67
 
55
68
    def unlock(self):
56
69
        raise NotImplementedError()
185
198
                        fpos = os.lseek(fn, 0,0)
186
199
                        os.lseek(fn, 0,0)
187
200
 
188
 
                    if flags & self.LOCK_SH:
189
 
                        if flags & self.LOCK_NB:
 
201
                    if flags & _msvc_FileLock.LOCK_SH:
 
202
                        if flags & _msvc_FileLock.LOCK_NB:
190
203
                            lock_mode = msvcrt.LK_NBLCK
191
204
                        else:
192
205
                            lock_mode = msvcrt.LK_LOCK
193
 
                    elif flags & self.LOCK_EX:
194
 
                        if flags & self.LOCK_NB:
 
206
                    elif flags & _msvc_FileLock.LOCK_EX:
 
207
                        if flags & _msvc_FileLock.LOCK_NB:
195
208
                            lock_mode = msvcrt.LK_NBRLCK
196
209
                        else:
197
210
                            lock_mode = msvcrt.LK_RLCK