Spade
Mini Shell
�
s�fc@s�ddlZddlZejdkrEd�Zd�Zd�Znejdkr`d�Znejdkr�ejd kr�dd
lmZ d�Zn�ejdkr�ddl
Z
ddlZddlZd�Z
ejd
kr�d�Zn d�Zejjd�s0ejjd�s0ejjd�rEd�Zd�Zq�ejd
krld�Zed�Zq�d�Zd�Znd�Zedkr�e�ndS(i����NtntcCs�d}tjj|�}|dkr(dS|t|�}tj|jdd�\}}t|d
�d}t|dd!�d }|dkr�d
}n|dkr�||SdS(s�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.
sMSC v.i����it
ii����iig$@iN(tsystversiontfindtlentsplittinttNone(tprefixtitstresttmajorVersiontminorVersion((s#/usr/lib64/python2.7/ctypes/util.pyt_get_build_version s cCswt�}|dkrdS|dkr.d}nd|d}ddl}|j�dddkro|d 7}n|d
S(s%Return the name of the VC runtime dllitmsvcrtsmsvcr%di
i����Nis_d.pydtds.dll(RRtimptget_suffixes(RtclibnameR((s#/usr/lib64/python2.7/ctypes/util.pytfind_msvcrt
s
cCs�|dkrt�Sx�tjdjtj�D]l}tjj||�}tjj|�r^|S|j�j d�ryq-n|d}tjj|�r-|Sq-WdS(NtctmtPATHs.dll(RR(RtostenvironRtpathseptpathtjointisfiletlowertendswithR(tnamet directorytfname((s#/usr/lib64/python2.7/ctypes/util.pytfind_library1s
tcecCs|S(N((R!((s#/usr/lib64/python2.7/ctypes/util.pyR$Gstposixtdarwin(t dyld_findcCs[d|d|d||fg}x3|D]+}yt|�SWq(tk
rRq(q(Xq(WdS(Nslib%s.dylibs%s.dylibs%s.framework/%s(t
_dyld_findt
ValueErrorR(R!tpossible((s#/usr/lib64/python2.7/ctypes/util.pyR$Ls
c
Cs�dtj|�}tj�\}}tj|�d|d|}z3tj|�}z|j�}Wd|j�}XWdytj|�Wn+t k
r�}|j
t
jkr��q�nXX|dkr�t d�ntj||�} | s�dS| jd�S(Ns[^\(\)\s]*lib%s\.[^\(\)\s]*srif
type gcc >/dev/null 2>&1; then CC=gcc; elif type cc >/dev/null
2>&1; then CC=cc;else exit 10; fi;$CC -Wl,-t -o s 2>&1 -li
sgcc or cc command not
foundi(tretescapettempfiletmkstempRtclosetpopentreadtunlinktOSErrorterrnotENOENTtsearchRtgroup(
R!texprtfdouttccouttcmdtfttracetrvtetres((s#/usr/lib64/python2.7/ctypes/util.pyt_findLib_gcc[s(
tsunos5cCsj|s
dSd|}tj|�}z|j�}Wd|j�Xtjd|�}|s]dS|jd�S(Ns#/usr/ccs/bin/dump
-Lpv 2>/dev/null
s\[.*\]\sSONAME\s+([^\s]+)i(RRR1R2R0R,R7R8(R=R<tdataRA((s#/usr/lib64/python2.7/ctypes/util.pyt_get_sonamews
cCs�|s
dSd|}tj|�}|j�}|j�}|dkrWtjj|�Stj|�}z|j�}Wd|j�Xtjd|�}|s�dS|j d�S(NsWif
! type objdump >/dev/null 2>&1; then exit 10; fi;objdump -p -j
.dynamic 2>/dev/null i
s\sSONAME\s+([^\s]+)i(
RRR1R2R0RtbasenameR,R7R8(R=R<tdumpR?RDRA((s#/usr/lib64/python2.7/ctypes/util.pyRE�s"tfreebsdtopenbsdt dragonflycCsf|jd�}g}y-x&|r@|jdt|j���qWWntk
rUnX|petjgS(Nt.i(RtinsertRtpopR*Rtmaxint(tlibnametpartstnums((s#/usr/lib64/python2.7/ctypes/util.pyt_num_version�s $
cCs�tj|�}d||f}tjd�}z|j�}Wd|j�Xtj||�}|sttt|��S|j dd��|dS(Ns:-l%s\.\S+
=> \S*/(lib%s\.\S+)s/sbin/ldconfig -r
2>/dev/nulltcmpcSstt|�t|��S(N(RSRR(txty((s#/usr/lib64/python2.7/ctypes/util.pyt<lambda>�si����(
R,R-RR1R2R0tfindallRERBtsort(R!tenameR9R=RDRA((s#/usr/lib64/python2.7/ctypes/util.pyR$�scCs�tjjd�sdS|r%d}nd}xKtj|�j�D]4}|j�}|jd�rA|j�d}qAqAW|s�dSxF|jd�D]5}tjj |d|�}tjj|�r�|Sq�WdS(Ns
/usr/bin/crles*env
LC_ALL=C /usr/bin/crle -64 2>/dev/nulls&env LC_ALL=C /usr/bin/crle
2>/dev/nullsDefault Library Path (ELF):it:slib%s.so(
RRtexistsRR1t readlineststript
startswithRR(R!tis64R<tlinetpathstdirtlibfile((s#/usr/lib64/python2.7/ctypes/util.pyt
_findLib_crle�s
cCstt||�pt|��S(N(RERdRB(R!R_((s#/usr/lib64/python2.7/ctypes/util.pyR$�sc Cs�ddl}|jd�dkr8tj�dd}ntj�dd}idd6dd 6dd
6dd6dd
6}|j|d�}dtj|�|f}tjd�}z|j�}Wd|j �Xtj
||�}|s�dS|jd�S(Ni����tlis-32s-64slibc6,x86-64s x86_64-64slibc6,64bitsppc64-64s
sparc64-64ss390x-64slibc6,IA-64sia64-64tlibc6s\s+(lib%s\.[^\s]+)\s+\(%ss/sbin/ldconfig
-p
2>/dev/nulli(
tstructtcalcsizeRtunametgetR,R-R1R2R0R7RR8( R!Rgtmachinetmach_maptabi_typeR9R=RDRA((s#/usr/lib64/python2.7/ctypes/util.pyt_findSoname_ldconfig�s(
cCst|�ptt|��S(N(RnRERB(R!((s#/usr/lib64/python2.7/ctypes/util.pyR$�scCs�ddlm}tjdkrC|jGH|jd�GHtd�GHntjdkr�td�GHtd�GHtd�GHtjd kr�|j d
�GH|j d�GH|j d�GH|j d
�GHq�|j d�GH|j d�GHtd�GHndS(Ni����(tcdllRRR&RRtbz2R's
libm.dylibslibcrypto.dylibslibSystem.dylibsSystem.framework/Systemslibm.soslibcrypt.sotcrypt(
tctypesRoRR!RtloadR$RtplatformtLoadLibrary(Ro((s#/usr/lib64/python2.7/ctypes/util.pyttest�s"t__main__(RRR!RRR$Rttctypes.macholib.dyldR(R)R,R.R5RBRER^RRRdtFalseRnRvt__name__(((s#/usr/lib64/python2.7/ctypes/util.pyt<module>s8 $