delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin-developers/2000/04/17/09:59:29

Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-developers-subscribe AT sourceware DOT cygnus DOT com>
List-Archive: <http://sourceware.cygnus.com/ml/cygwin-developers/>
List-Post: <mailto:cygwin-developers AT sourceware DOT cygnus DOT com>
List-Help: <mailto:cygwin-developers-help AT sourceware DOT cygnus DOT com>, <http://sourceware.cygnus.com/ml/#faqs>
Sender: cygwin-developers-owner AT sourceware DOT cygnus DOT com
Delivered-To: mailing list cygwin-developers AT sourceware DOT cygnus DOT com
Message-ID: <779F20BCCE5AD31186A50008C75D9979171716@SILLDN_MAIL1>
From: "Fifer, Eric" <EFifer AT sanwaint DOT com>
To: "'cygwin-developers AT sourceware DOT cygnus DOT com'"
<cygwin-developers AT sourceware DOT cygnus DOT com>
Subject: RE: sockets and close-on-exec (F_SETFD)
Date: Mon, 17 Apr 2000 15:58:48 +0100
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.5.2650.21)

>Do you want to submit a patch?

Below is what I did, but it's a little ugly because set_inheritance
is not a fhandler_base method and I stuck cygwin_closesocket in
net.cc because it already defines Win32_Winsock and I didn't want to
introduce that to fhandler.cc ...

Eric

	* fhandler.cc (set_inheritance): add dev parameter and special
handling
	for FH_SOCKET.
	* fhandler.cc (fhandler_base::set_close_on_exec): pass device to
set_inheritance.
	* fhandler.h: add dev parameter to set_inheritance definition.
	* net.cc (cygwin_closesocket): new function called by
set_inheritance.


diff -urp winsup.orig/cygwin/fhandler.cc winsup/cygwin/fhandler.cc
--- winsup.orig/cygwin/fhandler.cc	Sun Apr 09 04:55:14 2000
+++ winsup/cygwin/fhandler.cc	Mon Apr 17 15:40:39 2000
@@ -1428,7 +1428,7 @@ fhandler_pipe::lseek (off_t offset, int 
 }
 
 void __stdcall
-set_inheritance (HANDLE &h, int not_inheriting, const char *name)
+set_inheritance (HANDLE &h, int not_inheriting, const char *name, DWORD
dev)
 {
   HANDLE newh;
 
@@ -1438,7 +1438,12 @@ set_inheritance (HANDLE &h, int not_inhe
 #ifndef DEBUGGING
   else
     {
-      CloseHandle (h);
+      extern void cygwin_closesocket(HANDLE h);
+
+      if(dev == FH_SOCKET)
+        cygwin_closesocket (h);
+      else
+        CloseHandle (h);
       h = newh;
     }
 #else
@@ -1467,7 +1472,7 @@ fhandler_base::fork_fixup (HANDLE parent
 void
 fhandler_base::set_close_on_exec (int val)
 {
-  set_inheritance (io_handle, val);
+  set_inheritance (io_handle, val, NULL, get_device ());
   set_close_on_exec_flag (val);
   debug_printf ("set close_on_exec for %s to %d", get_name (), val);
 }
diff -urp winsup.orig/cygwin/fhandler.h winsup/cygwin/fhandler.h
--- winsup.orig/cygwin/fhandler.h	Tue Apr 04 04:55:31 2000
+++ winsup/cygwin/fhandler.h	Mon Apr 17 15:22:54 2000
@@ -810,6 +810,7 @@ public:
 uid_t __stdcall get_file_owner (int, const char *);
 gid_t __stdcall get_file_group (int, const char *);
 
-void __stdcall set_inheritance (HANDLE &h, int val, const char *name =
NULL);
+void __stdcall set_inheritance (HANDLE &h, int val, const char *name =
NULL,
+				DWORD dev = FH_BAD);
 
 #endif /* _FHANDLER_H_ */
diff -urp winsup.orig/cygwin/net.cc winsup/cygwin/net.cc
--- winsup.orig/cygwin/net.cc	Wed Feb 23 04:07:13 2000
+++ winsup/cygwin/net.cc	Mon Apr 17 15:24:40 2000
@@ -1622,6 +1622,12 @@ fhandler_socket::close ()
   return res;
 }
 
+void
+cygwin_closesocket(HANDLE h)
+{
+  closesocket((SOCKET) h);
+}
+
 /* Cygwin internal */
 /*
  * Return the flags settings for an interface.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019