fclose: avoid double close race when possible Calling close(fileno(fp)) prior to fclose(fp) is racy in a multi-threaded application - some other thread could open a new file, which is then inadvertently closed by the fclose that we thought should fail with EBADF. For mingw, this is no worse than the race already present in close_fd_maybe_socket for calling closesocket() prior to _close(), but for all other platforms, we might as well be nice and avoid the race. * lib/fclose.c (rpl_fclose): Rewrite to avoid double-close race on all but WINDOWS_SOCKETS. Signed-off-by: Eric Blake <eblake@redhat.com>