3
_AfL                 @   sx   d dl mZ d dlZd dlZd dlZd dlZd dlZdadada	da
dd Zdd Zdd	 Zd
d Zdd Zdd ZdS )    )print_functionNFc             C   sV   t jd st jd rd S t| }|dks4|dkr8d S tj rJt| nt| d S )Nr       cat)osisatty_SelectPagerplatform_utilsZ	isWindows
_PipePager
_ForkPager)globalConfigpager r   7/home/qytech/356xLinux510-101server/.repo/repo/pager.pyRunPager   s    
r   c               C   s>   t r:tjj  tjj  t jj  t j  d a tt_t	t_d S )N)
pager_processsysstdoutflushstderrstdinclosewait
old_stdout
old_stderrr   r   r   r   TerminatePager,   s    


r   c             C   sJ   t d kstdtj| gtjtjtjda tjatja	t j
t_t j
t_d S )Nz'Only one active pager process at a time)r   r   r   )r   AssertionError
subprocessPopenPIPEr   r   r   r   r   r   )r   r   r   r   r
   :   s    
r
   c             C   s   yxt j \}}t j }|sNt j|d t j|d t j| t j| dad S t j|d t j| t j| t|  W n0 tk
r   td|  t	j
d t	jd Y nX d S )Nr      Tr   zfatal: cannot start pager '%s')file   )r   pipeforkdup2r   active_BecomePager	Exceptionprintr   r   exit)r   rwpidr   r   r   r   F   s"    



r   c             C   sV   y
t jd S  tk
r   Y nX | jd}|r2|S y
t jd S  tk
rP   Y nX dS )NZ	GIT_PAGERz
core.pagerZPAGERZless)r   environKeyError	GetString)r   r   r   r   r   r   a   s    


r   c             C   s`   t j dgg dg\}}}dtjd< ytj| | g W n& tk
rZ   tjddd| g Y nX d S )Nr   ZFRSXLESSz/bin/shshz-c)selectr   r.   execvpOSErrorexecv)r   Z_aZ_bZ_cr   r   r   r'   s   s    
r'   )
__future__r   r   r3   r   r   r	   r&   r   r   r   r   r   r
   r   r   r'   r   r   r   r   <module>   s   