+2009-12-06 Bruno Haible <bruno@clisp.org>
+
+ * lib/cloexec.c (dup_cloexec): Fix handling of _gl_register_dup return
+ value.
+
2009-12-06 Bruno Haible <bruno@clisp.org>
* lib/progname.c: Include stdio.h, stdlib.h.
prior to exec or spawn. Returns -1 and sets errno if FD could not
be duplicated. */
-int dup_cloexec (int fd)
+int
+dup_cloexec (int fd)
{
int nfd;
FALSE, /* InheritHandle */
DUPLICATE_SAME_ACCESS)) /* Options */
{
+ /* TODO: Translate GetLastError () into errno. */
errno = EMFILE;
return -1;
}
nfd = fcntl (fd, F_DUPFD_CLOEXEC, 0);
# if REPLACE_FCHDIR
if (0 <= nfd)
- result = _gl_register_dup (fd, nfd);
+ nfd = _gl_register_dup (fd, nfd);
# endif
# else /* !F_DUPFD_CLOEXEC */
nfd = dup (fd);
- if (0 <= nfd && set_cloexec_flag (nfd, true))
+ if (0 <= nfd && set_cloexec_flag (nfd, true) < 0)
{
int saved_errno = errno;
close (nfd);