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); }
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; }
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); }
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); }