OSDN Git Service

2008-08-17 Aaron W. LaFramboise <aaronavay62@aaronwl.com>
authoraaronwl <aaronwl@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 17 Aug 2008 05:44:15 +0000 (05:44 +0000)
committeraaronwl <aaronwl@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 17 Aug 2008 05:44:15 +0000 (05:44 +0000)
* adaint.c (_gnat_set_close_on_exec) [_WIN32]: Implement.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@139167 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/ChangeLog
gcc/ada/adaint.c

index a5169b7..8aa238f 100644 (file)
@@ -1,3 +1,7 @@
+2008-08-17  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
+
+       * adaint.c (_gnat_set_close_on_exec) [_WIN32]: Implement.
+
 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gcc-interface/trans.c (call_to_gnu): Use the Sloc of the call
index b7fdd08..48abb3e 100644 (file)
@@ -3248,12 +3248,17 @@ __gnat_set_close_on_exec (int fd ATTRIBUTE_UNUSED,
   else
     flags &= ~FD_CLOEXEC;
   return fcntl (fd, F_SETFD, flags | FD_CLOEXEC);
+#elif defined(_WIN32)
+  HANDLE h = (HANDLE) _get_osfhandle (fd);
+  if (h == (HANDLE) -1)
+    return -1;
+  if (close_on_exec_p)
+    return ! SetHandleInformation (h, HANDLE_FLAG_INHERIT, 0);
+  return ! SetHandleInformation (h, HANDLE_FLAG_INHERIT, 
+    HANDLE_FLAG_INHERIT);
 #else
+  /* TODO: Unimplemented. */
   return -1;
-  /* For the Windows case, we should use SetHandleInformation to remove
-     the HANDLE_INHERIT property from fd. This is not implemented yet,
-     but for our purposes (support of GNAT.Expect) this does not matter,
-     as by default handles are *not* inherited. */
 #endif
 }