-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     3
0Q=j.                 @   s   d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZ d dlZG dd de	Z
G dd dZdd	 Zed
kreje p~d  dS )    N)EWOULDBLOCKEEXIST)bstrc               @   s   e Zd ZdZdS )LockfileLockedExceptionz$thrown ONLY when pid file is locked.N)__name__
__module____qualname____doc__ r
   r
   !/usr/lib/python3.6/rhnLockfile.pyr      s   r   c               @   s*   e Zd ZdZd	ddZdd Zdd ZdS )
Lockfilezclass that provides simple access to a PID-style lockfile.

    methods: __init__(lockfile), acquire(), and release()
    NOTE: currently acquires upon init
    The *.pid file will be acquired, or an LockfileLockedException is raised.
    Nc             C   s"  t jjt jjt jj|| _|| _| js4t j | _t jj| j}t jj	|syt j
| W n8 tk
r   tj d }t|dr|jtkrn Y nX t j| jt jt jB t jB t jB t jB d| _t j| j}tj|j s|jt j krt j| j td| jt j |j|jf | j  dS )zlcreate (if need be), and acquire lock on lockfile

        lockfile example: '/var/run/up2date.pid'
           errnoi  zSrefusing to use lockfile %s: not a regular file owned by uid %d (mode 0o%o, uid %d)N) ospathabspath
expanduser
expandvarslockfilepidgetpiddirnameexistsmakedirsOSErrorsysexc_infohasattrr   r   openO_RDWRO_CREATO_SYNC
O_NOFOLLOW	O_CLOEXECffstatstatS_ISREGst_modest_uidgeteuidcloseacquire)selfr   r   r   estr
   r
   r   __init__%   s0    
$	zLockfile.__init__c             C   s   yt j| jt jt jB  W nD tk
r^   tj d jt	krXt
d| j dtj d n Y nX t j | jt jd tj| jd tj| jtt| jd  dS )z5acquire the lock; else raise LockfileLockedException.r   zcannot acquire lock on %s.N   r   
)fcntlflockr$   ZLOCK_EXZLOCK_NBIOErrorr   r   r   r   r   r   ZF_SETFDr   	ftruncatewriter   strr   )r-   r
   r
   r   r,   ^   s    zLockfile.acquirec             C   s~   y4t j| j}t j| j}|j|jko0|j|jk}W n tk
rL   d}Y nX |r^t j| j t	j
| jt	j t j| j d S )NF)r   r%   r$   lstatr   st_devst_inor   unlinkr3   r4   ZLOCK_UNr+   )r-   Zfd_stZpath_stZ
same_inoder
   r
   r   releaseo   s    
zLockfile.release)N)r   r   r   r	   r0   r,   r=   r
   r
   r
   r   r      s   
9r   c              C   sz   yt d} W n6 tk
rB   tjjdtj d   tjd
 Y n4X td td ddl}|j	d | j
  td	 dS )z	test codez
./test.pidz%s
r   zlock acquired z...sleeping for 10 secondsr   N
   zlock released )r   r   r   stderrr7   r   exitprinttimeZsleepr=   )LrC   r
   r
   r   main   s    
rE   __main__)r   r   r&   r3   r   r   r   Zrhn.i18nr   	Exceptionr   r   rE   r   rA   r
   r
   r
   r   <module>   s   h