U
    3ìdß
  ã                   @   sj   d dl mZ d dlZd dlZzd dlZd dlZdZW n ek
rL   dZY nX dd„ Zdd„ Z	d	d
„ Z
dS )é    )Úprint_functionNTFc                 C   s   t rt| ƒ nt| ƒ d S )N)Úhas_termiosÚposix_shellÚwindows_shell)Úchan© r   ú</tmp/pip-unpacked-wheel-d7dsrkjd/boto/mashups/interactive.pyÚinteractive_shell    s    
r	   c                 C   s  dd l }t tj¡}zØt tj 	¡ ¡ t 
tj 	¡ ¡ |  d¡ |  | tjgg g ¡\}}}| |krºz@|  d¡}t|ƒdkrŠtddd W qêtj |¡ tj ¡  W n tjk
r¸   Y nX tj|kr@tj d¡}t|ƒdkrÞqê|  |¡ q@W 5 t tjtj|¡ X d S )Nr   g        i   z
*** EOF
ú )Úendé   )ÚselectÚtermiosÚ	tcgetattrÚsysÚstdinÚ	tcsetattrÚ	TCSADRAINÚttyZsetrawÚfilenoZ	setcbreakÚ
settimeoutÚrecvÚlenÚprintÚstdoutÚwriteÚflushÚsocketÚtimeoutÚreadÚsend)r   r   ZoldttyÚrÚwÚeÚxr   r   r   r   '   s.    


r   c                 C   sp   dd l }tj d¡ dd„ }|j|| fd}| ¡  z"tj d¡}|sHqT|  |¡ q6W n t	k
rj   Y nX d S )Nr   zALine-buffered terminal emulation. Press F6 or ^Z to send EOF.

c                 S   sB   |   d¡}|s&tj d¡ tj ¡  q>tj |¡ tj ¡  q d S )Né   z
*** EOF ***

)r   r   r   r   r   )ÚsockÚdatar   r   r   ÚwriteallL   s    

zwindows_shell.<locals>.writeall)ÚtargetÚargsr   )
Ú	threadingr   r   r   ÚThreadÚstartr   r   r    ÚEOFError)r   r+   r(   ÚwriterÚdr   r   r   r   G   s    
r   )Ú
__future__r   r   r   r   r   r   ÚImportErrorr	   r   r   r   r   r   r   Ú<module>   s   
 