ÿØÿà 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
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà 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
mic                 @   s~   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rzeje pvd  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 | _| j  dS )zlcreate (if need be), and acquire lock on lockfile

        lockfile example: '/var/run/up2date.pid'
           errnoN)ospathabspath
expanduser
expandvarslockfilepidgetpiddirnameexistsmakedirsOSErrorsysexc_infohasattrr   r   openO_RDWRO_CREATO_SYNCfacquire)selfr   r   r   er
   r
   r   __init__$   s"    
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#   E   s    zLockfile.acquirec             C   s,   t j| j tj| jtj t j| j d S )N)r   unlinkr   r)   r*   r"   ZLOCK_UNclose)r$   r
   r
   r   releaseV   s    zLockfile.release)N)r   r   r   r	   r&   r#   r1   r
   r
   r
   r   r      s   
!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   stderrr-   r   exitprinttimeZsleepr1   )Lr7   r
   r
   r   main]   s    
r9   __main__)r   r   r)   r   r   r   Zrhn.i18nr   	Exceptionr   r   r9   r   r5   r
   r
   r
   r   <module>   s   B