
    Tf?	                     :    d dl Z d dlZd dlZ G d de          ZdS )    Nc                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )Pidfilez    Manage a PID file. If a specific name is provided
    it and '"%s.oldpid" % name' will be used. Otherwise
    we create a temp file using os.mkstemp.
    c                 "    || _         d | _        d S N)fnamepid)selfr   s     B/var/www/html/env/lib/python3.11/site-packages/gunicorn/pidfile.py__init__zPidfile.__init__   s    
    c                    |                                  }|r4|t          j                    k    rd S d}t          ||| j        fz            || _        t          j                            | j                  }|r1t          j                            |          st          d|z            t          j
        |          \  }}t          j        |d| j        z                      d                     | j        rt          j        || j                   n|| _        t          j        |           t          j        | j        d           d S )Nz5Already running on PID %s (or pid file '%s' is stale)z'%s doesn't exist. Can't create pidfile.)dirz%s
zutf-8i  )validateosgetpidRuntimeErrorr   r   pathdirnameisdirtempfilemkstempwriteencoderenameclosechmod)r	   r   oldpidmsgfdirfdr   s          r
   createzPidfile.create   s,    	;$$ICsfdj%99::: wtz** 	Qd++ 	QH4OPPP$...	E
ftx'//88999: 	IeTZ((((DJ
 	S!!!!!r   c                 p    |                                   || _        |                     | j                   d S r   )unlinkr   r!   r   )r	   r   s     r
   r   zPidfile.rename/   s0    
DHr   c                    	 t          | j        d          5 }t          |                                pd          }ddd           n# 1 swxY w Y   || j        k    rt          j        | j                   dS dS # t          $ r Y dS w xY w)z delete pidfilerr   N)openr   intreadr   r   r#   	Exception)r	   fpid1s      r
   r#   zPidfile.unlink4   s    	dj#&& *!16688=q))* * * * * * * * * * * * * * * tx	$*%%%%%   	 	 	DD	s3   A: $AA: AA: A'A: :
BBc                 d   | j         sdS 	 t          | j         d          5 }	 t          |                                          }n# t          $ r Y ddd           dS w xY w	 t          j        |d           |cddd           S # t          $ r`}|j        d         t          j
        k    r|cY d}~cddd           S |j        d         t          j        k    rY d}~ddd           dS  d}~ww xY w# 1 swxY w Y   dS # t          $ r'}|j        d         t          j        k    rY d}~dS  d}~ww xY w)z- Validate pidfile and make it stale if neededNr%   r   )r   r&   r'   r(   
ValueErrorr   killOSErrorargserrnoEPERMESRCHIOErrorENOENT)r	   r*   wpides       r
   r   zPidfile.validate?   s   z 	F	dj#&& !qvvxx==DD!   	       GD!$$$           vayEK//#        vayEK//                   	 	 	vayEL((	s   C> C1!AC1
AC1C> AC1!B7C> 
C.C)*C.+C1/C> <C)C1C> (C))C..C11C55C> 8C59C> >
D/D*)D**D/N)	__name__
__module____qualname____doc__r   r!   r   r#   r    r   r
   r   r      si           " " "2  
	 	 	    r   r   )r1   r   r   objectr   r<   r   r
   <module>r>      s`     				 K K K K Kf K K K K Kr   