Cygwin: drop wincap::has_broken_attach_console
Only required for Windows 7. This in turn allows to drop the helper_pid and related methods from fhandler_pty_common. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
		
							parent
							
								
									4e40b21464
								
							
						
					
					
						commit
						08cd9cfc5c
					
				|  | @ -547,8 +547,7 @@ fhandler_pty_master::accept_input () | |||
| 	{ | ||||
| 	  /* Slave attaches to a different console than master.
 | ||||
| 	     Therefore reattach here. */ | ||||
| 	  DWORD resume_pid = | ||||
| 	    attach_console_temporarily (target_pid, helper_pid); | ||||
| 	  DWORD resume_pid = attach_console_temporarily (target_pid); | ||||
| 	  cp_to = GetConsoleCP (); | ||||
| 	  resume_from_temporarily_attach (resume_pid); | ||||
| 	} | ||||
|  | @ -2111,7 +2110,6 @@ fhandler_pty_master::close () | |||
| 	      WaitForSingleObject (helper_h_process, INFINITE); | ||||
| 	      CloseHandle (helper_h_process); | ||||
| 	      CloseHandle (helper_goodbye); | ||||
| 	      helper_pid = 0; | ||||
| 	      helper_h_process = 0; | ||||
| 	      helper_goodbye = NULL; | ||||
| 	    } | ||||
|  | @ -2838,7 +2836,7 @@ fhandler_pty_master::pty_master_fwd_thread (const master_fwd_thread_param_t *p) | |||
| 	  /* Slave attaches to a different console than master.
 | ||||
| 	     Therefore reattach here. */ | ||||
| 	  DWORD resume_pid = | ||||
| 	    attach_console_temporarily (target_pid, p->helper_pid); | ||||
| 	    attach_console_temporarily (target_pid); | ||||
| 	  cp_from = GetConsoleOutputCP (); | ||||
| 	  resume_from_temporarily_attach (resume_pid); | ||||
| 	} | ||||
|  | @ -3022,56 +3020,6 @@ fhandler_pty_master::setup () | |||
|     } | ||||
|   WaitForSingleObject (thread_param_copied_event, INFINITE); | ||||
| 
 | ||||
|   if (wincap.has_broken_attach_console () | ||||
|       && _major (myself->ctty) == DEV_CONS_MAJOR | ||||
|       && !(!pinfo (myself->ppid) && getenv ("ConEmuPID"))) | ||||
|     { | ||||
|       HANDLE hello = CreateEvent (&sec_none, true, false, NULL); | ||||
|       HANDLE goodbye = CreateEvent (&sec_none, true, false, NULL); | ||||
|       WCHAR cmd[MAX_PATH]; | ||||
|       path_conv helper ("/bin/cygwin-console-helper.exe"); | ||||
|       size_t len = helper.get_wide_win32_path_len (); | ||||
|       helper.get_wide_win32_path (cmd); | ||||
|       __small_swprintf (cmd + len, L" %p %p", hello, goodbye); | ||||
| 
 | ||||
|       STARTUPINFOEXW si; | ||||
|       PROCESS_INFORMATION pi; | ||||
|       ZeroMemory (&si, sizeof (si)); | ||||
|       si.StartupInfo.cb = sizeof (STARTUPINFOEXW); | ||||
| 
 | ||||
|       SIZE_T bytesRequired; | ||||
|       InitializeProcThreadAttributeList (NULL, 1, 0, &bytesRequired); | ||||
|       si.lpAttributeList = (PPROC_THREAD_ATTRIBUTE_LIST) | ||||
| 	HeapAlloc (GetProcessHeap (), 0, bytesRequired); | ||||
|       InitializeProcThreadAttributeList (si.lpAttributeList, | ||||
| 					 1, 0, &bytesRequired); | ||||
|       HANDLE handles_to_inherit[] = {hello, goodbye}; | ||||
|       UpdateProcThreadAttribute (si.lpAttributeList, | ||||
| 				 0, | ||||
| 				 PROC_THREAD_ATTRIBUTE_HANDLE_LIST, | ||||
| 				 handles_to_inherit, | ||||
| 				 sizeof (handles_to_inherit), | ||||
| 				 NULL, NULL); | ||||
|       if (CreateProcessW (NULL, cmd, &sec_none, &sec_none, | ||||
| 			  TRUE, EXTENDED_STARTUPINFO_PRESENT, | ||||
| 			  NULL, NULL, &si.StartupInfo, &pi)) | ||||
| 	{ | ||||
| 	  WaitForSingleObject (hello, INFINITE); | ||||
| 	  CloseHandle (hello); | ||||
| 	  CloseHandle (pi.hThread); | ||||
| 	  helper_goodbye = goodbye; | ||||
| 	  helper_pid = pi.dwProcessId; | ||||
| 	  helper_h_process = pi.hProcess; | ||||
| 	} | ||||
|       else | ||||
| 	{ | ||||
| 	  CloseHandle (hello); | ||||
| 	  CloseHandle (goodbye); | ||||
| 	} | ||||
|       DeleteProcThreadAttributeList (si.lpAttributeList); | ||||
|       HeapFree (GetProcessHeap (), 0, si.lpAttributeList); | ||||
|     } | ||||
| 
 | ||||
|   master_fwd_thread = new cygthread (::pty_master_fwd_thread, this, "ptymf"); | ||||
|   if (!master_fwd_thread) | ||||
|     { | ||||
|  | @ -3877,7 +3825,6 @@ fhandler_pty_master::get_master_fwd_thread_param (master_fwd_thread_param_t *p) | |||
|   p->from_slave_nat = from_slave_nat; | ||||
|   p->output_mutex = output_mutex; | ||||
|   p->ttyp = get_ttyp (); | ||||
|   p->helper_pid = helper_pid; | ||||
|   SetEvent (thread_param_copied_event); | ||||
| } | ||||
| 
 | ||||
|  | @ -4189,7 +4136,7 @@ fhandler_pty_slave::setpgid_aux (pid_t pid) | |||
| 			   0, TRUE, DUPLICATE_SAME_ACCESS); | ||||
| 	  CloseHandle (pcon_owner); | ||||
| 	  DWORD target_pid = get_ttyp ()->nat_pipe_owner_pid; | ||||
| 	  resume_pid = attach_console_temporarily (target_pid, 0); | ||||
| 	  resume_pid = attach_console_temporarily (target_pid); | ||||
| 	  attach_restore = true; | ||||
| 	} | ||||
|       else | ||||
|  | @ -4235,15 +4182,12 @@ fhandler_pty_slave::release_ownership_of_nat_pipe (tty *ttyp, | |||
| } | ||||
| 
 | ||||
| DWORD | ||||
| fhandler_pty_common::attach_console_temporarily (DWORD target_pid, | ||||
| 						 DWORD helper_pid) | ||||
| fhandler_pty_common::attach_console_temporarily (DWORD target_pid) | ||||
| { | ||||
|   DWORD resume_pid = 0; | ||||
|   acquire_attach_mutex (mutex_timeout); | ||||
|   pinfo pinfo_resume (myself->ppid); | ||||
|   if (helper_pid) | ||||
|     resume_pid = helper_pid; | ||||
|   else if (pinfo_resume) | ||||
|   if (pinfo_resume) | ||||
|     resume_pid = pinfo_resume->dwProcessId; | ||||
|   if (!resume_pid) | ||||
|     resume_pid = get_console_process_id (myself->dwProcessId, false); | ||||
|  |  | |||
|  | @ -359,8 +359,7 @@ fhandler_termios::process_sigs (char c, tty* ttyp, fhandler_termios *fh) | |||
| 	  DWORD resume_pid = 0; | ||||
| 	  if (fh && !fh->is_console ()) | ||||
| 	    resume_pid = | ||||
| 	      fhandler_pty_common::attach_console_temporarily | ||||
| 				    (p->dwProcessId, fh->get_helper_pid ()); | ||||
| 	      fhandler_pty_common::attach_console_temporarily (p->dwProcessId); | ||||
| 	  if (fh && p == myself && being_debugged ()) | ||||
| 	    { /* Avoid deadlock in gdb on console. */ | ||||
| 	      fh->tcflush(TCIFLUSH); | ||||
|  |  | |||
|  | @ -1987,7 +1987,6 @@ class fhandler_termios: public fhandler_base | |||
|   virtual void setpgid_aux (pid_t pid) {} | ||||
|   virtual bool need_console_handler () { return false; } | ||||
|   virtual bool need_send_ctrl_c_event () { return true; } | ||||
|   virtual DWORD get_helper_pid () { return 0; } | ||||
| 
 | ||||
|   struct ptys_handle_set_t | ||||
|   { | ||||
|  | @ -2378,7 +2377,7 @@ class fhandler_pty_common: public fhandler_termios | |||
| 				       bool cygwin = false, | ||||
| 				       bool stub_only = false); | ||||
|   bool to_be_read_from_nat_pipe (void); | ||||
|   static DWORD attach_console_temporarily (DWORD target_pid, DWORD helper_pid); | ||||
|   static DWORD attach_console_temporarily (DWORD target_pid); | ||||
|   static void resume_from_temporarily_attach (DWORD resume_pid); | ||||
| 
 | ||||
|  protected: | ||||
|  | @ -2501,7 +2500,6 @@ public: | |||
|     HANDLE from_slave_nat; | ||||
|     HANDLE output_mutex; | ||||
|     tty *ttyp; | ||||
|     DWORD helper_pid; | ||||
|   }; | ||||
| private: | ||||
|   int pktmode;			// non-zero if pty in a packet mode.
 | ||||
|  | @ -2515,7 +2513,6 @@ private: | |||
|   HANDLE thread_param_copied_event; | ||||
|   HANDLE helper_goodbye; | ||||
|   HANDLE helper_h_process; | ||||
|   DWORD helper_pid; | ||||
| 
 | ||||
| public: | ||||
|   HANDLE get_echo_handle () const { return echo_r; } | ||||
|  | @ -2570,7 +2567,6 @@ public: | |||
|   void get_master_fwd_thread_param (master_fwd_thread_param_t *p); | ||||
|   void set_mask_flusho (bool m) { get_ttyp ()->mask_flusho = m; } | ||||
|   bool need_send_ctrl_c_event (); | ||||
|   DWORD get_helper_pid () { return helper_pid; } | ||||
| }; | ||||
| 
 | ||||
| class fhandler_dev_null: public fhandler_base | ||||
|  |  | |||
|  | @ -33,7 +33,6 @@ struct wincaps | |||
|     unsigned has_linux_tcp_keepalive_sockopts			: 1; | ||||
|     unsigned has_tcp_maxrtms					: 1; | ||||
|     unsigned has_con_broken_tabs				: 1; | ||||
|     unsigned has_broken_attach_console				: 1; | ||||
|     unsigned cons_need_small_input_record_buf			: 1; | ||||
|   }; | ||||
| }; | ||||
|  | @ -87,7 +86,6 @@ public: | |||
|   bool	IMPLEMENT (has_linux_tcp_keepalive_sockopts) | ||||
|   bool	IMPLEMENT (has_tcp_maxrtms) | ||||
|   bool	IMPLEMENT (has_con_broken_tabs) | ||||
|   bool	IMPLEMENT (has_broken_attach_console) | ||||
|   bool	IMPLEMENT (cons_need_small_input_record_buf) | ||||
| 
 | ||||
|   void disable_case_sensitive_dirs () | ||||
|  |  | |||
|  | @ -40,7 +40,6 @@ wincaps wincap_7 __attribute__((section (".cygwin_dll_common"), shared)) = { | |||
|     has_linux_tcp_keepalive_sockopts:false, | ||||
|     has_tcp_maxrtms:false, | ||||
|     has_con_broken_tabs:false, | ||||
|     has_broken_attach_console:true, | ||||
|     cons_need_small_input_record_buf:true, | ||||
|   }, | ||||
| }; | ||||
|  | @ -66,7 +65,6 @@ wincaps wincap_8 __attribute__((section (".cygwin_dll_common"), shared)) = { | |||
|     has_linux_tcp_keepalive_sockopts:false, | ||||
|     has_tcp_maxrtms:false, | ||||
|     has_con_broken_tabs:false, | ||||
|     has_broken_attach_console:false, | ||||
|     cons_need_small_input_record_buf:false, | ||||
|   }, | ||||
| }; | ||||
|  | @ -92,7 +90,6 @@ wincaps wincap_8_1 __attribute__((section (".cygwin_dll_common"), shared)) = { | |||
|     has_linux_tcp_keepalive_sockopts:false, | ||||
|     has_tcp_maxrtms:false, | ||||
|     has_con_broken_tabs:false, | ||||
|     has_broken_attach_console:false, | ||||
|     cons_need_small_input_record_buf:false, | ||||
|   }, | ||||
| }; | ||||
|  | @ -118,7 +115,6 @@ wincaps  wincap_10_1507 __attribute__((section (".cygwin_dll_common"), shared)) | |||
|     has_linux_tcp_keepalive_sockopts:false, | ||||
|     has_tcp_maxrtms:false, | ||||
|     has_con_broken_tabs:false, | ||||
|     has_broken_attach_console:false, | ||||
|     cons_need_small_input_record_buf:false, | ||||
|   }, | ||||
| }; | ||||
|  | @ -144,7 +140,6 @@ wincaps  wincap_10_1607 __attribute__((section (".cygwin_dll_common"), shared)) | |||
|     has_linux_tcp_keepalive_sockopts:false, | ||||
|     has_tcp_maxrtms:true, | ||||
|     has_con_broken_tabs:false, | ||||
|     has_broken_attach_console:false, | ||||
|     cons_need_small_input_record_buf:false, | ||||
|   }, | ||||
| }; | ||||
|  | @ -170,7 +165,6 @@ wincaps wincap_10_1703 __attribute__((section (".cygwin_dll_common"), shared)) = | |||
|     has_linux_tcp_keepalive_sockopts:false, | ||||
|     has_tcp_maxrtms:true, | ||||
|     has_con_broken_tabs:true, | ||||
|     has_broken_attach_console:false, | ||||
|     cons_need_small_input_record_buf:false, | ||||
|   }, | ||||
| }; | ||||
|  | @ -196,7 +190,6 @@ wincaps wincap_10_1709 __attribute__((section (".cygwin_dll_common"), shared)) = | |||
|     has_linux_tcp_keepalive_sockopts:true, | ||||
|     has_tcp_maxrtms:true, | ||||
|     has_con_broken_tabs:true, | ||||
|     has_broken_attach_console:false, | ||||
|     cons_need_small_input_record_buf:false, | ||||
|   }, | ||||
| }; | ||||
|  | @ -222,7 +215,6 @@ wincaps wincap_10_1803 __attribute__((section (".cygwin_dll_common"), shared)) = | |||
|     has_linux_tcp_keepalive_sockopts:true, | ||||
|     has_tcp_maxrtms:true, | ||||
|     has_con_broken_tabs:true, | ||||
|     has_broken_attach_console:false, | ||||
|     cons_need_small_input_record_buf:false, | ||||
|   }, | ||||
| }; | ||||
|  | @ -248,7 +240,6 @@ wincaps wincap_10_1809 __attribute__((section (".cygwin_dll_common"), shared)) = | |||
|     has_linux_tcp_keepalive_sockopts:true, | ||||
|     has_tcp_maxrtms:true, | ||||
|     has_con_broken_tabs:true, | ||||
|     has_broken_attach_console:false, | ||||
|     cons_need_small_input_record_buf:false, | ||||
|   }, | ||||
| }; | ||||
|  | @ -274,7 +265,6 @@ wincaps wincap_10_1903 __attribute__((section (".cygwin_dll_common"), shared)) = | |||
|     has_linux_tcp_keepalive_sockopts:true, | ||||
|     has_tcp_maxrtms:true, | ||||
|     has_con_broken_tabs:true, | ||||
|     has_broken_attach_console:false, | ||||
|     cons_need_small_input_record_buf:false, | ||||
|   }, | ||||
| }; | ||||
|  | @ -300,7 +290,6 @@ wincaps wincap_10_2004 __attribute__((section (".cygwin_dll_common"), shared)) = | |||
|     has_linux_tcp_keepalive_sockopts:true, | ||||
|     has_tcp_maxrtms:true, | ||||
|     has_con_broken_tabs:true, | ||||
|     has_broken_attach_console:false, | ||||
|     cons_need_small_input_record_buf:false, | ||||
|   }, | ||||
| }; | ||||
|  | @ -326,7 +315,6 @@ wincaps wincap_11 __attribute__((section (".cygwin_dll_common"), shared)) = { | |||
|     has_linux_tcp_keepalive_sockopts:true, | ||||
|     has_tcp_maxrtms:true, | ||||
|     has_con_broken_tabs:false, | ||||
|     has_broken_attach_console:false, | ||||
|     cons_need_small_input_record_buf:false, | ||||
|   }, | ||||
| }; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue