summary refs log tree commit diff
path: root/src/eval.c
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2018-05-19 02:39:56 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2018-05-28 17:12:23 +0800
commite94a964e7dd03d0dd6923d7fc62bc46bd4431189 (patch)
tree051eb42129c550d4bed1b94ef8dab9d8e8569395 /src/eval.c
parenteval: Replace with listsetvar with mklocal/setvareq (diff)
downloaddash-e94a964e7dd03d0dd6923d7fc62bc46bd4431189.tar.gz
dash-e94a964e7dd03d0dd6923d7fc62bc46bd4431189.zip
eval: Add vfork support
This patch adds basic vfork support for the case of a simple command.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/eval.c b/src/eval.c
index 76a209b..c300d0c 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -892,10 +892,8 @@ bail:
 		/* Fork off a child process if necessary. */
 		if (!(flags & EV_EXIT) || have_traps()) {
 			INTOFF;
-			jp = makejob(cmd, 1);
-			if (forkshell(jp, cmd, FORK_FG) != 0)
-				break;
-			FORCEINTON;
+			jp = vforkexec(cmd, argv, path, cmdentry.u.index);
+			break;
 		}
 		shellexec(argv, path, cmdentry.u.index);
 		/* NOTREACHED */