Viewing File: /opt/alt/python35/lib64/python3.5/ctypes/__pycache__/util.cpython-35.pyc



��Yf>+�@s�ddlZddlZddlZddlZejdkrcdd�Zdd�Zdd�Zejd	kr~d
d�Zejdkr�ejdkr�dd
l	m
Zdd�Zn�ejdkr�ddlZddl
Z
dd�Zejdkrdd�Zndd�Zejjd%�rEdd�Zdd�ZnEejdkrrdd�Zddd�Zndd �Zd!d�Zd"d#�Zed$kr�e�dS)&�N�ntcCs�d}tjj|�}|dkr(dS|t|�}tj|d�jdd�\}}t|dd��d}|dkr�|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�0/opt/alt/python35/lib64/python3.5/ctypes/util.py�_get_build_version	s%
rcCst�}|dkrdS|dkr.d}n!|dkrKd|d}ndSddl}d|jjkrw|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		
rcCs�|dkrt�Sx�tjdjtj�D]i}tjj||�}tjj|�r^|S|j�j	d�rvq-|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,ZcecCs|S)Nr)r+rrrr,Ms�posix�darwin)�	dyld_findcCs\d|d|d||fg}x4|D],}yt|�SWq(tk
rSw(Yq(Xq(WdS)Nzlib%s.dylibz%s.dylibz%s.framework/%s)�
_dyld_find�
ValueError)r+Zpossiblerrrr,Rs

c	!CsStjdtj|��}tjd�}|s@tjd�}|sJdStj�}z�|dd|jd|g}t	tj
�}d|d<d|d	<y+tj|d
tj
dtjd|�}Wntk
r�dSYnX|�|jj�}WdQRXWdy|j�Wntk
rYnXXtj||�}|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_gccas:

		

	
rNZsunos5cCs�|s
dSy.tjdd|fdtjdtj�}Wntk
rPdSYnX|�|jj�}WdQRXtjd|�}|s�dSt	j
|jd��S)Nz/usr/ccs/bin/dumpz-Lpvr6r7s\[.*\]\sSONAME\s+([^\s]+)r)r@rArB�DEVNULLrCr6rDr:rGr#rHrI)�frL�datarMrrr�_get_soname�s	
	rRcCs�|s
dStjd�}|s#dSy4tj|ddd|fdtjdtj�}Wntk
rodSYnX|�|jj�}WdQRXt	j
d|�}|s�dStj|j
d��S)	N�objdumpz-pz-jz.dynamicr6r7s\sSONAME\s+([^\s]+)r)r<r=r@rArBrOrCr6rDr:rGr#rHrI)rPrSrL�dumprMrrrrR�s"	
	�freebsd�openbsd�	dragonflycCsg|jd�}g}y-x&|r@|jdt|j���qWWntk
rVYnX|pftjgS)N�.r)r�insertr�popr1r�maxsize)Zlibname�partsZnumsrrr�_num_version�s	$
r]cCs�tj|�}d||f}tj|�}y%tjd	dtjdtj�}Wntk
rmd}YnX|�|j	j
�}WdQRXtj||�}|s�tt
|��S|jdt�tj|d
�S)Nz:-l%s\.\S+ => \S*/(lib%s\.\S+)�/sbin/ldconfig�-rr6r7��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}y+tj|dtjdtjd|�}Wnt	k
r�dSYnX|�MxE|j
D]:}|j�}|jd�r�tj
|�j�d	}q�WWdQRX|s�dSxF|jd
�D]5}tjj|d|�}tjj|�r�|Sq�WdS)N�
/usr/bin/crler3r4�-64r6r7r8sDefault 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,�scCsBddl}|jd�dkr7tj�jd}ntj�jd}dddd	d
d	dd	dd
i}|j|d�}tjdtj|�|f�}y�t	j
ddgdt	jdt	jdt	jdddddi��>}tj
||jj��}|r!tj|jd��SWdQRXWntk
r=YnXdS)Nr�lrfz-32z-64z	x86_64-64zlibc6,x86-64zppc64-64zlibc6,64bitz
sparc64-64zs390x-64zia64-64zlibc6,IA-64Zlibc6z\s+(lib%s\.[^\s]+)\s+\(%sz/sbin/ldconfigz-p�stdinr7r6r8r4r3r5r)�structZcalcsizer#�uname�machine�getr9r:r;r@rArOrBrGr6rDrHrIrC)r+rrrtZmach_mapZabi_typeZregex�prMrrr�_findSoname_ldconfigs.			!
rwcCst|�ptt|��S)N)rwrRrN)r+rrrr, scCs&ddlm}tjdkrOt|j�t|jd��ttd��tjdkr"ttd��ttd��ttd��tj	d	kr�t|j
d
��t|j
d��t|j
d��t|j
d
��n6t|j
d��t|j
d��ttd��dS)Nr)�cdllrrr-r!r �bz2r.z
libm.dylibzlibcrypto.dylibzlibSystem.dylibzSystem.framework/Systemzlibm.sozlibcrypt.soZcrypt)Zctypesrxr#r+�printr�loadr,r�platformZLoadLibrary)rxrrr�test&s"
r}�__main__)rUrVrW)r#r<r@rr+rrr,r|Zctypes.macholib.dyldr/r0r:r>rNrRrjr]rorwr}�__name__rrrr�<module>s:+$
Back to Directory File Manager