Viewing 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/ctypes/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)r�importlib.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)r r!)
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�OSErrorr7�read�close�FileNotFoundError�search�fsdecode�group)	r+�exprZ
c_compilerZtemp�argsr9�procZtrace�resrrr�_findLib_gccWs:


rOZsunos5cCsz|sdSytjdd|ftjtjd�}Wntk
r:dSX|�|jj�}WdQRXtjd|�}|sjdSt	j
|jd��S)Nz/usr/ccs/bin/dumpz-Lpv)r7r8s\[.*\]\sSONAME\s+([^\s]+)r)rArBrC�DEVNULLrDr7rEr;rHr#rIrJ)�frM�datarNrrr�_get_soname�srScCs�|sdStjd�}|sdSy"tj|ddd|ftjtjd�}Wntk
rPdSX|�|jj�}WdQRXt	j
d|�}|s�dStj|j
d��S)N�objdumpz-pz-jz.dynamic)r7r8s\sSONAME\s+([^\s]+)r)r=r>rArBrCrPrDr7rEr;rHr#rIrJ)rQrTrM�dumprNrrrrS�s"
�freebsd�openbsd�	dragonflycCsR|jd�}g}y"x|r,|jdt|j���qWWntk
rDYnX|pPtjgS)N�.r)r�insertr�popr1r�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)r7r8�)�keyr)r_r`r	)r;r<r#r:rArBrCrPrDr7rE�findallrSrO�sortr^rI)r+ZenamerKrMrRrNrrrr,�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/crler4r5�-64)r7r8r9sDefault Library Path (ELF):��:zlib%s.so)rerf)re)r#r&�existsr@r$rArBrCrPrDr7�strip�
startswithrIrr')	r+�is64r9rL�pathsrM�line�dirZlibfilerrr�
_findLib_crle�s6

 rpFcCstt||�pt|��S)N)rSrprO)r+rlrrrr,�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�lrgz-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-pr4)r5r6)�stdinr8r7r9r)�structZcalcsizer#�uname�machine�getr:r;r<rArBrPrCrHr7rErIrJrD)r+rsruZmach_mapZabi_typeZregex�prNrrr�_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_PATHrhz-Lz-oz-l%sT)r7r8Zuniversal_newlinesr)r;r<r#r$rvr�extend�devnullrArBrCZcommunicaterHrIrJ�	Exception)r+rK�cmdZlibpathr�resultrw�out�_rN�errr�_findLib_lds&
r�cCst|�ptt|�pt|��S)N)rxrSrOr�)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__)rVrWrX)F)r#r=rArr+rrr,r�Zctypes.macholib.dyldr/r0r;r?rOrSrkr^rprxr�r��__name__rrrr�<module>s8

+



$

Back to Directory File Manager