void ft_lstsort_time(t_dir **begin_list, t_option *op) { t_dir *temp_list; t_dir *rt_list; time_t res; temp_list = *begin_list; while (temp_list) { rt_list = temp_list->next; while (rt_list != NULL) { res = temp_list->buf.st_mtime - rt_list->buf.st_mtime; if (op->date == 2) res = temp_list->buf.st_birthtime - rt_list->buf.st_birthtime; else if (op->date == 3) res = temp_list->buf.st_atime - rt_list->buf.st_atime; if (res > 0 && op->rev == 1) ft_lstswap(&temp_list, &rt_list); else if (res < 0 && op->rev == 0) ft_lstswap(&temp_list, &rt_list); else if (res == 0) ft_swap_name(temp_list, rt_list, op); rt_list = rt_list->next; } temp_list = temp_list->next; } }
void ft_swap_name(t_dir *a, t_dir *b, t_option *op) { int res; res = ft_strcmp(a->name, b->name); if (res < 0 && op->rev == 1) ft_lstswap(&a, &b); else if (res > 0 && op->rev == 0) ft_lstswap(&a, &b); }
void ft_lstsort_name(t_dir **begin_list, t_option *op) { t_dir *temp_list; t_dir *rt_list; int res; temp_list = *begin_list; while (temp_list) { rt_list = temp_list->next; while (rt_list != NULL) { res = ft_strcmp(rt_list->name, temp_list->name); if ((res < 0 && op->rev == 0) || op->stop == 1) ft_lstswap(&temp_list, &rt_list); else if (res > 0 && op->rev == 1) ft_lstswap(&temp_list, &rt_list); rt_list = rt_list->next; } temp_list = temp_list->next; } }
void ft_lstsort(t_list *lst, int (*cmp)(t_list *, t_list *)) { t_list *node_i; t_list *node_j; node_i = lst; while (node_i) { node_j = node_i->next; while (node_j) { if ((*cmp)(node_i, node_j) > 0) ft_lstswap(node_i, node_j); node_j = node_j->next; } node_i = node_i->next; } }
void ft_lstsort(t_list *lst, int (*f)(t_list *, t_list *)) { int sorted; t_list *cur; sorted = 0; while (sorted == 0) { cur = lst; sorted = 1; while (cur) { if (f(cur, cur->next) == 1) { ft_lstswap(cur, cur->next); sorted = 0; } cur = cur->next; } } }