Lines Matching defs:search

121     struct fat_dirsearch search;
218 dirsearch_initialize(struct fat_dirsearch *search, fat_direntry_t *parent)
220 memset(search, 0, sizeof(*search));
221 search->parent_direntry = parent;
225 dirsearch_wipe(struct fat_dirsearch *search, struct fat_mount *mount)
228 if (search->data) {
229 if (!search->parent_direntry && mount->fat_type == FAT_TYPE_FAT16) {
231 err = release_block(mount, search->data_key);
234 err = release_cluster(mount, search->data_key);
238 USER_PANIC_ERR(err, "could not release search data cache");
241 memset(search, 0, sizeof(*search));
325 next_f16_rootdir_block(struct fat_mount *mount, struct fat_dirsearch *search,
330 assert(!search->parent_direntry);
335 if (search->index >= search_end) {
340 size_t bytes_offset = search->index * fat_direntry_size;
343 FAT_DEBUG_F("search index %zu at block %zu + %zu",
344 search->index, block_index, block_offset);
346 if (!search->data || search->data_index != block_index) {
361 if (search->data) {
362 err = release_block(mount, search->data_key);
369 search->data = new_data;
370 search->data_index = block_index;
371 search->data_key = block;
374 *data = search->data + block_offset;
379 next_subdir_block(struct fat_mount *mount, struct fat_dirsearch *search,
384 assert(search->parent_direntry || mount->fat_type == FAT_TYPE_FAT32);
387 size_t bytes_offset = search->index * fat_direntry_size;
392 FAT_DEBUG_F("search index %zu at cluster %zu + %zu",
393 search->index, cluster_index, cluster_offset);
395 if (!search->data || search->data_index != cluster_index) {
400 if (search->parent_direntry) {
402 cluster = (uint32_t)fat_direntry_starth_rd(search->parent_direntry) << 16;
404 cluster += fat_direntry_start_rd(search->parent_direntry);
433 if (search->data) {
434 err = release_cluster(mount, search->data_key);
440 search->data = new_data;
441 search->data_index = cluster_index;
442 search->data_key = cluster;
445 *data = search->data + cluster_offset;
450 read_next_direntry(struct fat_mount *mount, struct fat_dirsearch *search,
458 for ( ; ; search->index++) {
459 FAT_DEBUG_F("checking search index %zu", search->index);
462 bool special_rootdir = !search->parent_direntry &&
465 err = next_f16_rootdir_block(mount, search, &entry_data);
468 err = next_subdir_block(mount, search, &entry_data);
535 search->index++;
568 struct fat_dirsearch search;
569 dirsearch_initialize(&search, parent);
578 err = read_next_direntry(mount, &search, dosfn, lfn_data,
581 dirsearch_wipe(&search, mount);
634 dirsearch_wipe(&search, mount);
932 dirsearch_initialize(&new_handle->search, &new_handle->h.dirent);
953 FAT_DEBUG_F("handle->search.index = %zu", handle->search.index);
962 err = read_next_direntry(mount, &handle->search, dosfn, lfn_data,
1021 dirsearch_wipe(&handle->search, mount);