/* Returns non-zero on error. */ static int reset_dircache(void) { fsdata_free(dcache_size); dcache_size = fsdata_create(0, 1); fsdata_free(dcache_nitems); dcache_nitems = fsdata_create(0, 1); return (dcache_size == NULL || dcache_nitems == NULL); }
/* Fills the list with entries of the view in hierarchical order (pre-order tree * traversal). */ static void list_view_entries(const FileView *view, strlist_t *list) { int i; fsdata_t *const tree = fsdata_create(0, 0); for(i = 0; i < view->list_rows; ++i) { if(!fentry_is_dir(&view->dir_entry[i])) { char full_path[PATH_MAX]; void *data = &view->dir_entry[i]; get_full_path_of(&view->dir_entry[i], sizeof(full_path), full_path); fsdata_set(tree, full_path, &data, sizeof(data)); } } fsdata_traverse(tree, &append_valid_nodes, list); fsdata_free(tree); }