extern int redir_right(char ***str) { char **cmd; char *fichier; int type; int pos_red; cmd = *str; pos_red = 0; fichier = NULL; while ((pos_red = get_next_redir_right(cmd, pos_red)) != -1) { if (cmd[pos_red + 1] == NULL || check_redir_right(cmd[pos_red + 1]) == FALSE) { my_printf("42sh: syntax error near unexprected token 'newline'\n"); return (FALSE); } fichier = my_strdup(cmd[pos_red + 1]); type = get_type_redir(cmd[pos_red]); cmd = my_remove_in_tab(my_remove_in_tab(cmd, pos_red), pos_red); } if (fichier != NULL) if (exec_redir_right(fichier, type) == FALSE) return (FALSE); *str = cmd; return (TRUE); }
int redir_right(t_vars *v) { t_vars *redir; t_redir *r_r; int exe; r_r = my_xmalloc(sizeof(*r_r)); redir = my_xmalloc(sizeof(*redir)); init_vars(redir); init_redir_simp(v, r_r, '>'); if (!check_nb(r_r) || !check_redir_right(redir, r_r)) { redir = free_t_vars(redir); r_r = free_redirs_vars(r_r); return (EXIT_FAILURE); } exe = do_r_r(redir, r_r); redir = free_t_vars(redir); r_r = free_redirs_vars(r_r); return (exe); }