void ls_list_dir_cont(char *name, t_lst *dcontent, t_lst *subdirs, t_lsargs *args) { t_lst *el; t_uint sub_count; if ((name[0] != '.' || HCK2 || args->ndirs) || HCK) { if (args->flags & FLAG_l && dcontent) ls_l_tblock(dcontent); ls_display_cont(dcontent, args); } if (args->flags & FLAG_R) { if (subdirs && ((name[0] != '.' || !ft_strcmp(name, ".")) || HCK)) ft_putchar('\n'); if (args->flags & FLAG_r) ft_lstrev(&subdirs); while ((el = ft_lstpop(&subdirs)) != NULL) { if (((t_lsentry*)el->data)->name[0] != '.' || HCK) HCKLOL; sub_count = ls_list_dir((t_lsentry*)el->data, args); if ((el->next || (el->next && sub_count)) && FTDODO) ft_putchar('\n'); ft_lstdelone(&el, ls_del_ent); } } }
void ls_process_files(t_lsargs *args) { t_lst *elem; t_l_form forml; ls_l_form_init(&forml); if (args->flags & FLAG_l) ls_l_count(args->files, &forml, NULL); while ((elem = ft_lstpop(&(args->files))) != NULL) { if (((t_lsentry*)elem->data)->name[0] == '.' && !(args->flags & FLAG_a)) continue ; if (args->flags & FLAG_l) ls_pinfos((t_lsentry*)elem->data, &forml); if (ft_strcountc(((t_lsentry*)elem->data)->path, '/') >= 1) ls_ppath((t_lsentry*)elem->data); else ls_pname((t_lsentry*)elem->data); if (S_ISLNK(((t_lsentry*)elem->data)->infos.st_mode) && args->flags & FLAG_l) ls_l_plink(((t_lsentry*)elem->data)->path); ft_putchar('\n'); ft_lstdelone(&elem, ls_del_ent); } }
void ft_lstpushpop(t_list **a, t_list **b) { t_list *temp; if (*a) { temp = ft_lstpop(a); if (temp != NULL) ft_lstpush(b, temp); } }
void ls_process_args(t_lsargs *args) { t_lst *elem; elem = NULL; while ((elem = ft_lstpop(&(args->unk))) != NULL) ls_error((char*)elem->data, FALSE); if (args->nfiles) ls_process_files(args); if (args->ndirs) { if (args->nfiles) ft_putchar('\n'); ls_process_dirs(args); } }
void ls_process_dirs(t_lsargs *args) { t_lst *elem; elem = NULL; while ((elem = ft_lstpop(&args->dirs))) { if (args->ndirs > 1 || args->nfiles || args->nunk) { ft_putstr(((t_lsentry*)elem->data)->path); ft_putchar(':'); ft_putchar('\n'); } ls_list_dir((t_lsentry*)elem->data, args); if (elem->next) ft_putchar('\n'); ft_lstdelone(&elem, NULL); } }
void ls_display_cont(t_lst *list, t_lsargs *args) { t_lst *el; t_l_form form; ls_l_form_init(&form); if (args->flags & FLAG_l) ls_l_count(list, &form, NULL); if (args->flags & FLAG_r) ft_lstrev(&list); while ((el = ft_lstpop(&(list))) != NULL) { if (((t_lsentry*)el->data)->name[0] == '.' && !(args->flags & FLAG_a)) continue ; if (args->flags & FLAG_l) ls_pinfos((t_lsentry*)el->data, &form); ls_pname((t_lsentry*)el->data); if (S_ISLNK(((t_lsentry*)el->data)->infos.st_mode) && args->flags & FLAG_l) ls_l_plink(((t_lsentry*)el->data)->path); ft_putchar('\n'); ft_lstdelone(&el, ls_del_ent); } }