diff: Correct fd 0 case on pipe
After git commit c8d40bf8ec, if fd 0 was
not open, it is left with CLOEXEC set and therefore fails. This is an
unlikely situation, but fixing it reduces the size of the code (by using
posix_spawn_file_actions_adddup2's special case if the two file
descriptor numbers are the same).
At the same time, check the error code from
posix_spawn_file_actions_adddup2.
Reviewed by: bapt
Differential Revision: https://reviews.freebsd.org/D56910
This commit is contained in:
+3
-2
@@ -71,8 +71,9 @@ start_pr(char *file1, char *file2)
|
||||
|
||||
posix_spawnattr_setprocdescp_np(&sa, &pr->procd, 0);
|
||||
|
||||
if (pfd[0] != STDIN_FILENO)
|
||||
posix_spawn_file_actions_adddup2(&fa, pfd[0], STDIN_FILENO);
|
||||
error = posix_spawn_file_actions_adddup2(&fa, pfd[0], STDIN_FILENO);
|
||||
if (error != 0)
|
||||
errc(2, error, "posix_spawn_file_actions_adddup2");
|
||||
|
||||
char *argv[] = { __DECONST(char *, _PATH_PR),
|
||||
__DECONST(char *, "-h"), header, NULL };
|
||||
|
||||
Reference in New Issue
Block a user