From 3d91d9ce645efa020800b85be1ac2727ebcbad19 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Wed, 6 Nov 2024 08:05:33 +0000 Subject: Prepare for 2.9.7.0 ; rework forx/forstdin -p, add -P maxpar Also refactor several things to keep global footprint low Signed-off-by: Laurent Bercot --- src/libexecline/el_modif_and_spawn.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/libexecline/el_modif_and_spawn.c') diff --git a/src/libexecline/el_modif_and_spawn.c b/src/libexecline/el_modif_and_spawn.c index 863ca92..7f36a37 100644 --- a/src/libexecline/el_modif_and_spawn.c +++ b/src/libexecline/el_modif_and_spawn.c @@ -4,6 +4,7 @@ #include #include +#include #include #include @@ -22,18 +23,18 @@ pid_t el_modif_and_spawn (char const *const *argv, char const *var, char const * memcpy(modifs + varlen + 1, value, modiflen - varlen - 1) ; } env_mergen(newenv, envlen + 2, (char const *const *)environ, envlen, value ? modifs : var, value ? modiflen : varlen + 1, 1) ; - if (doimport) + if (doimport && argv[0]) { size_t m = 0 ; - char const *newargv[env_len(argv) + 6] ; + char const *newargv[env_len(argv) + 5] ; newargv[m++] = EXECLINE_BINPREFIX "importas" ; - newargv[m++] = "-ui" ; + newargv[m++] = "-uSi" ; newargv[m++] = "--" ; newargv[m++] = var ; - newargv[m++] = var ; while (*argv) newargv[m++] = *argv++ ; newargv[m++] = 0 ; - return el_spawn0(newargv[0], newargv, newenv) ; + return cspawn(newargv[0], newargv, newenv, CSPAWN_FLAGS_SIGBLOCKNONE, 0, 0) ; } - else return el_spawn0(argv[0], argv, newenv) ; + if (!argv[0]) argv = el_trueargv ; + return cspawn(argv[0], argv, newenv, CSPAWN_FLAGS_SIGBLOCKNONE, 0, 0) ; } -- cgit v1.3.1