hClose on stdin,stdout,stderr now actually closes the file
descriptor. Before, there was no way to actually close these file
descriptors, which might be necessary in some cases - especially when
stdin/stdout are pipes and you need to indicate to the other end of
the pipe that you've finished I/O, but without exiting the program.
c_fd = fromIntegral fd
-- close the file descriptor, but not when this is the read
- -- side of a duplex handle, and not when this is one of the
- -- std file handles.
+ -- side of a duplex handle.
case haOtherSide handle_ of
Nothing ->
- when (fd /= fd_stdin && fd /= fd_stdout && fd /= fd_stderr) $
throwErrnoIfMinus1Retry_ "hClose"
#ifdef mingw32_TARGET_OS
(closeFd (haIsStream handle_) c_fd)