[utils] locked_file: Fix non-blocking non-exclusive lock

This commit is contained in:
pukkandan 2022-04-07 12:00:58 +05:30
parent fcfa8853e4
commit b63837bce0
No known key found for this signature in database
GPG Key ID: 7EEE9E1E817D0A39
1 changed files with 5 additions and 8 deletions

View File

@ -2190,18 +2190,15 @@ else:
import fcntl import fcntl
def _lock_file(f, exclusive, block): def _lock_file(f, exclusive, block):
flags = fcntl.LOCK_EX if exclusive else fcntl.LOCK_SH
if not block:
flags |= fcntl.LOCK_NB
try: try:
fcntl.flock(f, fcntl.flock(f, flags)
fcntl.LOCK_SH if not exclusive
else fcntl.LOCK_EX if block
else fcntl.LOCK_EX | fcntl.LOCK_NB)
except BlockingIOError: except BlockingIOError:
raise raise
except OSError: # AOSP does not have flock() except OSError: # AOSP does not have flock()
fcntl.lockf(f, fcntl.lockf(f, flags)
fcntl.LOCK_SH if not exclusive
else fcntl.LOCK_EX if block
else fcntl.LOCK_EX | fcntl.LOCK_NB)
def _unlock_file(f): def _unlock_file(f):
try: try: