mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-27 10:31:29 +00:00
[utils] Fix file locking for AOSP (#2714)
Closes #2080, #2670 Authored by: jakeogh
This commit is contained in:
parent
f1d130902b
commit
acea8d7cfb
|
@ -2141,18 +2141,28 @@ def _unlock_file(f):
|
||||||
raise OSError('Unlocking file failed: %r' % ctypes.FormatError())
|
raise OSError('Unlocking file failed: %r' % ctypes.FormatError())
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# Some platforms, such as Jython, is missing fcntl
|
|
||||||
try:
|
try:
|
||||||
import fcntl
|
import fcntl
|
||||||
|
|
||||||
def _lock_file(f, exclusive, block):
|
def _lock_file(f, exclusive, block):
|
||||||
fcntl.flock(f,
|
try:
|
||||||
fcntl.LOCK_SH if not exclusive
|
fcntl.flock(f,
|
||||||
else fcntl.LOCK_EX if block
|
fcntl.LOCK_SH if not exclusive
|
||||||
else fcntl.LOCK_EX | fcntl.LOCK_NB)
|
else fcntl.LOCK_EX if block
|
||||||
|
else fcntl.LOCK_EX | fcntl.LOCK_NB)
|
||||||
|
except BlockingIOError:
|
||||||
|
raise
|
||||||
|
except OSError: # AOSP does not have flock()
|
||||||
|
fcntl.lockf(f,
|
||||||
|
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):
|
||||||
fcntl.flock(f, fcntl.LOCK_UN)
|
try:
|
||||||
|
fcntl.flock(f, fcntl.LOCK_UN)
|
||||||
|
except OSError:
|
||||||
|
fcntl.lockf(f, fcntl.LOCK_UN)
|
||||||
|
|
||||||
except ImportError:
|
except ImportError:
|
||||||
UNSUPPORTED_MSG = 'file locking is not supported on this platform'
|
UNSUPPORTED_MSG = 'file locking is not supported on this platform'
|
||||||
|
|
Loading…
Reference in a new issue