3
\E @ s d Z ddlZddlmZ ddlmZ ddlT dddd gZejj d
ddd
gZ
ejj ddddgZdd Zd+ddZ
d,ddZd-ddZd.ddZd/ddZd0ddZd1d d!Zd2d"d#Zd3d$d%Zd4d&dZd5d'dZd(d) Zed*k re dS )6z
dyld emulation
N)framework_info)
dylib_info)* dyld_findframework_findr r z~/Library/Frameworksz/Library/Frameworksz/Network/Library/Frameworksz/System/Library/Frameworksz~/libz/usr/local/libz/libz/usr/libc C s. | d krt j} | j|}|d kr$g S |jdS )N:)osenvirongetsplit)envvarZrval r ,/usr/lib64/python3.6/ctypes/macholib/dyld.pydyld_env s
r c C s | d krt j} | jdS )NZDYLD_IMAGE_SUFFIX)r r r
)r r r r dyld_image_suffix' s r c C s
t | dS )NZDYLD_FRAMEWORK_PATH)r )r r r r dyld_framework_path, s r c C s
t | dS )NZDYLD_LIBRARY_PATH)r )r r r r dyld_library_path/ s r c C s
t | dS )NZDYLD_FALLBACK_FRAMEWORK_PATH)r )r r r r dyld_fallback_framework_path2 s r c C s
t | dS )NZDYLD_FALLBACK_LIBRARY_PATH)r )r r r r dyld_fallback_library_path5 s r c C s( t |}|dkr| S | |fdd}| S )z>For a potential path iterator, add DYLD_IMAGE_SUFFIX semanticsNc s sJ xD| D ]<}|j dr2|d td | d V n
|| V |V qW d S )Nz.dylib)endswithlen)iteratorsuffixpathr r r _inject= s
z)dyld_image_suffix_search.