commit 2c329aa6247ff532fce877debb1e80075bcbbba3
parent dfd9734eae6f1adea3f1afc84cb82beee283da84
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date:   Sat,  8 Feb 2020 16:47:51 +0100
check an error condition in fork() and print the actual execlp error
checks for -1 in fork() which can happen for example with resource process
limits. Print a clear error for fork() and execlp().
Signed-off-by: Christoph Lohmann <20h@r-36.net>
Diffstat:
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/thinglaunch.c b/thinglaunch.c
@@ -449,6 +449,7 @@ void
 execcmd(void)
 {
 	char *shell;
+	pid_t pid;
 
 	XDestroyWindow(dpy, win);
 
@@ -463,18 +464,23 @@ execcmd(void)
 		exit(0);
 	}
 
-	if (fork())
-		exit(0);
+	switch ((pid = fork())) {
+	case -1:
+		die("fork: %s\n", strerror(errno));
+	case 0:
+		break;
+	default:
+		_exit(0);
+	}
 
 	shell = getenv("SHELL");
 	if (!shell)
 		shell = "/bin/sh";
 
 	execlp(shell, basename(shell), "-c", cbuf, (char *)NULL);
-	die("aiee, after exec");
+	die("execlp: %s\n", strerror(errno));
 }
 
-
 void
 die(char *errstr, ...)
 {