Пример #1
0
int					main(int ac, char **av)
{
	int				i;
	t_opt			*options;
	t_aabtree		*filetree;
	t_aabtree		*dirtree;

	filetree = NULL;
	dirtree = NULL;
	if (init_opt(&options) == -1)
		return (-1);
	if ((i = get_opt(options, ac, av)) == ac)
	{
		ft_ls_dir(".", 0, options);
		return (0);
	}
	else if (i == -1)
		return (-1);
	fill_arg_trees(&filetree, &dirtree, ac - i, av + i);
	ft_ls_filetree(filetree, options);
	if (filetree && dirtree)
		ft_putchar('\n');
	ft_ls_dirtree(dirtree, options);
	return (0);
}
Пример #2
0
void		ft_earth_prog(t_flag flag, t_lst *path, int mdir)
{
	DIR		*dir;
	t_lst	*cur;
	t_lst	*directo;
	t_lst	*file;

	cur = path;
	directo = NULL;
	file = NULL;
	while (cur)
	{
		if ((dir = opendir(cur->content)) == NULL)
			errno != ENOTDIR ? ft_basic_error("ft_ls: ", cur->content, 0) :
				ft_lstpushback(&file, cur->content, cur->content_len);
		else
		{
			ft_lstpushback(&directo, cur->content, cur->content_len);
			if ((closedir(dir)) == -1)
				ft_basic_error("ft_ls: ", cur->content, 0);
		}
		cur = cur->next;
	}
	file ? ft_ls_file(flag, file) : NULL;
	file && directo ? ft_putchar('\n') : NULL;
	directo ? ft_ls_dir(flag, directo, mdir) : NULL;
}
Пример #3
0
void	ft_read_args(t_options *list, int argc, char **argv)
{
	int			i;
	int			ret;
	DIR			*ls_dir;
	char		*path;

	i = 0;
	while (++i < argc && argv[i][0] == '-')
	{
		if (ft_check_args(argv[i], list) == 0)
			return ;
	}
	while (i < argc)
	{
		if ((ret = ft_is_valid_dir(argv[i], &ls_dir, &path)) >= 0)
		{
			ft_print_dirname(i, argc, argv[i]);
			ft_ls_dir(ls_dir, list, ret, path);
			closedir(ls_dir);
		}
		i++;
	}
	if (argv[i - 1][0] == '-')
		ft_ls_current(list);
}
Пример #4
0
void	ft_ls_current(t_options *list)
{
	int		ret;
	DIR		*ls_dir;
	char	*path;

	ret = ft_is_valid_dir(".", &ls_dir, &path);
	ft_ls_dir(ls_dir, list, ret, path);
}