HEX
Server: LiteSpeed
System: Linux sr2.wonderwebhub.com 5.14.0-611.49.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Apr 21 16:39:08 EDT 2026 x86_64
User: foodnest (2814)
PHP: 8.3.31
Disabled: exec, shell_exec, system, passthru, proc_open, popen
Upload Files
File: //lib/python3.9/site-packages/rhn/__pycache__/rhnLockfile.cpython-39.pyc
a

0Q=j.�@s�ddlZddlZddlZddlZddlmZmZddlmZddlZGdd�de	�Z
Gdd�d�Zdd	�Ze
d
kr�e�e�p~d�dS)�N)�EWOULDBLOCK�EEXIST)�bstrc@seZdZdZdS)�LockfileLockedExceptionz$thrown ONLY when pid file is locked.N)�__name__�
__module__�__qualname__�__doc__�r
r
�3/usr/lib/python3.9/site-packages/rhn/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.
    NcCstj�tj�tj�|���|_||_|js4t��|_tj�|j�}tj�	|�s�zt�
|�Wn6ty�t�
�d}t|d�r�|jtkr�n�Yn0t�|jtjtjBtjBtjBtjBd�|_t�|j�}t�|j�r�|jt��k�rt�|j�td|jt��|j|jf��|��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__%sD
��
�����zLockfile.__init__cCs�zt�|jtjtjB�WnBty\t��djt	krVt
d|jdt��d��n�Yn0t�|jtjd�t
�|jd�t
�|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,^s�zLockfile.acquirecCs|z4t�|j�}t�|j�}|j|jko0|j|jk}WntyJd}Yn0|r\t�|j�t	�
|jt	j�t�|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cCsxztd�}Wn4ty@tj�dt��d�t�d�Yn40td�td�ddl}|�	d	�|�
�td
�dS)z	test codez
./test.pidz%s
r
���zlock acquired z...sleeping for 10 secondsrN�
zlock released )rrr�stderrr7r�exit�print�time�sleepr=)�LrCr
r
r�main�s
rF�__main__)rrr&r3rrrZrhn.i18nr�	ExceptionrrrFrrAr
r
r
r�<module>sh