posix_spawn(): Do not fail when trying to close an fd that is not open.

As noted in Austin Group issue #370 (an interpretation has been issued),
failing posix_spawn() because an fd specified with
posix_spawn_file_actions_addclose() is not open is unnecessarily harsh, and
there are existing implementations that do not fail posix_spawn() for this
reason.

Reviewed by:	ed
MFC after:	10 days
This commit is contained in:
Jilles Tjoelker 2011-05-30 21:41:06 +00:00
parent 56599263c5
commit 562b28821e

View File

@ -163,11 +163,8 @@ process_file_actions_entry(posix_spawn_file_actions_entry_t *fae)
return (errno);
break;
case FAE_CLOSE:
/* Perform a close() */
if (_close(fae->fae_fildes) != 0) {
if (errno == EBADF)
return (EBADF);
}
/* Perform a close(), do not fail if already closed */
(void)_close(fae->fae_fildes);
break;
}
return (0);