�
���cc @ s� d d l Z d d l m Z d d l m Z d d l m Z y d d l Z Wn e k
re d Z n Xd e f d � � YZ
d g Z d S( i����N( t ENOENTi ( t BaseFileLock( t raise_on_exist_ro_filet WindowsFileLockc B s e Z d Z d � Z d � Z RS( sW Uses the :func:`msvcrt.locking` function to hard lock the lock file on windows systems.c C s� t | j � t j t j Bt j B} y t j | j | � } Wn( t k
rg } | j t k r� � q� nK Xy t
j | t
j d � Wn$ t t
f k
r� t j | � n
X| | _ d S( Ni ( R t
_lock_filet ost O_RDWRt O_CREATt O_TRUNCt opent OSErrort errnoR t msvcrtt lockingt LK_NBLCKt IOErrort closet
_lock_file_fd( t selft modet fdt exception( ( s5 /usr/lib/python2.7/site-packages/filelock/_windows.pyt _acquire s
c C sa | j } d | _ t j | t j d � t j | � y t j | j � Wn t k
r\ n Xd S( Ni (
R t NoneR R
t LK_UNLCKR R t removeR R
( R R ( ( s5 /usr/lib/python2.7/site-packages/filelock/_windows.pyt _release$ s
( t __name__t
__module__t __doc__R R ( ( ( s5 /usr/lib/python2.7/site-packages/filelock/_windows.pyR
s ( R R R t _apiR t _utilR R t ImportErrorR R t __all__( ( ( s5 /usr/lib/python2.7/site-packages/filelock/_windows.pyt <module> s
%