grthtrhthjhtyjytjytkergtrhtrjytjerhrfh3 \›ã@sŽddlmZddlZddlZdddgZdZdZdZdZdd„Zd d „Z d d „Z d d„Z dd„Z dd„Z dd„Zeefdd„Zeefdd„ZdS)é)ÚselectNÚopenptyÚforkÚspawnééc Cs<ytjƒSttfk r YnXtƒ\}}t|ƒ}||fS)N)ÚosrÚAttributeErrorÚOSErrorÚ_open_terminalÚ slave_open)Ú master_fdÚ slave_nameÚslave_fd©rú/usr/lib64/python3.6/pty.pyrs c CsLytjƒ\}}Wnttfk r(YnXtj|ƒ}tj|ƒ||fStƒS)N)rrr r ÚttynameÚcloser )r rrrrrÚ master_open!s  rc Cslx^dD]V}xPdD]H}d||}ytj|tjƒ}Wntk rHwYnX|d||fSWqWtdƒ‚dS)NZpqrstuvwxyzPQRSTZ0123456789abcdefz/dev/ptyz/dev/ttyzout of pty devices)rÚopenÚO_RDWRr )ÚxÚyZpty_nameÚfdrrrr 1s   r cCsntj|tjƒ}yddlm}m}Wntk r6|SXy|||dƒ|||dƒWntk rhYnX|S)Nr)ÚioctlÚI_PUSHZptemZldterm)rrrZfcntlrrÚ ImportErrorr )Ztty_nameÚresultrrrrrr =s r cCsðytjƒ\}}Wnttfk r(Yn4X|tkrTy tjƒWntk rRYnX||fStƒ\}}tjƒ}|tkrÞtjƒtj|ƒtj |t ƒtj |t ƒtj |t ƒ|t kr¾tj|ƒtj tjt ƒtjƒ}tj|ƒn tj|ƒ||fS)N)rÚforkptyr r ÚCHILDÚsetsidrrrÚdup2Ú STDIN_FILENOÚ STDOUT_FILENOÚ STDERR_FILENOrrr)Úpidrr rZtmp_fdrrrrOs0         cCs&x |r tj||ƒ}||d…}qWdS)N)rÚwrite)rÚdataÚnrrrÚ_writenws r)cCs tj|dƒS)Ni)rÚread)rrrrÚ_read}sr+cCsz|tg}xlt|ggƒ\}}}||krH||ƒ}|s<|j|ƒn tjt|ƒt|kr |tƒ}|sh|jtƒq t||ƒq WdS)N)r"rÚremoverr&r#r))r Ú master_readÚ stdin_readZfdsZrfdsZwfdsZxfdsr'rrrÚ_copy�s   r/cCsÈt|ƒtdƒkr|f}tƒ\}}|tkr s    (