From 539d210f0a4865b34288b73a5ac47dca308a5fa2 Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Fri, 13 Mar 2020 18:51:02 +0100
Subject: gotta thread

---
 src/ft_sfx_footstep.c | 35 ++++++++++++++++-------------------
 src/ft_sfx_trap.c     | 15 ++-------------
 2 files changed, 18 insertions(+), 32 deletions(-)

(limited to 'src')

diff --git a/src/ft_sfx_footstep.c b/src/ft_sfx_footstep.c
index d7a62d2..391bf79 100644
--- a/src/ft_sfx_footstep.c
+++ b/src/ft_sfx_footstep.c
@@ -11,36 +11,33 @@
 /* ************************************************************************** */
 
 #include <cub3d.h>
-#include <stddef.h>
 #include <unistd.h>
 #include <stdint.h>
 #include <sys/types.h>
 #include <sys/wait.h>
 
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
 #include <libft.h>
 void
 	ft_sfx_footstep(t_cub *cl)
 {
 	static uint8_t	ref = 0;
-	pid_t			tmp;
-	int				status;
 
-	tmp = waitpid(cl->sfx.footstep_pid, &status, WNOHANG);
-	/* ft_printf("top_pid %d\nfs_pid %d\ntmp %d\n\n", getpid(), cl->sfx.footstep_pid, tmp); */
-	if (tmp > 0)
+	cl->sfx.footstep_pid = fork();
+	if (cl->sfx.footstep_pid == 0)
 	{
-		cl->sfx.footstep_pid = fork();
-		if (cl->sfx.footstep_pid == 0)
-		{
-			ref += 1;
-			if (ref > 201)
-				ref = 0;
-			if (ref % 2)
-				execve(*(cl->sfx.footstep_one + 0),
-					   cl->sfx.footstep_one, cl->envp);
-			else
-				execve(*(cl->sfx.footstep_two + 0),
-					   cl->sfx.footstep_two, cl->envp);
-		}
+		ref += 1;
+		if (ref > 201)
+			ref = 0;
+		if (ref % 2)
+			execve(*(cl->sfx.footstep_one + 0),
+				   cl->sfx.footstep_one, cl->envp);
+		else
+			execve(*(cl->sfx.footstep_two + 0),
+				   cl->sfx.footstep_two, cl->envp);
 	}
+	else
+		wait(&cl->sfx.footstep_pid);
 }
diff --git a/src/ft_sfx_trap.c b/src/ft_sfx_trap.c
index dc998da..1499ecf 100644
--- a/src/ft_sfx_trap.c
+++ b/src/ft_sfx_trap.c
@@ -14,7 +14,6 @@
 #include <cub3d.h>
 #include <unistd.h>
 #include <stdint.h>
-#include <sys/wait.h>
 
 static void
 	ft_sfx_pain(t_cub *cl)
@@ -27,12 +26,7 @@ static void
 	if (ref % 2)
 	{
 		cl->sfx.pain_pid = fork();
-		if (cl->sfx.pain_pid < 0)
-		{
-			ft_printf("Pain fork error\n");
-			return ;
-		}
-		else if (cl->sfx.pain_pid == 0)
+		if (cl->sfx.pain_pid == 0)
 		{
 			if (ref % 3)
 				execve(*(cl->sfx.pain_one + 0), cl->sfx.pain_one, cl->envp);
@@ -46,12 +40,7 @@ void
 	ft_sfx_trap(t_cub *cl)
 {
 	cl->sfx.trap_pid = fork();
-	if (cl->sfx.trap_pid < 0)
-	{
-		ft_printf("Trap fork error\n");
-		return ;
-	}
-	else if (cl->sfx.trap_pid == 0)
+	if (cl->sfx.trap_pid == 0)
 		execve(*(cl->sfx.trap + 0), cl->sfx.trap, cl->envp);
 	else
 	{
-- 
cgit v1.2.3