diff options
author | Laurent Bercot <ska-skaware@skarnet.org> | 2024-04-30 19:09:43 +0000 |
---|---|---|
committer | Laurent Bercot <ska@appnovation.com> | 2024-04-30 19:09:43 +0000 |
commit | 02926ee3447b1ea0d04b53b8fcb08d8b1a4deec5 (patch) | |
tree | f0cffb716e9ba61382795b460203df506e13ed4b /src/libstddjb/child_spawn2.c | |
parent | 944a9d260a41b30f32730ccb12b3f5dafb507b7d (diff) | |
download | skalibs-02926ee3447b1ea0d04b53b8fcb08d8b1a4deec5.tar.xz |
Add mspawn functions to cspawn.h; move everything to libenvexec
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src/libstddjb/child_spawn2.c')
-rw-r--r-- | src/libstddjb/child_spawn2.c | 39 |
1 files changed, 0 insertions, 39 deletions
diff --git a/src/libstddjb/child_spawn2.c b/src/libstddjb/child_spawn2.c deleted file mode 100644 index f287c0b..0000000 --- a/src/libstddjb/child_spawn2.c +++ /dev/null @@ -1,39 +0,0 @@ -/* ISC license. */ - -#include <unistd.h> - -#include <skalibs/djbunix.h> -#include <skalibs/cspawn.h> - -pid_t child_spawn2 (char const *prog, char const *const *argv, char const *const *envp, int *fds) -{ - pid_t pid ; - int p[2][2] ; - if (pipe(p[0]) == -1) return 0 ; - if (ndelay_on(p[0][0]) == -1 || coe(p[0][0]) == -1 || pipe(p[1]) == -1) goto errp ; - if (ndelay_on(p[1][1]) == -1 || coe(p[1][1]) == -1) goto err ; - - { - cspawn_fileaction fa[2] = - { - [0] = { .type = CSPAWN_FA_MOVE, .x = { .fd2 = { [0] = fds[0], [1] = p[1][0] } } }, - [1] = { .type = CSPAWN_FA_MOVE, .x = { .fd2 = { [0] = fds[1], [1] = p[0][1] } } } - } ; - pid = cspawn(prog, argv, envp, CSPAWN_FLAGS_SIGBLOCKNONE, fa, 2) ; - if (!pid) goto err ; - } - - fd_close(p[0][1]) ; - fd_close(p[1][0]) ; - fds[0] = p[0][0] ; - fds[1] = p[1][1] ; - return pid ; - - err: - fd_close(p[1][1]) ; - fd_close(p[1][0]) ; - errp: - fd_close(p[0][1]) ; - fd_close(p[0][0]) ; - return 0 ; -} |