From: Aaron W. LaFramboise Date: Sun, 17 Aug 2008 05:44:15 +0000 (-0600) Subject: adaint.c (_gnat_set_close_on_exec): Implement. X-Git-Tag: releases/gcc-4.4.0~3111 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c8bbc9ef2a33fcf34118362e6361760f179d0908;p=thirdparty%2Fgcc.git adaint.c (_gnat_set_close_on_exec): Implement. 2008-08-17 Aaron W. LaFramboise * adaint.c (_gnat_set_close_on_exec) [_WIN32]: Implement. From-SVN: r139167 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index a5169b7a3594..8aa238fc285a 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,7 @@ +2008-08-17 Aaron W. LaFramboise + + * adaint.c (_gnat_set_close_on_exec) [_WIN32]: Implement. + 2008-08-16 Eric Botcazou * gcc-interface/trans.c (call_to_gnu): Use the Sloc of the call diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c index b7fdd08d2526..48abb3e5049e 100644 --- a/gcc/ada/adaint.c +++ b/gcc/ada/adaint.c @@ -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 }