void add_while_card(t_tree **tree, char *dir, t_shell *shell) { DIR *dirp; struct dirent *files; if (dir[0] == '\0') dir = ft_strdup(shell->get_pwd); if (is_directory(dir)) { files = malloc(sizeof(struct dirent)); dirp = open_directory(dir); get_end_tree(*tree)->cmd = ft_strjoin(get_end_tree(*tree)->cmd, " "); while ((files = readdir(dirp)) != 0) { if (files->d_name[0] == '.') continue ; if (ft_strcmp(shell->get_pwd, dir) != 0) get_end_tree(*tree)->cmd = ft_strjoin(\ get_end_tree(*tree)->cmd, dir); get_end_tree(*tree)->cmd = ft_strjoin(ft_strjoin(\ get_end_tree(*tree)->cmd, files->d_name), " "); } get_end_tree(*tree)->cmd[ft_strlen(\ get_end_tree(*tree)->cmd) - 1] = '\0'; } }
int prepar_tree_suite(char ***tmp, t_tree **tree, t_shell *shell, int i) { char **cmd; cmd = *tmp; if (get_end_tree(*tree) && cmd[i][ft_strlen(cmd[i]) - 1] == '*') { add_while_card(tree, ft_strndup(cmd[i], ft_strlen(cmd[i]) - 1), shell); (*tmp)[i] = ""; return (1); } else if (get_end_tree(*tree) != NULL && get_end_tree(*tree)->prio == '.') get_end_tree(*tree)->cmd = ft_strjoin(ft_strjoin(\ get_end_tree(*tree)->cmd, " "), cmd[i]); else create_tree(cmd[i], tree, ".", 0); return (0); }
t_tree *split_prio(char *cmd) { t_tree *p_tree; t_tree *tmp; short n_node; char *current_prio; p_tree = NULL; n_node = get_total_node(cmd, 0, -1, 0); while (n_node > 0) { get_current_id_prio(1); current_prio = cmd; cmd += get_prio(&cmd, 0, -1, 0); tmp = get_end_null_tree(p_tree); tmp = create_tree(get_end_tree(p_tree), current_prio, \ get_current_id_prio(0)); if (!p_tree) p_tree = tmp; n_node--; } return (p_tree); }