Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2000-10-24 00:16:52 +0400
committerCorinna Vinschen <corinna@vinschen.de>2000-10-24 00:16:52 +0400
commit1eb14bae8cc488dad2da4925cb73e4376c69fe45 (patch)
tree105a09afcbb92f6c87105b135f26397cc7866f3e /winsup/cygwin/net.cc
parentf80cdaeecbe2f65d2b6026bd25923cca7c9ab455 (diff)
* fcntl.cc (_fcntl): Rearrange as wrapper function. Move all
functionality except F_DUPFD to fhandler classes. * fhandler.cc (fhandler_base::fcntl): New method. * net.cc (fhandler_socket::fcntl): Ditto. * fhandler.h (class fhandler_base): Add method prototype for fcntl(). (class fhandler_socket): Ditto.
Diffstat (limited to 'winsup/cygwin/net.cc')
-rw-r--r--winsup/cygwin/net.cc27
1 files changed, 26 insertions, 1 deletions
diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc
index bb33bca57..10153f417 100644
--- a/winsup/cygwin/net.cc
+++ b/winsup/cygwin/net.cc
@@ -1957,7 +1957,7 @@ fhandler_socket::ioctl (unsigned int cmd, void *p)
set_async (*(int *) p);
break;
default:
- /* We must cancel WSAAsyncSelect (if any) before settting socket to
+ /* We must cancel WSAAsyncSelect (if any) before setting socket to
* blocking mode
*/
if (cmd == FIONBIO && *(int *) p == 0)
@@ -1979,6 +1979,31 @@ fhandler_socket::ioctl (unsigned int cmd, void *p)
return res;
}
+int
+fhandler_socket::fcntl (int cmd, void *arg)
+{
+ int res = 0;
+ int request, current;
+
+ switch (cmd)
+ {
+ case F_SETFL:
+ request = ((int) arg & O_NONBLOCK) ? 1 : 0;
+ current = (get_flags () & O_NONBLOCK) ? 1 : 0;
+ if (request != current && (res = ioctl (FIONBIO, &request)))
+ break;
+ if (request)
+ set_flags (get_flags () | O_NONBLOCK);
+ else
+ set_flags (get_flags () & ~O_NONBLOCK);
+ break;
+ default:
+ res = fhandler_base::fcntl (cmd, arg);
+ break;
+ }
+ return res;
+}
+
extern "C" {
/* Initialize WinSock */
LoadDLLinitfunc (wsock32)