o ?Og]@s ddlmZddlZddlZddlZddlmZmZddlmZmZmZgdZ dZ dZ dZ dZ dd Zd d Zd d ZddZddZddZddZeefddZeefddZdS))selectN)closewaitpid)setraw tcgetattr tcsetattr)openptyforkspawnc Cs> ztWSttfyYnwt\}}t|}||fSN)osrAttributeErrorOSError_open_terminal slave_open) master_fd slave_nameslave_fdr*/opt/alt/python310/lib64/python3.10/pty.pyrs  rc CsJ zt\}}Wn ttfyYtSwt|}t|||fSr )rrrrttynamerr)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)ropenO_RDWRr)xyZpty_namefdrrrr6s  rcCsp t|tj}z ddlm}m}Wn ty|YSwz|||d|||dW|Sty7Y|Sw)Nr)ioctlI_PUSHZptemZldterm)rrrZfcntlrr ImportErrorr)Ztty_nameresultrr rrrrBs   rc Cs zt\}}Wn ttfyYnw|tkr/z tW||fSty.Y||fSw||fSt\}}t}|tkrwtt|t |t t |t t |t |t krdt|t tt tj}t|||fSt|||fSr )rforkptyrrCHILDsetsidrr rdup2 STDIN_FILENO STDOUT_FILENO STDERR_FILENOrrr)pidrrrZtmp_fdrrrr Ts<          r cCs* |rt||}||d}|sdSdSr )rwrite)rdatanrrr_writen|s    r.cCs t|dS)Ni)rread)rrrr_reads r0cCs |tg}|rIt|gg\}}}||vr0z||}Wn ty%d}Ynw|s*dStt|t|vrE|t}|s@|tnt|||sdSdS)N)r'rrrr+r(remover.)r master_read stdin_readZfdsZrfdsZ_wfdsZ_xfdsr,rrr_copys&      r5c Cs t|tdkr |f}td|t\}}|tkr&tj|dg|Rz tt}t td}Wn t j y>d}Ynwzt |||W|rPt tt j|n |r[t tt j|wwt|t|ddS)Nz pty.spawnrTFr )typesysauditr r$rexeclprr'rttyerrorr5rZ TCSAFLUSHrr)argvr3r4r*rmodeZrestorerrrr s0  r )rrr8r;rrrrr__all__r'r(r)r$rrrrr r.r0r5r rrrrs*   (