Your IP : 3.142.197.212


Current Path : /lib64/python3.6/ctypes/__pycache__/
Upload File :
Current File : //lib64/python3.6/ctypes/__pycache__/util.cpython-36.pyc

3


 \�-�@sddlZddlZddlZddlZejdkrBdd�Zdd�Zdd�Zejd	krlejd
krlddl	m
Zdd�Zn�ejd	k�rddlZddl
Z
d
d�Zejdkr�dd�Zndd�Zejjd%�r�dd�Zdd�Zn6ejdkr�dd�Zd&dd�Zndd�Zdd �Zd!d�Zd"d#�Zed$k�re�dS)'�N�ntcCs�d}tjj|�}|dkrdS|t|�}tj|d�jdd�\}}t|dd��d}|dkrf|d7}t|dd��d	}|dkr�d
}|dkr�||SdS)
z�Return the version of MSVC that was used to build Python.

        For Python 2.3 and up, the version number is included in
        sys.version.  For earlier versions, assume the compiler is MSVC 6.
        zMSC v.��N� ��
�g$@r������)�sys�version�find�len�split�int)�prefix�i�s�restZmajorVersionZminorVersion�r�/usr/lib64/python3.6/util.py�_get_build_version	srcCs^t�}|dkrdS|dkr d}n|dkr6d|d}ndSddl}d|jjkrV|d	7}|d
S)z%Return the name of the VC runtime dllNr�msvcrtrzmsvcr%d�
rz_d.pyd�dz.dll)rZimportlib.machinery�	machinery�EXTENSION_SUFFIXES)rZclibname�	importlibrrr�find_msvcrt"srcCst|dkrt�Sx`tjdjtj�D]J}tjj||�}tjj|�rD|S|j�j	d�rTq"|d}tjj|�r"|Sq"WdS)N�c�m�PATHz.dll)rr )
r�os�environr�pathsep�path�join�isfile�lower�endswith)�nameZ	directoryZfnamerrr�find_library7sr+�posix�darwin)�	dyld_findcCsLd|d|d||fg}x,|D]$}yt|�Stk
rBw Yq Xq WdS)Nzlib%s.dylibz%s.dylibz%s.framework/%s)�
_dyld_find�
ValueError)r*�possiblerrrr+Hs
c	!Cstjdtj|��}tjd�}|s,tjd�}|s4dStj�}z||dd|jd|g}t	tj
�}d|d<d|d	<ytj|tj
tj|d
�}Wntk
r�dSX|�|jj�}WdQRXWdy|j�Wntk
r�YnXXtj||�}|s�dStj|jd��S)Nz[^\(\)\s]*lib%s\.[^\(\)\s]*�gccZccz-Wl,-tz-oz-l�C�LC_ALL�LANG)�stdout�stderr�envr)r"�fsencode�re�escape�shutil�which�tempfileZNamedTemporaryFiler*�dictr#�
subprocess�Popen�PIPEZSTDOUT�OSErrorr6�read�close�FileNotFoundError�search�fsdecode�group)	r*�exprZ
c_compilerZtemp�argsr8�procZtrace�resrrr�_findLib_gccWs:


rNZsunos5cCsz|sdSytjdd|ftjtjd�}Wntk
r:dSX|�|jj�}WdQRXtjd|�}|sjdSt	j
|jd��S)Nz/usr/ccs/bin/dumpz-Lpv)r6r7s\[.*\]\sSONAME\s+([^\s]+)r)r@rArB�DEVNULLrCr6rDr:rGr"rHrI)�frL�datarMrrr�_get_soname�srRcCs�|sdStjd�}|sdSy"tj|ddd|ftjtjd�}Wntk
rPdSX|�|jj�}WdQRXt	j
d|�}|s�dStj|j
d��S)N�objdumpz-pz-jz.dynamic)r6r7s\sSONAME\s+([^\s]+)r)r<r=r@rArBrOrCr6rDr:rGr"rHrI)rPrSrL�dumprMrrrrR�s"
�freebsd�openbsd�	dragonflycCsR|jd�}g}y"x|r,|jdt|j���qWWntk
rDYnX|pPtjgS)N�.r)r�insertr�popr0r�maxsize)Zlibname�partsZnumsrrr�_num_version�s
r]cCs�tj|�}d||f}tj|�}ytjdtjtjd�}Wntk
rPd}YnX|�|j	j
�}WdQRXtj||�}|s�tt
|��S|jtd�tj|d	�S)
Nz:-l%s\.\S+ => \S*/(lib%s\.\S+)�/sbin/ldconfig�-r)r6r7�)�keyr)r^r_r	)r:r;r"r9r@rArBrOrCr6rD�findallrRrN�sortr]rH)r*ZenamerJrLrQrMrrrr+�s 


c	Cs�tjjd�sdSttj�}d|d<|r,d
}nd}d}ytj|tjtj|d�}Wnt	k
rbdSX|�:x2|j
D](}|j�}|jd�rrtj
|�j�d}qrWWdQRX|s�dSx4|jd�D]&}tjj|d	|�}tjj|�r�|Sq�WdS)N�
/usr/bin/crler3r4�-64)r6r7r8sDefault Library Path (ELF):��:zlib%s.so)rdre)rd)r"r%�existsr?r#r@rArBrOrCr6�strip�
startswithrHrr&)	r*�is64r8rK�pathsrL�line�dirZlibfilerrr�
_findLib_crle�s6

 roFcCstt||�pt|��S)N)rRrorN)r*rkrrrr+�scCs�ddl}|jd�dkr&tj�jd}ntj�jd}dddddd	�}|j|d
�}d}tj|tj|�|f�}yZt	j
dd
gt	jt	jt	jddd�d��,}tj
||jj��}|r�tj|jd��SWdQRXWntk
r�YnXdS)Nr�lrfz-32z-64zlibc6,x86-64zlibc6,64bitzlibc6,IA-64)z	x86_64-64zppc64-64z
sparc64-64zs390x-64zia64-64Zlibc6z\s+(lib%s\.[^\s]+)\s+\(%sz/sbin/ldconfigz-pr3)r4r5)�stdinr7r6r8r)�struct�calcsizer"�uname�machine�getr9r:r;r@rArOrBrGr6rDrHrIrC)r*rrruZmach_mapZabi_typeZregex�prMrrr�_findSoname_ldconfig�s.
rxcCs�dtj|�}ddg}tjjd�}|rHx |jd�D]}|jd|g�q2W|jdtjd|g�d}yFtj	|tj
tj
d	d
�}|j�\}}tj|tj
|��}	|	r�|	jd�}Wn"tk
r�}
zWYdd}
~
XnX|S)Nz[^\(\)\s]*lib%s\.[^\(\)\s]*Zldz-tZLD_LIBRARY_PATHrgz-Lz-oz-l%sT)r6r7Zuniversal_newlinesr)r:r;r"r#rvr�extend�devnullr@rArBZcommunicaterGrHrI�	Exception)r*rJ�cmdZlibpathr�resultrw�out�_rM�errr�_findLib_lds&
r�cCst|�ptt|�pt|��S)N)rxrRrNr�)r*rrrr+,scCs�ddlm}tjdkr:t|j�t|jd��ttd��tjdkr�ttd��ttd��ttd��tj	d	kr�t|j
d
��t|j
d��t|j
d��t|j
d
��n(t|j
d��t|j
d��ttd��dS)Nr)�cdllrrr,r r�bz2r-z
libm.dylibzlibcrypto.dylibzlibSystem.dylibzSystem.framework/Systemzlibm.sozlibcrypt.soZcrypt)Zctypesr�r"r*�printr�loadr+r�platformZLoadLibrary)r�rrr�test4s"



r��__main__)rUrVrW)F)r"r<r@rr*rrr+r�Zctypes.macholib.dyldr.r/r:r>rNrRrjr]rorxr�r��__name__rrrr�<module>s8

+



$