static char *check_access(t_tree *tree, t_env *env) { char **tab; int i_tab; char *cmd_and_path; i_tab = -1; if ((tab = my_str_to_tab(env->value, ':')) == NULL) return (NULL); while (tab[++i_tab] != 0) { if ((cmd_and_path = my_strcat(tab[i_tab], tree->lexer->content, 0)) == NULL) return (NULL); if (access(cmd_and_path, F_OK) == -1) free(cmd_and_path); else { free_tab(tab); return (cmd_and_path); } } free_tab(tab); return (NULL); }
void test_exit(char *buffer, t_list *list) { char **tab; tab = NULL; if (buffer == NULL || buffer == 0) { free(buffer); write(1, "exit\n", 5); delete_list(&list); exit(0); } tab = my_str_to_tab(buffer, ' ', 9); if (tab[0] != NULL) if (my_strcmp_exit(tab[0], "exit")) { if (!tab[1] || (tab[1] && !tab[2])) { delete_list(&list); free(buffer); write(1, "exit\n", 5); free(tab); exit(my_getnbr(tab[1])); } write(2, "exit: Expression Syntax.\n", 25); } free(tab); }