From ea12a0fb066793c316ccc9ef21444f092f74b4ba Mon Sep 17 00:00:00 2001 From: Etienne Dechamps Date: Sat, 12 Jul 2014 18:53:25 +0100 Subject: [PATCH] Improve subprocess behavior in tinc start command. When invoking tincd, tinc start currently uses the execvp() function, which doesn't behave well in a console as the console displays a new prompt before the subprocess finishes (which makes me suspect the exit value is not handled at all). This new code uses spawnvp() instead, which seems like a better fit. --- src/tincctl.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/tincctl.c b/src/tincctl.c index 12cffeb..f4379b7 100644 --- a/src/tincctl.c +++ b/src/tincctl.c @@ -829,9 +829,12 @@ static int cmd_start(int argc, char *argv[]) { nargv[nargc++] = argv[i]; #ifdef HAVE_MINGW - execvp(c, nargv); - fprintf(stderr, "Error starting %s: %s\n", c, strerror(errno)); - return 1; + int status = spawnvp(_P_WAIT, c, nargv); + if (status == -1) { + fprintf(stderr, "Error starting %s: %s\n", c, strerror(errno)); + return 1; + } + return status; #else pid_t pid = fork(); if(pid == -1) { -- 2.25.1