aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ft_sfx_trap.c21
1 files changed, 18 insertions, 3 deletions
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);
+ }
}