From aaee2ffaed818ccaf248b4097a3b7c7bfa4ea82a Mon Sep 17 00:00:00 2001
From: Corinna Vinschen <corinna@vinschen.de>
Date: Fri, 23 Feb 2007 10:51:59 +0000
Subject: [PATCH] 	* exceptions.cc (dummy_ctrl_c_handler): Remove. 
 (init_console_handler): Drop has_null_console_handler_routine checks. 	*
 fhandler_raw.cc (fhandler_dev_raw::open): Drop has_raw_devices check. 	*
 fhandler_serial.cc (fhandler_serial::open): Drop 
 .supports_reading_modem_output_lines check. 	* miscfuncs.cc
 (low_priority_sleep): Drop has_switch_to_thread check. 	* shared.cc
 (open_shared): Drop needs_memory_protection checks. 	* spawn.cc
 (spawn_guts): Drop start_proc_suspended check. 	* uname.cc (uname):
 Drop has_valid_processorlevel check. 	* wincap.cc: Remove has_raw_devices,
 has_valid_processorlevel, 	supports_reading_modem_output_lines,
 needs_memory_protection, 	has_switch_to_thread, start_proc_suspended and
 	has_null_console_handler_routine throughout. 	* wincap.h: Ditto.

---
 winsup/cygwin/ChangeLog          | 17 +++++++++++
 winsup/cygwin/exceptions.cc      | 13 ++-------
 winsup/cygwin/external.cc        |  2 +-
 winsup/cygwin/fhandler_raw.cc    |  7 -----
 winsup/cygwin/fhandler_serial.cc | 20 ++-----------
 winsup/cygwin/miscfuncs.cc       |  4 +--
 winsup/cygwin/shared.cc          |  5 ++--
 winsup/cygwin/spawn.cc           |  3 +-
 winsup/cygwin/uname.cc           | 24 +++++-----------
 winsup/cygwin/wincap.cc          | 49 --------------------------------
 winsup/cygwin/wincap.h           | 14 ---------
 11 files changed, 34 insertions(+), 124 deletions(-)

diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index cba3d76bd..40f2551e1 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,20 @@
+2007-02-23  Corinna Vinschen  <corinna@vinschen.de>
+
+	* exceptions.cc (dummy_ctrl_c_handler): Remove.
+	(init_console_handler): Drop has_null_console_handler_routine checks.
+	* fhandler_raw.cc (fhandler_dev_raw::open): Drop has_raw_devices check.
+	* fhandler_serial.cc (fhandler_serial::open): Drop
+	.supports_reading_modem_output_lines check.
+	* miscfuncs.cc (low_priority_sleep): Drop has_switch_to_thread check.
+	* shared.cc (open_shared): Drop needs_memory_protection checks.
+	* spawn.cc (spawn_guts): Drop start_proc_suspended check.
+	* uname.cc (uname): Drop has_valid_processorlevel check.
+	* wincap.cc: Remove has_raw_devices, has_valid_processorlevel,
+	supports_reading_modem_output_lines, needs_memory_protection,
+	has_switch_to_thread, start_proc_suspended and
+	has_null_console_handler_routine throughout.
+	* wincap.h: Ditto.
+
 2007-02-23  Corinna Vinschen  <corinna@vinschen.de>
 
 	* fhandler.cc (fhandler_base::lseek): Drop 9x considerations.
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index df5636970..512e1bef5 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -94,26 +94,17 @@ NO_COPY static struct
 
 /* Initialization code.  */
 
-BOOL WINAPI
-dummy_ctrl_c_handler (DWORD)
-{
-  return TRUE;
-}
-
 void
 init_console_handler (bool install_handler)
 {
   BOOL res;
 
   SetConsoleCtrlHandler (ctrl_c_handler, FALSE);
-  if (wincap.has_null_console_handler_routine ())
-    SetConsoleCtrlHandler (NULL, FALSE);
+  SetConsoleCtrlHandler (NULL, FALSE);
   if (install_handler)
     res = SetConsoleCtrlHandler (ctrl_c_handler, TRUE);
-  else if (wincap.has_null_console_handler_routine ())
-    res = SetConsoleCtrlHandler (NULL, TRUE);
   else
-    res = SetConsoleCtrlHandler (dummy_ctrl_c_handler, TRUE);
+    res = SetConsoleCtrlHandler (NULL, TRUE);
   if (!res)
     system_printf ("SetConsoleCtrlHandler failed, %E");
 }
diff --git a/winsup/cygwin/external.cc b/winsup/cygwin/external.cc
index a958955b4..4cc539e6a 100644
--- a/winsup/cygwin/external.cc
+++ b/winsup/cygwin/external.cc
@@ -1,7 +1,7 @@
 /* external.cc: Interface to Cygwin internals from external programs.
 
    Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-   2006 Red Hat, Inc.
+   2006, 2007 Red Hat, Inc.
 
    Written by Christopher Faylor <cgf@cygnus.com>
 
diff --git a/winsup/cygwin/fhandler_raw.cc b/winsup/cygwin/fhandler_raw.cc
index 9478ee788..13c8fa241 100644
--- a/winsup/cygwin/fhandler_raw.cc
+++ b/winsup/cygwin/fhandler_raw.cc
@@ -65,13 +65,6 @@ fhandler_dev_raw::fstat (struct __stat64 *buf)
 int
 fhandler_dev_raw::open (int flags, mode_t)
 {
-  if (!wincap.has_raw_devices ())
-    {
-      set_errno (ENOENT);
-      debug_printf ("%s is accessible under NT/W2K only", get_win32_name ());
-      return 0;
-    }
-
   /* Check for illegal flags. */
   if (get_major () != DEV_TAPE_MAJOR && (flags & (O_APPEND | O_EXCL)))
     {
diff --git a/winsup/cygwin/fhandler_serial.cc b/winsup/cygwin/fhandler_serial.cc
index c7a905f70..a82de0f76 100644
--- a/winsup/cygwin/fhandler_serial.cc
+++ b/winsup/cygwin/fhandler_serial.cc
@@ -1,6 +1,7 @@
 /* fhandler_serial.cc
 
-   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Red Hat, Inc.
+   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+   2006, 2007 Red Hat, Inc.
 
 This file is part of Cygwin.
 
@@ -262,23 +263,6 @@ fhandler_serial::open (int flags, mode_t mode)
 	system_printf ("couldn't set initial state for %s, %E", get_name ());
     }
 
-  /* setting rts and dtr to known state so that ioctl() function with
-  request TIOCMGET could return correct value of RTS and DTR lines.
-  Important only for Win 9x systems */
-
-  if (!wincap.supports_reading_modem_output_lines ())
-    {
-      if (EscapeCommFunction (get_handle (), SETDTR) == 0)
-	system_printf ("couldn't set initial state of DTR for %s, %E", get_name ());
-      if (EscapeCommFunction (get_handle (), SETRTS) == 0)
-	system_printf ("couldn't set initial state of RTS for %s, %E", get_name ());
-
-      /* even though one of above functions fail I have to set rts and dtr
-      variables to initial value. */
-      rts = TIOCM_RTS;
-      dtr = TIOCM_DTR;
-    }
-
   SetCommMask (get_handle (), EV_RXCHAR);
   set_open_status ();
   syscall_printf ("%p = fhandler_serial::open (%s, %p, %p)",
diff --git a/winsup/cygwin/miscfuncs.cc b/winsup/cygwin/miscfuncs.cc
index 6c91f03b8..9bab138cf 100644
--- a/winsup/cygwin/miscfuncs.cc
+++ b/winsup/cygwin/miscfuncs.cc
@@ -1,7 +1,7 @@
 /* miscfuncs.cc: misc funcs that don't belong anywhere else
 
    Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-   2005, 2006 Red Hat, Inc.
+   2005, 2006, 2007 Red Hat, Inc.
 
 This file is part of Cygwin.
 
@@ -246,7 +246,7 @@ low_priority_sleep (DWORD secs)
       staylow = true;
     }
 
-  if (!secs && wincap.has_switch_to_thread ())
+  if (!secs)
     {
       for (int i = 0; i < 3; i++)
 	SwitchToThread ();
diff --git a/winsup/cygwin/shared.cc b/winsup/cygwin/shared.cc
index 705cc16f9..a60d361fb 100644
--- a/winsup/cygwin/shared.cc
+++ b/winsup/cygwin/shared.cc
@@ -69,8 +69,7 @@ open_shared (const char *name, int n, HANDLE& shared_h, DWORD size,
   void *shared;
 
   void *addr;
-  if ((m == SH_JUSTCREATE || m == SH_JUSTOPEN)
-      || !wincap.needs_memory_protection () && offsets[0])
+  if (m == SH_JUSTCREATE || m == SH_JUSTOPEN)
     addr = NULL;
   else
     {
@@ -122,7 +121,7 @@ open_shared (const char *name, int n, HANDLE& shared_h, DWORD size,
   if (!shared)
     api_fatal ("MapViewOfFileEx '%s'(%p), %E.  Terminating.", mapname, shared_h);
 
-  if (m == SH_USER_SHARED && offsets[0] && wincap.needs_memory_protection ())
+  if (m == SH_USER_SHARED && offsets[0])
     {
       ptrdiff_t delta = (caddr_t) shared - (caddr_t) off_addr (0);
       offsets[0] = (caddr_t) shared - (caddr_t) cygwin_hmodule;
diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc
index 11567221c..7955f3eca 100644
--- a/winsup/cygwin/spawn.cc
+++ b/winsup/cygwin/spawn.cc
@@ -460,8 +460,7 @@ spawn_guts (const char * prog_arg, const char *const *argv,
      So we have to start the child in suspend state, unfortunately, to avoid
      a race condition. */
   if (!newargv.win16_exe
-      && (wincap.start_proc_suspended () || mode != _P_OVERLAY
-	  || cygheap->fdtab.need_fixup_before ()))
+      && (mode != _P_OVERLAY || cygheap->fdtab.need_fixup_before ()))
     c_flags |= CREATE_SUSPENDED;
 
   runpath = null_app_name ? NULL : (const char *) real_path;
diff --git a/winsup/cygwin/uname.cc b/winsup/cygwin/uname.cc
index 3797b140d..abd77cb19 100644
--- a/winsup/cygwin/uname.cc
+++ b/winsup/cygwin/uname.cc
@@ -1,6 +1,7 @@
 /* uname.cc
 
-   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc.
+   Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007 Red Hat, Inc.
    Written by Steve Chamberlain of Cygnus Support, sac@cygnus.com
    Rewritten by Geoffrey Noer of Cygnus Solutions, noer@cygnus.com
 
@@ -72,23 +73,12 @@ uname (struct utsname *name)
     {
       case PROCESSOR_ARCHITECTURE_INTEL:
 	unsigned int ptype;
-	if (wincap.has_valid_processorlevel ())
-	  {
-	    if (sysinfo.wProcessorLevel < 3) /* Shouldn't happen. */
-	      ptype = 3;
-	    else if (sysinfo.wProcessorLevel > 9) /* P4 */
-	      ptype = 6;
-	    else
-	      ptype = sysinfo.wProcessorLevel;
-	  }
+	if (sysinfo.wProcessorLevel < 3) /* Shouldn't happen. */
+	  ptype = 3;
+	else if (sysinfo.wProcessorLevel > 9) /* P4 */
+	  ptype = 6;
 	else
-	  {
-	    if (sysinfo.dwProcessorType == PROCESSOR_INTEL_386 ||
-		sysinfo.dwProcessorType == PROCESSOR_INTEL_486)
-	      ptype = sysinfo.dwProcessorType / 100;
-	    else
-	      ptype = PROCESSOR_INTEL_PENTIUM / 100;
-	  }
+	  ptype = sysinfo.wProcessorLevel;
 	__small_sprintf (name->machine, "i%d86", ptype);
 	break;
       case PROCESSOR_ARCHITECTURE_IA64:
diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc
index abd274a79..0ebf83690 100644
--- a/winsup/cygwin/wincap.cc
+++ b/winsup/cygwin/wincap.cc
@@ -22,19 +22,12 @@ static NO_COPY wincaps wincap_unknown = {
   has_physical_mem_access:true,
   has_move_file_ex:true,
   has_unreliable_pipes:false,
-  has_raw_devices:true,
-  has_valid_processorlevel:true,
   has_process_io_counters:false,
-  supports_reading_modem_output_lines:true,
-  needs_memory_protection:true,
   pty_needs_alloc_console:true,
   has_terminal_services:false,
-  has_switch_to_thread:true,
   has_ioctl_storage_get_media_types_ex:false,
-  start_proc_suspended:false,
   has_extended_priority_class:false,
   has_guid_volumes:false,
-  has_null_console_handler_routine:true,
   has_disk_ex_ioctls:false,
   has_disabled_user_tos_setting:false,
   has_fileid_dirinfo:false,
@@ -59,19 +52,12 @@ static NO_COPY wincaps wincap_nt4 = {
   has_physical_mem_access:true,
   has_move_file_ex:true,
   has_unreliable_pipes:false,
-  has_raw_devices:true,
-  has_valid_processorlevel:true,
   has_process_io_counters:false,
-  supports_reading_modem_output_lines:true,
-  needs_memory_protection:true,
   pty_needs_alloc_console:true,
   has_terminal_services:false,
-  has_switch_to_thread:true,
   has_ioctl_storage_get_media_types_ex:false,
-  start_proc_suspended:false,
   has_extended_priority_class:false,
   has_guid_volumes:false,
-  has_null_console_handler_routine:true,
   has_disk_ex_ioctls:false,
   has_disabled_user_tos_setting:false,
   has_fileid_dirinfo:false,
@@ -96,19 +82,12 @@ static NO_COPY wincaps wincap_nt4sp4 = {
   has_physical_mem_access:true,
   has_move_file_ex:true,
   has_unreliable_pipes:false,
-  has_raw_devices:true,
-  has_valid_processorlevel:true,
   has_process_io_counters:false,
-  supports_reading_modem_output_lines:true,
-  needs_memory_protection:true,
   pty_needs_alloc_console:true,
   has_terminal_services:false,
-  has_switch_to_thread:true,
   has_ioctl_storage_get_media_types_ex:false,
-  start_proc_suspended:false,
   has_extended_priority_class:false,
   has_guid_volumes:false,
-  has_null_console_handler_routine:true,
   has_disk_ex_ioctls:false,
   has_disabled_user_tos_setting:false,
   has_fileid_dirinfo:false,
@@ -133,19 +112,12 @@ static NO_COPY wincaps wincap_2000 = {
   has_physical_mem_access:true,
   has_move_file_ex:true,
   has_unreliable_pipes:false,
-  has_raw_devices:true,
-  has_valid_processorlevel:true,
   has_process_io_counters:true,
-  supports_reading_modem_output_lines:true,
-  needs_memory_protection:true,
   pty_needs_alloc_console:true,
   has_terminal_services:true,
-  has_switch_to_thread:true,
   has_ioctl_storage_get_media_types_ex:false,
-  start_proc_suspended:false,
   has_extended_priority_class:true,
   has_guid_volumes:true,
-  has_null_console_handler_routine:true,
   has_disk_ex_ioctls:false,
   has_disabled_user_tos_setting:true,
   has_fileid_dirinfo:true,
@@ -170,19 +142,12 @@ static NO_COPY wincaps wincap_xp = {
   has_physical_mem_access:true,
   has_move_file_ex:true,
   has_unreliable_pipes:false,
-  has_raw_devices:true,
-  has_valid_processorlevel:true,
   has_process_io_counters:true,
-  supports_reading_modem_output_lines:true,
-  needs_memory_protection:true,
   pty_needs_alloc_console:true,
   has_terminal_services:true,
-  has_switch_to_thread:true,
   has_ioctl_storage_get_media_types_ex:true,
-  start_proc_suspended:false,
   has_extended_priority_class:true,
   has_guid_volumes:true,
-  has_null_console_handler_routine:true,
   has_disk_ex_ioctls:true,
   has_disabled_user_tos_setting:true,
   has_fileid_dirinfo:true,
@@ -207,19 +172,12 @@ static NO_COPY wincaps wincap_2003 = {
   has_physical_mem_access:false,
   has_move_file_ex:true,
   has_unreliable_pipes:false,
-  has_raw_devices:true,
-  has_valid_processorlevel:true,
   has_process_io_counters:true,
-  supports_reading_modem_output_lines:true,
-  needs_memory_protection:true,
   pty_needs_alloc_console:true,
   has_terminal_services:true,
-  has_switch_to_thread:true,
   has_ioctl_storage_get_media_types_ex:true,
-  start_proc_suspended:false,
   has_extended_priority_class:true,
   has_guid_volumes:true,
-  has_null_console_handler_routine:true,
   has_disk_ex_ioctls:true,
   has_disabled_user_tos_setting:true,
   has_fileid_dirinfo:true,
@@ -244,19 +202,12 @@ static NO_COPY wincaps wincap_vista = {
   has_physical_mem_access:false,
   has_move_file_ex:true,
   has_unreliable_pipes:false,
-  has_raw_devices:true,
-  has_valid_processorlevel:true,
   has_process_io_counters:true,
-  supports_reading_modem_output_lines:true,
-  needs_memory_protection:true,
   pty_needs_alloc_console:true,
   has_terminal_services:true,
-  has_switch_to_thread:true,
   has_ioctl_storage_get_media_types_ex:true,
-  start_proc_suspended:false,
   has_extended_priority_class:true,
   has_guid_volumes:true,
-  has_null_console_handler_routine:true,
   has_disk_ex_ioctls:true,
   has_disabled_user_tos_setting:true,
   has_fileid_dirinfo:true,
diff --git a/winsup/cygwin/wincap.h b/winsup/cygwin/wincap.h
index f4e64a09e..080ce420f 100644
--- a/winsup/cygwin/wincap.h
+++ b/winsup/cygwin/wincap.h
@@ -22,19 +22,12 @@ struct wincaps
   unsigned has_physical_mem_access                      : 1;
   unsigned has_move_file_ex                             : 1;
   unsigned has_unreliable_pipes                         : 1;
-  unsigned has_raw_devices				: 1;
-  unsigned has_valid_processorlevel			: 1;
   unsigned has_process_io_counters                      : 1;
-  unsigned supports_reading_modem_output_lines          : 1;
-  unsigned needs_memory_protection			: 1;
   unsigned pty_needs_alloc_console			: 1;
   unsigned has_terminal_services			: 1;
-  unsigned has_switch_to_thread				: 1;
   unsigned has_ioctl_storage_get_media_types_ex		: 1;
-  unsigned start_proc_suspended				: 1;
   unsigned has_extended_priority_class			: 1;
   unsigned has_guid_volumes				: 1;
-  unsigned has_null_console_handler_routine		: 1;
   unsigned has_disk_ex_ioctls				: 1;
   unsigned has_disabled_user_tos_setting		: 1;
   unsigned has_fileid_dirinfo				: 1;
@@ -75,19 +68,12 @@ public:
   bool  IMPLEMENT (has_physical_mem_access)
   bool  IMPLEMENT (has_move_file_ex)
   bool  IMPLEMENT (has_unreliable_pipes)
-  bool  IMPLEMENT (has_raw_devices)
-  bool  IMPLEMENT (has_valid_processorlevel)
   bool  IMPLEMENT (has_process_io_counters)
-  bool  IMPLEMENT (supports_reading_modem_output_lines)
-  bool  IMPLEMENT (needs_memory_protection)
   bool  IMPLEMENT (pty_needs_alloc_console)
   bool  IMPLEMENT (has_terminal_services)
-  bool  IMPLEMENT (has_switch_to_thread)
   bool	IMPLEMENT (has_ioctl_storage_get_media_types_ex)
-  bool	IMPLEMENT (start_proc_suspended)
   bool	IMPLEMENT (has_extended_priority_class)
   bool	IMPLEMENT (has_guid_volumes)
-  bool	IMPLEMENT (has_null_console_handler_routine)
   bool	IMPLEMENT (has_disk_ex_ioctls)
   bool	IMPLEMENT (has_disabled_user_tos_setting)
   bool	IMPLEMENT (has_fileid_dirinfo)