U e5dÇã@s–ddlmZddlZddlZddlZdddgZdZdZdZdZdd„Z d d „Z d d „Z d d„Z dd„Z dd„Zdd„Zeefdd„Zeefdd„ZdS)é)ÚselectNÚopenptyÚforkÚspawnééc Cs>z t ¡WSttfk r"YnXtƒ\}}t|ƒ}||fS©N)ÚosrÚAttributeErrorÚOSErrorÚ_open_terminalÚ slave_open)Ú master_fdÚ slave_nameÚslave_fd©rú/usr/lib64/python3.8/pty.pyrs  c CsLzt ¡\}}Wnttfk r(YnXt |¡}t |¡||fStƒSr)r rr r ÚttynameÚcloser )rrrrrrÚ master_open"s  rc CsndD]\}dD]R}d||}zt |tj¡}Wntk rFYq YnX|d||fSqtdƒ‚dS)NZpqrstuvwxyzPQRSTZ0123456789abcdefz/dev/ptyz/dev/ttyzout of pty devices)r ÚopenÚO_RDWRr )ÚxÚyZpty_nameÚfdrrrr 2s  r cCsrt |tj¡}zddlm}m}Wntk r:|YSXz|||dƒ|||dƒWntk rlYnX|S)Nr)ÚioctlÚI_PUSHZptemZldterm)r rrZfcntlrrÚ ImportErrorr )Ztty_nameÚresultrrrrrr >s  r c Csðzt ¡\}}Wnttfk r(Yn4X|tkrTz t ¡Wntk rRYnX||fStƒ\}}t ¡}|tkrÞt ¡t |¡t  |t ¡t  |t ¡t  |t ¡|t kr¾t |¡t  t t ¡tj¡}t |¡n t |¡||fSr)r Úforkptyr r ÚCHILDÚsetsidrrrÚdup2Ú STDIN_FILENOÚ STDOUT_FILENOÚ STDERR_FILENOrrr)ÚpidrrrZtmp_fdrrrrPs0         cCs"|rt ||¡}||d…}qdSr)r Úwrite)rÚdataÚnrrrÚ_writenxs r*cCs t |d¡S)Ni)r Úread)rrrrÚ_read~sr,cCsv|tg}t|ggƒ\}}}||krF||ƒ}|s:| |¡n t t|¡t|kr|tƒ}|sf| t¡qt||ƒqdSr)r#rÚremover r'r$r*)rÚ master_readÚ stdin_readZfdsZrfdsZwfdsZxfdsr(rrrÚ_copy‚s   r0cCsÔt|ƒtdƒkr|f}t d|¡tƒ\}}|tkrHtj|df|žŽzt t ¡}t  t ¡d}Wntj k r~d}YnXzt |||ƒWn(t k r¸|r´t t tj|¡YnXt |¡t |d¡dS)NÚz pty.spawnrr)ÚtypeÚsysÚauditrr r ÚexeclpÚttyZ tcgetattrr#ZsetrawÚerrorr0r Z tcsetattrZ TCSAFLUSHrÚwaitpid)Úargvr.r/r&rÚmodeZrestorerrrr—s&      )rr r3r6Ú__all__r#r$r%r rrr r rr*r,r0rrrrrÚ s"    (