
    l:i                         d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
ddlmZmZ d Zd Zd Zd Zy)	    N)partial   )logsconstc                    t        j                  |d      }	 | j                  |       |S # t        $ r t        j
                  t        j                  z
  }| j                  dt        j                  |       | j                  |       | j                  dt        j                  z         | j                  |       Y |S w xY w)Ni   r       )	osreadwrite
ValueErrorr   LOG_SIZE_IN_BYTESLOG_SIZE_TO_CLEANmoveseek)ffddatapositions       W/var/www/html/bot/venv/lib/python3.12/site-packages/thefuck/entrypoints/shell_logger.py_readr      s    772tD	 K  **U-D-DD	q%))84	x	%1112	xKs   + BB>=B>c                     t        j                   dg d      }t        j                  t        j                  t
        j                  |d       t        j                  | t
        j                  |       y )Nh)r   r   r   r   T)arrayfcntlioctlptySTDOUT_FILENOtermios
TIOCGWINSZ
TIOCSWINSZ)	master_fdbufs     r   _set_pty_sizer#      sF    
++c<
(C	KK!!7#5#5sDA	KK	7--s3    c                    t        j                         \  }|t         j                  k(  rt        j                  | |        	 t        j                  t         j                        }t        j                  t         j                         d}t               t        j                  t        j                  fd       	 t        j                  |t         j                         t        j$                         t        j&                  |d      d   S # t
        j                  $ r d}Y w xY w# t        $ r8 |r3t        j                   t         j                  t
        j"                         Y w xY w)z^Create a spawned process.

    Modified version of pty.spawn with terminal size support.

    TFc                      t              S )N)r#   )_r!   s    r   <lambda>z_spawn.<locals>.<lambda>4   s    mI.F r$   r      )r   forkCHILDr	   execlptty	tcgetattrSTDIN_FILENOsetrawerrorr#   signalSIGWINCH_copyr   OSError	tcsetattr	TCSAFLUSHclosewaitpid)shellmaster_readpidmoderestorer!   s        @r   _spawnr?   !   s    XXZNC
cii
		%}}S--.

3##$ )
MM&//#FGA		)[#))4
 HHY::c1a   99   AMM#**CMM4@As%   AD >%D, D)(D),>E-,E-c                 t   t         j                  j                  d      s*t        j                  d       t        j                  d       t        j                  | t         j                  t         j                  z  t         j                  z        }t        j                  |dt        j                  z         t        j                  |t        j                  t        j                  t        j                         }t#        t         j                  d   t%        t&        |            }t        j                  |       y)z\Logs shell output to the `output`.

    Works like unix script command with `-f` flag.

    SHELLz+Shell logger doesn't support your platform.r)   r   N)r	   environgetr   warnsysexitopenO_CREATO_TRUNCO_RDWRr   r   r   mmap
MAP_SHARED
PROT_WRITEr?   r   r   )outputr   bufferreturn_codes       r   shell_loggerrQ   @   s     ::>>'"		?@	bjj0299<	=BHHR52223YYr522DOOT__UFG,geV.DEKHH[r$   )r   r   	functoolsr   rK   r	   r   r2   rE   r   r-    r   r   r   r#   r?   rQ    r$   r   <module>rU      s:        	 
  
  
 
4!>r$   