Hi Corinna,

On Mon, 20 Apr 2015 17:12:30 +0200
Corinna Vinschen <corinna-cyg...@cygwin.com> wrote:

> Ok.  Let's go with that.  Can you please rename handle2/master2 to
> handle_cyg/master_cyg and resend the patch to the cygwin-patches
> mailing list?

Please find a patch attached. ChangeLog is as follows.

2015-04-22  Takashi Yano  <takashi.y...@nifty.ne.jp>

        * fhandler.h (class fhandler_base): Add virtual function
        get_io_handle_cyg() to get handle from which OPOST-processed output is
        read on PTY master.
        (class fhandler_pty_slave): Add variable output_handle_cyg to store a
        handle to which OPOST-processed output is written. Add two functions,
        i.e., set_output_handle_cyg() and get_output_handle_cyg(), regarding
        variable output_handle_cyg. Now, output_handle is used only by native
        windows program. The data before OPOST-processing is written to
        output_handle and OPOST-processing is applied in the master-side. For a
        cygwin process, OPOST-processing is applied in the slave-side, and the
        data after OPOST-processing is written to output_handle_cyg.
        (class fhandler_pty_master): Add two variables, i.e., io_handle_cyg and
        to_master_cyg, to store handles of a pipe through which OPOST-processed
        output passes. Add pty_master_fwd_thread and function
        pty_master_fwd_thread() for a thread which applies OPOST-processing
        and forwards data from io_handle to to_master_cyg. Add function
        get_io_handle_cyg() regarding variable io_handle_cyg. Now, the pipe
        between io_handle and to_master are used only by native windows program
        for applying OPOST-processing in the master-side. For a cygwin process,
        the pipe between io_handle_cyg and to_master_cyg is used for passing
        through the data which is applied OPOST-processing in the slave-side.
        * fhandler_tty.cc (struct pipe_reply): Add member to_master_cyg.
        (fhandler_pty_master::process_slave_output): Read slave output from
        io_handle_cyg rather than io_handle.
        (fhandler_pty_slave::fhandler_pty_salve): Initialize output_handle_cyg.
        (fhandler_pty_slave::open): Set output_handle_cyg by duplicating handle
        to_master_cyg on PTY master.
        (fhandler_pty_slave::close): Close handle output_handle_cyg.
        (fhandler_pty_slave::write): Write data to output_handle_cyg rather
        than output_handle.
        (fhandler_pty_slave::fch_close_handles): Close handle output_handle_cyg.
        (fhandler_pty_master::fhandler_pty_master): Initialize io_handle_cyg,
        to_master_cyg and master_fwd_thread.
        (fhandler_pty_master::cleanup): Clean up to_master_cyg as well.
        (fhandler_pty_master::close): Print to_master_cyg as well in debug
        message. Terminate master forwarding thread. Close handles
        to_master_cyg and io_handle_cyg.
        (fhandler_pty_master::ioctl): Use io_handle_cyg rather than to_master.
        (fhandler_pty_master::pty_master_thread): Add code for duplicating
        handle to_master_cyg.
        (fhandler_pty_master::pty_master_fwd_thread): New function for a thread
        to forward OPOST-processed data from io_handle to to_master_cyg.  This
        thread applies OPOST-processing to the output of native windows program.
        (::pty_master_fwd_thread): Ditto.
        (fhandler_pty_master::setup): Create a new pipe to pass thruegh OPOST-
        processed output. Create new thread to forward data from io_handle to
        to_master_cyg. Set handle to_master_cyg to tty. Print io_handle_cyg as
        well in debug message. Close handles io_handle_cyg and to_master_cyg in
        case of error.
        (fhandler_pty_master::fixup_after_fork): Set handle to_master_cyg to
        tty. Copy handle to_master_cyg from arch->to_master_cyg.
        (fhandler_pty_master::fixup_after_exec): Clean up to_master_cyg.
        * select.cc: Check handle returned by get_io_handle_cyg() rather than
        get_handle().
        * tty.h (class tty): Add variable _to_master_cyg to store a handle to
        which OPOST-processed data is written. Add two functions,
        to_master_cyg() and set_to_master_cyg(), regarding _to_master_cyg.


-- 
Takashi Yano <takashi.y...@nifty.ne.jp>

Attachment: cygwin.patch.20150422-2
Description: Binary data

Reply via email to