ž ¦ÿf¿ c @ sÑ d Z d d l m Z d d l Z d d l Z d d d g Z d Z d Z d Z d Z d d „ Z d d „ Z d d „ Z d d „ Z d d „ Z d d „ Z d d „ Z e e d d „ Z e e d d „ Z d S( u Pseudo terminal utilities.i ( u selectNu openptyu forku spawni i c C sN y t j ƒ SWn t t f k r( Yn Xt ƒ \ } } t | ƒ } | | f S( ud openpty() -> (master_fd, slave_fd) Open a pty master/slave pair, using os.openpty() if possible.( u osu openptyu AttributeErroru OSErroru _open_terminalu slave_open( u master_fdu slave_nameu slave_fd( ( u( /opt/alt/python33/lib64/python3.3/pty.pyu openpty s c C s^ y t j ƒ \ } } Wn t t f k r0 Yn' Xt j | ƒ } t j | ƒ | | f St ƒ S( u› master_open() -> (master_fd, slave_name) Open a pty master and return the fd, and the filename of the slave end. Deprecated, use openpty() instead.( u osu openptyu AttributeErroru OSErroru ttynameu closeu _open_terminal( u master_fdu slave_fdu slave_name( ( u( /opt/alt/python33/lib64/python3.3/pty.pyu master_open! s u master_openc # C s y d d l } Wn t k r$ Ynd Xy" | j t j d d ƒ \ } } Wn4 t k r} } z t j | ƒ ‚ WYd d } ~ Xn X| | f Sxp d D]h } x_ d D]W } d | | } y t j | t j ƒ } Wn t j k rã wœ Yn X| d | | f SWq Wt j d ƒ ‚ d S( ul Open pty master and return (master_fd, tty_name). SGI and generic BSD version, for when openpty() fails.i Ni¶ u pqrstuvwxyzPQRSTu 0123456789abcdefu /dev/ptyu /dev/ttyu out of pty devices( u sgiu ImportErroru _getptyu osu O_RDWRu IOErroru erroru open( u sgiu tty_nameu master_fdu msgu xu yu pty_nameu fd( ( u( /opt/alt/python33/lib64/python3.3/pty.pyu _open_terminal1 s$ "" u _open_terminalc C s… t j | t j ƒ } y d d l m } m } Wn t k rG | SYn Xy$ | | | d ƒ | | | d ƒ Wn t k r€ Yn X| S( u© slave_open(tty_name) -> slave_fd Open the pty slave and acquire the controlling terminal, returning opened filedescriptor. Deprecated, use openpty() instead.i ( u ioctlu I_PUSHu ptemu ldterm( u osu openu O_RDWRu fcntlu ioctlu I_PUSHu ImportErroru IOError( u tty_nameu resultu ioctlu I_PUSH( ( u( /opt/alt/python33/lib64/python3.3/pty.pyu slave_openH s u slave_openc C s< y t j ƒ \ } } Wn t t f k r0 Yn= X| t k rc y t j ƒ Wqc t k r_ Yqc Xn | | f St ƒ \ } } t j ƒ } | t k r%t j ƒ t j | ƒ t j | t ƒ t j | t ƒ t j | t ƒ | t k r÷ t j | ƒ n t j t j t ƒ t j ƒ } t j | ƒ n t j | ƒ | | f S( ud fork() -> (pid, master_fd) Fork and make the child a session leader with a controlling terminal.( u osu forkptyu AttributeErroru OSErroru CHILDu setsidu openptyu forku closeu dup2u STDIN_FILENOu STDOUT_FILENOu STDERR_FILENOu openu ttynameu O_RDWR( u pidu fdu master_fdu slave_fdu tmp_fd( ( u( /opt/alt/python33/lib64/python3.3/pty.pyu forkZ s0 c C s3 x, | r. t j | | ƒ } | | d … } q Wd S( u# Write all the data to a descriptor.N( u osu write( u fdu datau n( ( u( /opt/alt/python33/lib64/python3.3/pty.pyu _writen‚ s u _writenc C s t j | d ƒ S( u Default read function.i ( u osu read( u fd( ( u( /opt/alt/python33/lib64/python3.3/pty.pyu _readˆ s u _readc C s° | t g } x t | g g ƒ \ } } } | | k rk | | ƒ } | sX | j | ƒ qk t j t | ƒ n t | k r | t ƒ } | s™ | j t ƒ q© t | | ƒ q q d S( u Parent copy loop. Copies pty master -> standard output (master_read) standard input -> pty master (stdin_read)N( u STDIN_FILENOu selectu removeu osu writeu STDOUT_FILENOu _writen( u master_fdu master_readu stdin_readu fdsu rfdsu wfdsu xfdsu data( ( u( /opt/alt/python33/lib64/python3.3/pty.pyu _copyŒ s u _copyc C sù t | ƒ t d ƒ k r$ | f } n t ƒ \ } } | t k rV t j | d | Œ n y&