
    ,hh                         S SK J r   S SKrS SKrS SKrS SKJrJr  S SKJrJrJr  / SQr	S r
SrSrS rS rS	 rS
 rS rS rS r\\4S jr\\4S jrg)    )selectN)closewaitpid)setraw	tcgetattr	tcsetattr)openptyforkspawn      c                       [         R                  " 5       $ ! [        [        4 a     Of = f[	        5       u  p[        U5      nX4$ N)osr	   AttributeErrorOSError_open_terminal
slave_open)	master_fd
slave_nameslave_fds      ,/opt/python-3.13.8/usr/lib/python3.13/pty.pyr	   r	      sH    zz|G$ *,I*%Hs    **c                      SS K n U R                  S[        SS9   [        R                  " 5       u  p[        R
                  " U5      n[        R                  " U5        X4$ ! [        [        4 a     [        5       $ f = f)Nr   Use pty.openpty() instead.r   
stacklevel)
warningswarnDeprecationWarningr   r	   ttynamer   r   r   r   )r   r   r   r   s       r   master_openr!   &   sw    
 MM.0BqMQ% jjl	 ZZ)

$$ G$  s   A! !A=<A=c                      S HF  n S H=  nSU -   U-   n [         R                  " U[         R                  5      nUSU -   U-   4s  s  $    MH     [        S5      e! [         a     M]  f = f)NpqrstuvwxyzPQRST0123456789abcdefz/dev/ptyz/dev/ttyzout of pty devices)r   openO_RDWRr   )xypty_namefds       r   r   r   9   su    #A!A~)HWWXryy1 
Q*++ $   &
''  s   %A
A&%A&c                     SS K nUR                  S[        SS9  [        R                  " U [        R
                  5      n SSKJnJn   U" X$S5        U" X$S5        U$ ! [         a    Us $ f = f! [         a     U$ f = f)Nr   r   r   r   )ioctlI_PUSHptemldterm)r   r   r   r   r%   r&   fcntlr,   r-   ImportErrorr   )tty_namer   resultr,   r-   s        r   r   r   E   s     MM.0BqMQWWXryy)F'ff%fh' M  
  Ms$    A 	A/ A,+A,/
A=<A=c                      [         R                  " 5       u  pU [        :X  a   [         R                  " 5         X4$ X4$ ! [         a     X4$ f = f! [
        [        4 a     Of = f[        5       u  p#[         R                  " 5       n U [        :X  a/  [         R                  " U5        [         R                  " U5        X4$ [         R                  " U5        X4$ r   )
r   forkptyCHILDsetsidr   r   r	   r
   r   	login_tty)pidr*   r   r   s       r   r
   r
   Z   s    **, %<		 wsw  w G$  ")I
'')C
e|

X
 > 	 >s    A ? 
AAA$#A$c                 0    [         R                  " U S5      $ )Ni   )r   read)r*   s    r   _readr<   v   s    772t    c                    [         R                  " U 5      (       a:  [         R                  " U S5         [        XUS9  [         R                  " U S5        g SnU [        :g  nU [
        :g  nSnSn / n/ n	U(       a$  [        U5      U:  a  UR                  [        5        U(       a   [        U5      U:  a  UR                  U 5        U(       a$  [        U5      S:  a  U	R                  [
        5        [        U5      S:  a  U	R                  U 5        [        X/ 5      u  pn
[
        U	;   a    [         R                  " [
        U5      nX{S  nX;   a   U" U 5      nU(       d  g X|-  nX	;   a  [         R                  " X5      nXkS  nU(       a$  [        U;   a  U" [        5      nU(       d  SnOXl-  nGMA  ! [         R                  " U S5        f = f! [         a    Sn Nf = f! [         a    Sn Nf = f)NF)master_read
stdin_readTi   r=   r   )r   get_blockingset_blocking_copySTDIN_FILENOSTDOUT_FILENOlenappendr   writer   )r   r?   r@   high_waterlevelstdin_availstdout_availi_bufo_bufrfdswfds_xfdsndatas                r   rC   rC   z   s   
 
y!! 		5)	-)L OOIt,O|+K-LEE
3u:7KK%CJ8KK	"CJNKK&u:>KK	""4r2ED %HH]E2b	 "9- ME*A"IE<4/l+D#U  OOIt,2  %$%  s/   
F0 *G G 0G	GGG-,G-c                 ,   [        U [        5      (       a  U 4n [        R                  " SU 5        [	        5       u  p4U[
        :X  a  [        R                  " U S   /U Q76    [        [        5      n[        [        5        Sn [        XAU5        U(       a  [        [        [        R                  W5        [!        U5        [#        US5      S   $ ! [        R                   a    Sn Nef = f! U(       a   [        [        [        R                  W5        f f = f)Nz	pty.spawnr   TFr   )
isinstancestrsysauditr
   r6   r   execlpr   rD   r   ttyerrorrC   r   	TCSAFLUSHr   r   )argvr?   r@   r9   r   moderestores          r   r   r      s    $wIIk4 VNC
e|
		$q'!D!&|9ij1lCMM48	)3?1 99  lCMM48 s   ! C C* C'&C'*)D)r   r   rV   rY   r   r   r   r   r   __all__rD   rE   STDERR_FILENOr6   r	   r!   r   r   r
   r<   rC   r    r=   r   <module>rb      sn     	 
 
  , ,
&	
&
(*8 "'5 ?B "e r=   