From 539d210f0a4865b34288b73a5ac47dca308a5fa2 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Fri, 13 Mar 2020 18:51:02 +0100 Subject: gotta thread --- Makefile | 2 +- src/ft_sfx_footstep.c | 35 ++++++++++++++++------------------- src/ft_sfx_trap.c | 15 ++------------- 3 files changed, 19 insertions(+), 33 deletions(-) diff --git a/Makefile b/Makefile index 32fc614..7c24e8b 100644 --- a/Makefile +++ b/Makefile @@ -133,7 +133,7 @@ ifdef ASAN CFLAGS += ${FSANITIZE} endif #--------------------------------------------------------------------------------------------------# -CDEFS = -D_POSIX_C_SOURCE +CDEFS = -D_DEFAULT_SOURCE CDEFS += -DFT_SCR_SIZE=\"${SCR_SZE}\" ifeq (${OS}, Darwin) CDEFS += -DFT_OS=1 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 -#include #include #include #include #include +#include +#include +#include #include 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 #include #include -#include 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