B
    18\W                 @   s   d dl Z d dlZd dlZd dlT d dlZe jjZeZe j	jZ
dadadadd ZedZdd	 Zd
d Zdd Zdd Zedkre  dS )    N)*FTc           
   C   sD  dt jd  } ytt jdd  d\}}W nF tjk
rr } z&tt|d  t|  t d W d d }~X Y nX x8|D ]0\}}|dkr| a|dkrd	a	|d
krzda
qzW trtdr|std t|  t d d}xV|D ]N}tj|rt|r2d}qtj|r&t|d  d}qt|rd}qW t | d S )Nz6usage: %s -i /interpreter -p -n file-or-directory ...
r      zi:pn
   z-iz-pTz-nF   /z'-i option or file-or-directory missing
z": will not process symbolic links
)sysargvgetopterrorerrstrexitencodenew_interpreterpreserve_timestampscreate_backup
startswithospathisdirrecursedownislinkfix)usageoptsargsmsgoabadarg r!   U/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Tools/scripts/pathfix.pymain&   s>    


  r#   z^[a-zA-Z0-9_]+\.py$c             C   s   t t| S )N)boolispythonprogmatch)namer!   r!   r"   ispythonJ   s    r(   c          
   C   s   t d| f  d}yt| }W n2 tk
rR } ztd| |f  dS d }~X Y nX |  g }xf|D ]^}|tjtjfkr|qftj	| |}tj
|rqftj|r|| qft|rft|rfd}qfW x|D ]}t|rd}qW |S )Nzrecursedown(%r)
r   z%s: cannot list directory: %r
r   )dbgr   listdirOSErrorr   sortcurdirpardirr   joinr   r   appendr(   r   r   )dirnamer   namesr   Zsubdirsr'   fullnamer!   r!   r"   r   M   s0    
   
 r   c          
   C   s  yt | d}W n2 tk
r@ } ztd| |f  dS d }~X Y nX | }t|}||krrt| d  |  d S tj	| \}}tj
|d| }yt |d}W n: tk
r } z|  td||f  dS d }~X Y nX t| d  || d	}	x"||	}
|
sP ||
  qW |  |  d }d }y.t| }|j}|j}t||t d
@  W n4 tk
r } ztd||f  W d d }~X Y nX tryt| | d  W n4 tk
r } ztd| |f  W d d }~X Y nX nDyt|  W n4 tk
r, } ztd| |f  W d d }~X Y nX yt||  W n4 tk
rr } ztd| |f  dS d }~X Y nX tr|r|ryt| ||f W n4 tk
r } ztd| |f  dS d }~X Y nX dS )Nrbz%s: cannot open: %r
r   z: no change
@wbz%s: cannot create: %r
z: updating
i    i  z%s: warning: chmod failed (%r)
~z %s: warning: backup failed (%r)
z"%s: warning: removing failed (%r)
z%s: rename failed (%r)
z#%s: reset of timestamp failed (%r)
r   )openIOErrorr   readlinefixlinerepcloser   r   splitr/   writereadstatst_mtimest_atimechmodST_MODEr+   r   renameremover   utime)filenamefr   linefixedheadtailZtempnamegZBUFSIZEbufmtimeZatimeZstatbufr!   r!   r"   r   c   sx    

 
"$"r   c             C   s&   |  ds| S d| kr| S dt d S )Ns   #!s   pythons   #!    
)r   r   )rK   r!   r!   r"   r;      s
    
r;   __main__)r   rer   rA   r	   stderrr?   r   r)   stdoutr<   r   r   r   r#   compiler%   r(   r   r   r;   __name__r!   r!   r!   r"   <module>   s$   #
F