Cygwin: pty: add pseudo console support.

- Support pseudo console in PTY. Pseudo console is a new feature
  in Windows 10 1809, which provides console APIs on virtual
  terminal. With this patch, native console applications can work
  in PTYs such as mintty, ssh, gnu screen or tmux.
This commit is contained in:
Takashi Yano
2019-08-28 03:04:02 +09:00
committed by Corinna Vinschen
parent 398476acd2
commit 169d65a577
12 changed files with 2016 additions and 55 deletions

View File

@@ -28,6 +28,8 @@ details. */
#define MIN_CTRL_C_SLOP 50
#endif
typedef void *HPCON;
#include <devices.h>
class tty_min
{
@@ -88,14 +90,28 @@ public:
private:
HANDLE _from_master;
HANDLE _from_master_cyg;
HANDLE _to_master;
HANDLE _to_master_cyg;
HPCON hPseudoConsole;
HANDLE hHelperProcess;
DWORD HelperProcessId;
HANDLE hHelperGoodbye;
bool attach_pcon_in_fork;
bool switch_to_pcon;
bool screen_alternated;
bool mask_switch_to_pcon;
pid_t pcon_pid;
int num_pcon_attached_slaves;
UINT TermCodePage;
public:
HANDLE from_master() const { return _from_master; }
HANDLE to_master() const { return _to_master; }
HANDLE to_master_cyg() const { return _to_master_cyg; }
HANDLE from_master () const { return _from_master; }
HANDLE from_master_cyg () const { return _from_master_cyg; }
HANDLE to_master () const { return _to_master; }
HANDLE to_master_cyg () const { return _to_master_cyg; }
void set_from_master (HANDLE h) { _from_master = h; }
void set_from_master_cyg (HANDLE h) { _from_master_cyg = h; }
void set_to_master (HANDLE h) { _to_master = h; }
void set_to_master_cyg (HANDLE h) { _to_master_cyg = h; }
@@ -117,7 +133,9 @@ public:
void set_master_ctl_closed () {master_pid = -1;}
static void __stdcall create_master (int);
static void __stdcall init_session ();
friend class fhandler_pty_common;
friend class fhandler_pty_master;
friend class fhandler_pty_slave;
};
class tty_list