+static void filelist_recursive_append_full(GList **list, GList *dirs, SortType method, gboolean ascend)
+{
+ GList *work;
+
+ work = dirs;
+ while (work)
+ {
+ FileData *fd = (FileData *)(work->data);
+ GList *f;
+ GList *d;
+
+ if (filelist_read(fd, &f, &d))
+ {
+ f = filelist_filter(f, FALSE);
+ f = filelist_sort_full(f, method, ascend, (GCompareFunc) filelist_sort_file_cb);
+ *list = g_list_concat(*list, f);
+
+ d = filelist_filter(d, TRUE);
+ d = filelist_sort_path(d);
+ filelist_recursive_append_full(list, d, method, ascend);
+ filelist_free(d);
+ }
+
+ work = work->next;
+ }
+}
+