
    <e                     L   d dl Z d dlZd dlmZ d dlmZ d dlZd dlZ ed          Z ed          Z	 ee	d           	  e
dd          Ze5  e                    ee	j        d	          Zddd           n# 1 swxY w Y    ej        d
e          d          Ze ej                     ej        d           fvr ej        d          [[[n# e$ r  ej        d          w xY w	 d dlZn# e$ r dZY nw xY w G d dej                  Zedk    r ej                     dS dS )    N)get_attribute)import_modulefcntltermios	TIOCGPGRP/dev/ttyrb    izBNeither the process group nor the session are attached to /dev/ttyzUnable to open /dev/ttyc                   4    e Zd Zd ZddZd Zd Zd Zd ZdS )	
IoctlTestsc                 T   t          j                    t          j        d          f}t          dd          5 }t                              |t          j        d          }t          j	        d|          d         }| 
                    ||           d d d            d S # 1 swxY w Y   d S )Nr   r   r	   r
   r   )osgetpgrpgetsidopenr   ioctlr   r   structunpackassertIn)selfidsttyrrpgrps        &/usr/lib/python3.11/test/test_ioctl.py
test_ioctlzIoctlTests.test_ioctl   s     z||RYq\\**d## 	&sC!2F;;AM#q))!,EMM%%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   ABB!$B!Nc                 H   t          j         d          }|j        }t          j                    t          j        d          f}d}|C|                    |g||z  z             |                     t          |          |z  |           n|                    |           t          dd          5 }t                              |t          j        |d          }d d d            n# 1 swxY w Y   |d         }|                     |d           |                     ||           d S )Nr   r   ir   r	   T)arrayitemsizer   r   r   extendassertEquallenappendr   r   r   r   r   r   )	r   nbytesbufintsizer   fillr   r   r   s	            r   _check_ioctl_mutate_lenz"IoctlTests._check_ioctl_mutate_len'   sD   k#,z||RYq\\*JJv7!23444SXX/8888JJt*d## 	?sC!2C>>A	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?AAeS!!!!!s   /(C##C'*C'c                 .    |                                   d S Nr)   r   s    r   test_ioctl_mutatezIoctlTests.test_ioctl_mutate9   s    $$&&&&&    c                 0    |                      d           d S )Ni   r,   r-   s    r   test_ioctl_mutate_1024z!IoctlTests.test_ioctl_mutate_1024<   s     	$$T*****r/   c                 0    |                      d           d S )Ni   r,   r-   s    r   test_ioctl_mutate_2048z!IoctlTests.test_ioctl_mutate_2048A   s    $$T*****r/   c                    t           st          j        d          t          j                    \  }}	 t          j        dk     rt          j        }t          j        dz  }n@t          j        }t          j        dt          j        dt          j                            \  }t          j        ddddd          }t          
                    |||          }t          
                    |||          }t          j        |           t          j        |           d S # t          j        |           t          j        |           w xY w)	Nzpty module requiredr   l    r   IHHHHP      )ptyunittestSkipTestopenptyr   
TIOCSWINSZr   r   packr   r   r   close)r   mfdsfdset_winsz_opcode_maybe_negset_winsz_opcode_pos	our_winsz	new_winszs          r   %test_ioctl_signed_unsigned_code_paramz0IoctlTests.test_ioctl_signed_unsigned_code_paramE   s    	;#$9:::;==S	!A%%-4-?*'.'9J'F$$'.'9$.4mCC);<</> />+* F2b155IC)=yIIIC)CYOOIHSMMMHSMMMMM HSMMMHSMMMMs   B<D *Er+   )	__name__
__module____qualname__r   r)   r.   r1   r3   rF    r/   r   r   r      ss        & & &" " " "$' ' '+ + +
+ + +    r/   r   __main__)r   r:   test.supportr   test.support.import_helperr   r   r   r   r   r   r   r   r   r   r   r   r   r   r;   OSErrorr9   ImportErrorTestCaser   rG   mainrJ   r/   r   <module>rR      s(     & & & & & & 4 4 4 4 4 4        g
-	
"
" g{ # # #
$z4
 
 C 
 8 8KKW.778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 FM#q!!!$EZRZ\\929Q<<000h !; < < 	<Q  7 7 7
(
5
6
667JJJJ   
CCC; ; ; ; ;" ; ; ;| zHMOOOOO s0    C A77A;>A;C$(C- -C76C7