HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //usr/lib/python3.6/site-packages/rhn/__pycache__/rhnLockfile.cpython-36.opt-1.pyc
3

0Q=j.�@s�ddlZddlZddlZddlZddlmZmZddlmZddlZGdd�de	�Z
Gdd�d�Zdd	�Ze
d
kr�eje�p~d�dS)�N)�EWOULDBLOCK�EEXIST)�bstrc@seZdZdZdS)�LockfileLockedExceptionz$thrown ONLY when pid file is locked.N)�__name__�
__module__�__qualname__�__doc__�r
r
�!/usr/lib/python3.6/rhnLockfile.pyrsrc@s*eZdZdZd	dd�Zdd�Zdd�ZdS)
�Lockfilez�class 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.
    NcCs"tjjtjjtjj|���|_||_|js4tj�|_tjj|j�}tjj	|�s�ytj
|�Wn8tk
r�tj
�d}t|d�r�|jtkr�n�YnXtj|jtjtjBtjBtjBtjBd�|_tj|j�}tj|j�s�|jtj�k�rtj|j�td|jtj�|j|jf��|j�dS)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�hasattrrr�open�O_RDWR�O_CREAT�O_SYNC�
O_NOFOLLOW�	O_CLOEXEC�f�fstat�stat�S_ISREG�st_mode�st_uid�geteuid�close�acquire)�selfrrr�e�str
r
r�__init__%s0
$	zLockfile.__init__c
Cs�ytj|jtjtjB�WnDtk
r^tj�djt	krXt
d|jdtj�d��n�YnXtj|jtjd�t
j|jd�t
j|jtt|j�d��dS)z5acquire the lock; else raise LockfileLockedException.r
zcannot acquire lock on %s.N�r�
)�fcntl�flockr$ZLOCK_EXZLOCK_NB�IOErrorrrrrrrZF_SETFDr�	ftruncate�writer�strr)r-r
r
rr,^szLockfile.acquirecCs~y4tj|j�}tj|j�}|j|jko0|j|jk}Wntk
rLd}YnX|r^tj|j�t	j
|jt	j�tj|j�dS)NF)
rr%r$�lstatr�st_dev�st_inor�unlinkr3r4ZLOCK_UNr+)r-Zfd_stZpath_stZ
same_inoder
r
r�releaseos
zLockfile.release)N)rrrr	r0r,r=r
r
r
rrs
9rcCszytd�}Wn6tk
rBtjjdtj�d�tjd
�Yn4Xtd�td�ddl}|j	d�|j
�td	�dS)z	test codez
./test.pidz%s
r
zlock acquired z...sleeping for 10 secondsrN�
zlock released ���)rrr�stderrr7r�exit�print�timeZsleepr=)�LrCr
r
r�main�s
rE�__main__)rrr&r3rrrZrhn.i18nr�	ExceptionrrrErrAr
r
r
r�<module>sh