From 08d582c67c8ed4325325feb5ae29d64b7b46b958 Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Fri, 13 Mar 2020 18:35:35 +0100
Subject: Fuck fork()

---
 src/ft_sfx_trap.c | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

(limited to 'src')

diff --git a/src/ft_sfx_trap.c b/src/ft_sfx_trap.c
index cf5dafa..dc998da 100644
--- a/src/ft_sfx_trap.c
+++ b/src/ft_sfx_trap.c
@@ -10,9 +10,11 @@
 /*                                                                            */
 /* ************************************************************************** */
 
+#include <libft.h>
 #include <cub3d.h>
 #include <unistd.h>
 #include <stdint.h>
+#include <sys/wait.h>
 
 static void
 	ft_sfx_pain(t_cub *cl)
@@ -25,7 +27,12 @@ static void
 	if (ref % 2)
 	{
 		cl->sfx.pain_pid = fork();
-		if (cl->sfx.pain_pid == 0)
+		if (cl->sfx.pain_pid < 0)
+		{
+			ft_printf("Pain fork error\n");
+			return ;
+		}
+		else if (cl->sfx.pain_pid == 0)
 		{
 			if (ref % 3)
 				execve(*(cl->sfx.pain_one + 0), cl->sfx.pain_one, cl->envp);
@@ -39,7 +46,15 @@ void
 	ft_sfx_trap(t_cub *cl)
 {
 	cl->sfx.trap_pid = fork();
-	if (cl->sfx.trap_pid == 0)
+	if (cl->sfx.trap_pid < 0)
+	{
+		ft_printf("Trap fork error\n");
+		return ;
+	}
+	else if (cl->sfx.trap_pid == 0)
 		execve(*(cl->sfx.trap + 0), cl->sfx.trap, cl->envp);
-	ft_sfx_pain(cl);
+	else
+	{
+		ft_sfx_pain(cl);
+	}
 }
-- 
cgit v1.2.3