/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_ls.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/07 14:57:21 by jhalford #+# #+# */ /* Updated: 2016/11/25 12:15:59 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "ft_ls.h" void ft_ls_dirs(t_list *dir, int opts) { t_list *dir_r; t_list *ent; t_lsdata *dirdata; t_list *tmp; ft_ent_sort(&dir, opts); ent = NULL; while (dir) { dirdata = dir->content; tmp = dir; dir = dir->next; ft_lstdel(&ent, &ft_ent_free); ent = ft_dir_get_ents(dirdata, &opts); ft_ls_files(&ent, &dir, dirdata, &opts); ft_lstdelone(&tmp, &ft_ent_free); if (opts & OPTS_UR && !(opts & OPTS_LD)) { dir_r = ft_ent_get_dirs(&ent); ft_lst_merge(&dir_r, dir); dir = dir_r; } } ft_lstdel(&ent, &ft_ent_free); } void ft_ls_files(t_list **ent, t_list **dir, t_lsdata *topdir, int *opts) { if (ent) { if (topdir) ft_ent_filter(ent, *opts); ft_ent_sort(ent, *opts); ft_ent_print(*ent, opts, topdir, *dir); } }