From 89256ff149e706733fb0e6076b137f0005d0e41c Mon Sep 17 00:00:00 2001
From: Corinna Vinschen <corinna@vinschen.de>
Date: Sat, 25 Oct 2003 12:32:56 +0000
Subject: [PATCH] 	* fhandler.cc (fhandler_base::ioctl): Handle FIONBIO.

---
 winsup/cygwin/ChangeLog   |  4 ++++
 winsup/cygwin/fhandler.cc | 21 +++++++++++++++------
 2 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index d7006ec44..7424580aa 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,7 @@
+2003-10-25  Brian Ford  <ford@vss.fsi.com>
+
+	* fhandler.cc (fhandler_base::ioctl): Handle FIONBIO.
+
 2003-10-24  Thomas Pfaff  <tpfaff@gmx.net>
 
 	Rename native_mutex to fast_mutex throughout.
diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc
index 79f3e2621..834ea5fe0 100644
--- a/winsup/cygwin/fhandler.cc
+++ b/winsup/cygwin/fhandler.cc
@@ -909,13 +909,22 @@ fhandler_base::close ()
 int
 fhandler_base::ioctl (unsigned int cmd, void *buf)
 {
-  if (cmd == FIONBIO)
-    syscall_printf ("ioctl (FIONBIO, %p)", buf);
-  else
-    syscall_printf ("ioctl (%x, %p)", cmd, buf);
+  int res;
 
-  set_errno (EINVAL);
-  return -1;
+  switch (cmd)
+    {
+    case FIONBIO:
+      set_nonblocking (*(int *) buf);
+      res = 0;
+      break;
+    default:
+      set_errno (EINVAL);
+      res = -1;
+      break;
+    }
+
+  syscall_printf ("%d = ioctl (%x, %p)", res, cmd, buf);
+  return res;
 }
 
 int