void ft_state_change(int index, t_prgm *prgm, int state) { if (state == EAT) { prgm->philo[index].life = MAX_LIFE; ft_put_state(prgm->philo + index, REST); pthread_mutex_unlock(prgm->wand + index); pthread_mutex_unlock(prgm->wand + ft_right(index)); } else if (state == THINK) { if (pthread_mutex_trylock(prgm->wand + ft_right(index)) == 0) ft_put_state(prgm->philo + index, EAT); } else { if (prgm->philo[ft_left(index)].state == THINK || prgm->philo[ft_right(index)].state == THINK || pthread_mutex_trylock(prgm->wand + index)) ; else if (pthread_mutex_trylock(prgm->wand + ft_right(index))) ft_put_state(prgm->philo + index, THINK); else ft_put_state(prgm->philo + index, EAT); } }
void ft_while_main(int tab[4][4]) { int c; while ((c = getch())) { if (c == 27) break ; if (c == KEY_RIGHT) ft_down(tab); if (c == KEY_LEFT) ft_up(tab); if (c == KEY_UP) ft_left(tab); if (c == KEY_DOWN) ft_right(tab); if (!can_move(tab)) { refresh(); clear(); printw("Can't move mother f****r"); getch(); } ft_aff_square(tab); if (!ft_aff_square(tab)) printw("Window too small.\nThat's what she said."); } }
void ft_sh2(t_line *tree, char ***newenv) { int fd[2]; if (tree->type == 1) ft_execcmd(tree->cmd, newenv); if (tree->type == 2) { pipe(fd); ft_pipe(tree, newenv, fd); } if (tree->type == 3) ft_right(tree, newenv, 1); if (tree->type == 4) ft_left(tree, newenv); if (tree->type == 5) ft_right(tree, newenv, 2); if (tree->type == 7 || tree->type == 8) ft_logic_opp(tree, newenv); }
int key_loop_hook(t_mlx *mx) { if (mx->screen || mx->top || mx->bottom || mx->right || mx->left) { if (mx->screen) ft_tofile(mx->data); if (mx->top) ft_top(&mx->v, &mx->map); if (mx->bottom) ft_bottom(&mx->v, &mx->map); if (mx->left) ft_left(&mx->v); if (mx->right) ft_right(&mx->v); ft_display(mx, &mx->map, &mx->v); } return (0); }
void ft_amp(t_parser *parser, t_data *d) { t_id *tmp; t_id *second; t_id *first; tmp = d->child; ft_add_process(d, d->nb_process, ft_strdup(parser->left->str), fork()); if (d->child == tmp) ft_left(parser, d); d->child->run = 1; first = d->child; if (parser->right) { ft_add_process(d, d->nb_process, ft_strdup(parser->right->str), fork()); if (d->child == first) ft_right(parser, d); second = d->child; ft_printf("[%d]\t%d\n", d->child->nb, d->child->pid); waitpid(second->pid, &second->id, WUNTRACED); waitpid(second->pid, &second->id, WUNTRACED); } }