aboutsummaryrefslogtreecommitdiffstats
path: root/src/ft_sfx_footstep.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/ft_sfx_footstep.c40
1 files changed, 19 insertions, 21 deletions
diff --git a/src/ft_sfx_footstep.c b/src/ft_sfx_footstep.c
index bccb847..d9f083d 100644
--- a/src/ft_sfx_footstep.c
+++ b/src/ft_sfx_footstep.c
@@ -16,29 +16,27 @@
#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)
{
- (void)cl;
- /* static uint8_t ref = 0; */
+ static uint8_t ref = 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); */
- /* } */
- /* else */
- /* wait(&cl->sfx.footstep_pid); */
+ if (waitpid(cl->sfx.footstep_pid, 0, WNOHANG) > 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);
+ }
+ else
+ wait(&cl->sfx.footstep_pid);
+ }
}