o ­=?h]ã@sº ddlmZddlZddlZddlZddlmZmZddlmZmZmZgd¢Z dZ dZ dZ dZ dd „Zd d „Zd d „Zdd„Zdd„Zdd„Zdd„Zeefdd„Zeefdd„ZdS)é)ÚselectN)ÚcloseÚwaitpid)ÚsetrawÚ tcgetattrÚ tcsetattr)ÚopenptyÚforkÚspawnééc Cs> zt ¡WSttfyYnwtƒ\}}t|ƒ}||fS©N)ÚosrÚAttributeErrorÚOSErrorÚ_open_terminalÚ slave_open)Ú master_fdÚ slave_nameÚslave_fd©rú*/opt/alt/python310/lib64/python3.10/pty.pyrs ÿ rc CsJ zt ¡\}}Wn ttfyYtƒSwt |¡}t |¡||fSr )rrrrÚttynamerr)rrrrrrÚ master_open&sù  rc Csf dD]+}dD]&}d||}z t |tj¡}Wn ty!Yqw|d||fSqtdƒ‚)NZpqrstuvwxyzPQRSTZ0123456789abcdefz/dev/ptyz/dev/ttyzout of pty devices)rÚopenÚO_RDWRr)ÚxÚyZpty_nameÚfdrrrr6s  ÿúrcCsp t |tj¡}z ddlm}m}Wn ty|YSwz|||dƒ|||dƒW|Sty7Y|Sw)Nr)ÚioctlÚI_PUSHZptemZldterm)rrrZfcntlrr Ú ImportErrorr)Ztty_nameÚresultrr rrrrBs ÿ  þþrc Cs zt ¡\}}Wn ttfyYnw|tkr/z t ¡W||fSty.Y||fSw||fStƒ\}}t ¡}|tkrwt ¡t |¡t  |t ¡t  |t ¡t  |t ¡|t krdt |¡t  t t ¡tj¡}t |¡||fSt |¡||fSr )rÚforkptyrrÚCHILDÚsetsidrr rÚdup2Ú STDIN_FILENOÚ STDOUT_FILENOÚ STDERR_FILENOrrr)ÚpidrrrZtmp_fdrrrr Ts<ÿ  ýý        ýr cCs* |rt ||¡}||d…}|sdSdSr )rÚwrite)rÚdataÚnrrrÚ_writen|s    þr.cCs t |d¡S)Ni)rÚread)rrrrÚ_read‚s r0cCs– |tg}|rIt|ggƒ\}}}||vr0z||ƒ}Wn ty%d}Ynw|s*dSt t|¡t|vrE|tƒ}|s@| t¡nt||ƒ|sdSdS)Nó)r'rrrr+r(Úremover.)rÚ master_readÚ stdin_readZfdsZrfdsZ_wfdsZ_xfdsr,rrrÚ_copy†s&  ÿ    ër5c CsÎ t|ƒtdƒkr |f}t d|¡tƒ\}}|tkr&tj|dg|¢RŽz ttƒ}t tƒd}Wn t j y>d}Ynwzt |||ƒW|rPt tt j|ƒn |r[t tt j|ƒwwt|ƒt|dƒdS)NÚz pty.spawnrTFr )ÚtypeÚsysÚauditr r$rÚexeclprr'rÚttyÚerrorr5rZ TCSAFLUSHrr)Úargvr3r4r*rÚmodeZrestorerrrr £s0  ÿ€ÿÿr )rrr8r;rrrrrÚ__all__r'r(r)r$rrrrr r.r0r5r rrrrÚs*   (