From 50b1264871afbdcb14a1fd5fae3fe3bc358c0bad Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 22 Jun 2001 20:53:45 +0000 Subject: [PATCH] * fhandler.h class fhandler_socket): Declare new method `set_close_on_exec'. * fhandler_socket.cc (fhandler_socket::set_close_on_exec): New method. --- winsup/cygwin/ChangeLog | 7 +++++++ winsup/cygwin/fhandler.h | 1 + winsup/cygwin/fhandler_socket.cc | 9 +++++++++ 3 files changed, 17 insertions(+) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index eae9eafb7..8dcfe7f50 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +Fri Jun 22 16:50:00 2001 Corinna Vinschen + + * fhandler.h class fhandler_socket): Declare new method + `set_close_on_exec'. + * fhandler_socket.cc (fhandler_socket::set_close_on_exec): + New method. + Fri Jun 22 16:12:00 2001 Corinna Vinschen * fhandler_tape.cc (fhandler_dev_tape::tape_erase): Set size diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h index c6224d07c..8c34c191e 100644 --- a/winsup/cygwin/fhandler.h +++ b/winsup/cygwin/fhandler.h @@ -383,6 +383,7 @@ public: void hclose (HANDLE) {close ();} int dup (fhandler_base *child); + void set_close_on_exec (int val); virtual void fixup_before_fork_exec (DWORD); void fixup_after_fork (HANDLE); void fixup_after_exec (HANDLE parent) { fixup_after_fork (parent); } diff --git a/winsup/cygwin/fhandler_socket.cc b/winsup/cygwin/fhandler_socket.cc index 3ec1ac69e..974f2de68 100644 --- a/winsup/cygwin/fhandler_socket.cc +++ b/winsup/cygwin/fhandler_socket.cc @@ -431,3 +431,12 @@ fhandler_socket::fcntl (int cmd, void *arg) return res; } +void +fhandler_socket::set_close_on_exec (int val) +{ + extern WSADATA wsadata; + if (wsadata.wVersion < 512) /* < Winsock 2.0 */ + set_inheritance (get_handle (), val); + set_close_on_exec_flag (val); + debug_printf ("set close_on_exec for %s to %d", get_name (), val); +}