Your IP : 3.17.186.200


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

3


 \E�@s�dZddlZddlmZddlmZddlTdddd	gZejj	d
�ddd
gZ
ejj	d�dddgZdd�Zd+dd�Z
d,dd�Zd-dd�Zd.dd�Zd/dd�Zd0dd�Zd1d d!�Zd2d"d#�Zd3d$d%�Zd4d&d�Zd5d'd�Zd(d)�Zed*k�r�e�dS)6z
dyld emulation
�N)�framework_info)�
dylib_info)�*�	dyld_find�framework_findrrz~/Library/Frameworksz/Library/Frameworksz/Network/Library/Frameworksz/System/Library/Frameworksz~/libz/usr/local/libz/libz/usr/libcCs.|dkrtj}|j|�}|dkr$gS|jd�S)N�:)�os�environ�get�split)�env�varZrval�r�/usr/lib64/python3.6/dyld.py�dyld_envs
rcCs|dkrtj}|jd�S)NZDYLD_IMAGE_SUFFIX)rr	r
)rrrr�dyld_image_suffix'srcCs
t|d�S)NZDYLD_FRAMEWORK_PATH)r)rrrr�dyld_framework_path,srcCs
t|d�S)NZDYLD_LIBRARY_PATH)r)rrrr�dyld_library_path/srcCs
t|d�S)NZDYLD_FALLBACK_FRAMEWORK_PATH)r)rrrr�dyld_fallback_framework_path2srcCs
t|d�S)NZDYLD_FALLBACK_LIBRARY_PATH)r)rrrr�dyld_fallback_library_path5srcCs(t|�}|dkr|S||fdd�}|�S)z>For a potential path iterator, add DYLD_IMAGE_SUFFIX semanticsNcssJxD|D]<}|jd�r2|dtd��|dVn
||V|VqWdS)Nz.dylib)�endswith�len)�iterator�suffix�pathrrr�_inject=s



z)dyld_image_suffix_search.<locals>._inject)r)rrrrrrr�dyld_image_suffix_search8s
rccsdt|�}|dk	r6x$t|�D]}tjj||d�VqWx(t|�D]}tjj|tjj|��Vq@WdS)N�name)rrrr�joinr�basename)rr�	frameworkrrrr�dyld_override_searchFsr!ccs2|jd�r.|dk	r.tjj||td�d��VdS)Nz@executable_path/)�
startswithrrrr)r�executable_pathrrr�dyld_executable_path_searchWsr$ccs�|Vt|�}|dk	r@t|�}x |D]}tjj||d�Vq$Wt|�}x$|D]}tjj|tjj|��VqNW|dk	r�|r�x tD]}tjj||d�Vq�W|s�x$tD]}tjj|tjj|��Vq�WdS)Nr)	rrrrrrr�DEFAULT_FRAMEWORK_FALLBACK�DEFAULT_LIBRARY_FALLBACK)rrr Zfallback_framework_pathrZfallback_library_pathrrr�dyld_default_search^s



r'cCsPx<ttt||�t||�t||��|�D]}tjj|�r&|Sq&Wtd|f��dS)z:
    Find a library or framework using dyld semantics
    zdylib %s could not be foundN)	r�chainr!r$r'rr�isfile�
ValueError)rr#rrrrrrts

cCs�d}yt|||d�Stk
r8}z
|}WYdd}~XnX|jd�}|dkr\t|�}|d7}tjj|tjj|d|���}yt|||d�Stk
r�|�YnXdS)z�
    Find a framework using dyld semantics in a very loose manner.

    Will take input such as:
        Python
        Python.framework
        Python.framework/Versions/Current
    N)r#rz
.framework����)rr*�rfindrrrrr)�fnr#r�error�eZ
fmwk_indexrrrr�s	
cCs(i}td�dkst�td�dks$t�dS)NzlibSystem.dylibz/usr/lib/libSystem.dylibzSystem.framework/Systemz2/System/Library/Frameworks/System.framework/System)r�AssertionError)rrrr�test_dyld_find�sr2�__main__)N)N)N)N)N)N)N)N)N)NN)NN)�__doc__rZctypes.macholib.frameworkrZctypes.macholib.dylibr�	itertools�__all__r�
expanduserr%r&rrrrrrrr!r$r'rrr2�__name__rrrr�<module>s: