
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a£  ã                   @   s   d Z ddlZddlmZ ddlmZ ddlT zddlmZ W n e	k
rX   dd„ ZY nX d	d
ddgZ
ej d¡dddgZej d¡dddgZdd„ Zd.dd„Zd/dd„Zd0dd„Zd1dd„Zd2dd „Zd3d!d"„Zd4d#d$„Zd5d%d&„Zd6d'd(„Zd7d)d	„Zd8d*d
„Zd+d,„ Zed-k�reƒ  dS )9z
dyld emulation
é    N)Úframework_info)Ú
dylib_info)Ú*)Ú _dyld_shared_cache_contains_pathc                  G   s   t ‚d S )N)ÚNotImplementedError)Úargs© r   ú9/opt/alt/python38/lib64/python3.8/ctypes/macholib/dyld.pyr      s    r   Ú	dyld_findÚframework_findr   r   z~/Library/Frameworksz/Library/Frameworksz/Network/Library/Frameworksz/System/Library/Frameworksz~/libz/usr/local/libz/libz/usr/libc                 C   s.   | d krt j} |  |¡}|d kr$g S | d¡S )Nú:)ÚosÚenvironÚgetÚsplit)ÚenvÚvarZrvalr   r   r	   Údyld_env$   s    
r   c                 C   s   | d krt j} |  d¡S )NZDYLD_IMAGE_SUFFIX)r   r   r   ©r   r   r   r	   Údyld_image_suffix,   s    r   c                 C   s
   t | dƒS )NZDYLD_FRAMEWORK_PATH©r   r   r   r   r	   Údyld_framework_path1   s    r   c                 C   s
   t | dƒS )NZDYLD_LIBRARY_PATHr   r   r   r   r	   Údyld_library_path4   s    r   c                 C   s
   t | dƒS )NZDYLD_FALLBACK_FRAMEWORK_PATHr   r   r   r   r	   Údyld_fallback_framework_path7   s    r   c                 C   s
   t | dƒS )NZDYLD_FALLBACK_LIBRARY_PATHr   r   r   r   r	   Údyld_fallback_library_path:   s    r   c                 C   s(   t |ƒ}|dkr| S | |fdd„}|ƒ S )z>For a potential path iterator, add DYLD_IMAGE_SUFFIX semanticsNc                 s   sF   | D ]<}|  d¡r0|d tdƒ … | d V  n
|| V  |V  qd S )Nz.dylib)ÚendswithÚlen)ÚiteratorÚsuffixÚpathr   r   r	   Ú_injectB   s
    

z)dyld_image_suffix_search.<locals>._inject)r   )r   r   r   r    r   r   r	   Údyld_image_suffix_search=   s
    r!   c                 c   s\   t | ƒ}|d k	r2t|ƒD ]}tj ||d ¡V  qt|ƒD ]}tj |tj | ¡¡V  q:d S ©NÚname)r   r   r   r   Újoinr   Úbasename)r#   r   Ú	frameworkr   r   r   r	   Údyld_override_searchK   s    r'   c                 c   s2   |   d¡r.|d k	r.tj || tdƒd … ¡V  d S )Nz@executable_path/)Ú
startswithr   r   r$   r   )r#   Úexecutable_pathr   r   r	   Údyld_executable_path_search\   s    r*   c                 c   sº   | V  t | ƒ}|d k	r<t|ƒ}|D ]}tj ||d ¡V  q"t|ƒ}|D ]}tj |tj | ¡¡V  qH|d k	r�|s�tD ]}tj ||d ¡V  qv|s¶tD ]}tj |tj | ¡¡V  q˜d S r"   )	r   r   r   r   r$   r   r%   ÚDEFAULT_FRAMEWORK_FALLBACKÚDEFAULT_LIBRARY_FALLBACK)r#   r   r&   Zfallback_framework_pathr   Zfallback_library_pathr   r   r	   Údyld_default_searchc   s    r-   c              	   C   s|   t tt| |ƒt| |ƒt| |ƒƒ|ƒD ]D}tj |¡r<|  S zt|ƒrP|W   S W q$ t	k
rf   Y q$X q$t
d| f ƒ‚dS )z:
    Find a library or framework using dyld semantics
    zdylib %s could not be foundN)r!   Úchainr'   r*   r-   r   r   Úisfiler   r   Ú
ValueError)r#   r)   r   r   r   r   r	   r
   y   s    ýüc              
   C   sº   d}zt | ||d�W S  tk
r: } z|}W 5 d}~X Y nX |  d¡}|dkr^t| ƒ}| d7 } tj | tj | d|… ¡¡} z2zt | ||d�W W ¢S  tk
rª   |‚Y nX W 5 d}X dS )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éÿÿÿÿ)r
   r0   Úrfindr   r   r   r$   r%   )Úfnr)   r   ÚerrorÚeZ
fmwk_indexr   r   r	   r   �   s    	
c                  C   s(   i } t dƒdkst‚t dƒdks$t‚d S )NzlibSystem.dylibz/usr/lib/libSystem.dylibzSystem.framework/Systemz2/System/Library/Frameworks/System.framework/System)r
   ÚAssertionErrorr   r   r   r	   Útest_dyld_find§   s    r7   Ú__main__)N)N)N)N)N)N)N)N)N)NN)NN)Ú__doc__r   Zctypes.macholib.frameworkr   Zctypes.macholib.dylibr   Ú	itertoolsZ_ctypesr   ÚImportErrorÚ__all__r   Ú
expanduserr+   r,   r   r   r   r   r   r   r!   r'   r*   r-   r
   r   r7   Ú__name__r   r   r   r	   Ú<module>   sL     þ
ü
ü











