Exemple #1
0
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';
	}
}
Exemple #2
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);
}
Exemple #3
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);
}