t_infos *ft_arglentry(t_infos *llist, t_opt *option, char *name, t_err **error) { t_infos *node; struct stat lsts; struct stat sts; if (!(node = (t_infos*)malloc(sizeof(t_infos)))) print_err(1, '-'); node->name = ft_strdup(name); if (lstat(node->name, &lsts) == -1) { *error = ft_fillerror(name, error); free(node); return (llist); } node->path = ft_strdup(name); node->type = typedefineargs(lsts.st_mode); if (option->flag & FLAG_L) ft_fillstats(node, &lsts, option); else if (node->type == 5) if (stat(node->path, &sts) != -1) node->type = typedefineargs(sts.st_mode); llist = (!llist) ? node : ft_sort(llist, node, option->flag); return (llist); }
t_infos *ft_newl(t_infos *llist, struct dirent *ret, t_opt *option, char *path) { t_infos *node; struct stat buf; if (!(node = (t_infos*)malloc(sizeof(t_infos)))) print_err(1, '-'); ft_putnull(node); ft_bzero(node->rights, 12); node->path = createpath(ret->d_name, path); if (lstat(node->path, &buf) == -1) perror("Erreur de lstat ="); node->type = typedefine(ret->d_type); if (node->type == 0) node->type = typedefineargs(buf.st_mode); node->name = ft_strdup(ret->d_name); if (check_long_flag(option) == 1) ft_fillstats(node, &buf, option); if (!llist) { llist = node; node->nxt = NULL; } else llist = ft_sort(llist, node, option->flag); return (llist); }
void ft_all(char *dir) { t_env env; env.list = ft_all_lst(ft_all_sz(dir, &env), dir); env.list = ft_sort(env); ft_all_print(env, dir); }
void ft_sort_by_size(t_tree **atree, t_tree *elem) { t_lui size2; size2 = get_size1(elem->data); if (!(*atree) && elem->data[0]) *atree = elem; else if (*atree && elem->data[0]) { if (get_size1((*atree)->data) > size2) { while ((*atree)->right && get_size1((*atree)->data) > size2) *atree = (*atree)->right; } else if (get_size1((*atree)->data) < size2) { while ((*atree)->left && get_size1((*atree)->data) < size2) (*atree) = (*atree)->left; } ft_sort(atree, elem, size2); } }