Lines Matching refs:direntry
441 static char is_free(const direntry_t* direntry) in is_free() argument
443 return direntry->name[0] == DIR_DELETED || direntry->name[0] == DIR_FREE; in is_free()
446 static char is_volume_label(const direntry_t* direntry) in is_volume_label() argument
448 return direntry->attributes == 0x28; in is_volume_label()
451 static char is_long_name(const direntry_t* direntry) in is_long_name() argument
453 return direntry->attributes == 0xf; in is_long_name()
456 static char is_short_name(const direntry_t* direntry) in is_short_name() argument
458 return !is_volume_label(direntry) && !is_long_name(direntry) in is_short_name()
459 && !is_free(direntry); in is_short_name()
462 static char is_directory(const direntry_t* direntry) in is_directory() argument
464 return direntry->attributes & 0x10 && direntry->name[0] != DIR_DELETED; in is_directory()
467 static inline char is_dot(const direntry_t* direntry) in is_dot() argument
469 return is_short_name(direntry) && direntry->name[0] == '.'; in is_dot()
472 static char is_file(const direntry_t* direntry) in is_file() argument
474 return is_short_name(direntry) && !is_directory(direntry); in is_file()
477 static inline uint32_t begin_of_direntry(const direntry_t* direntry) in begin_of_direntry() argument
479 return le16_to_cpu(direntry->begin)|(le16_to_cpu(direntry->begin_hi)<<16); in begin_of_direntry()
482 static inline uint32_t filesize_of_direntry(const direntry_t* direntry) in filesize_of_direntry() argument
484 return le32_to_cpu(direntry->size); in filesize_of_direntry()
487 static void set_begin_of_direntry(direntry_t* direntry, uint32_t begin) in set_begin_of_direntry() argument
489 direntry->begin = cpu_to_le16(begin & 0xffff); in set_begin_of_direntry()
490 direntry->begin_hi = cpu_to_le16((begin >> 16) & 0xffff); in set_begin_of_direntry()
748 direntry_t* direntry; in read_directory() local
803 direntry = create_short_and_long_name(s, i, entry->d_name, 0); in read_directory()
805 direntry = array_get(&(s->directory), is_dot ? i : i + 1); in read_directory()
807 direntry->attributes=(S_ISDIR(st.st_mode)?0x10:0x20); in read_directory()
808 direntry->reserved[0]=direntry->reserved[1]=0; in read_directory()
809 direntry->ctime=fat_datetime(st.st_ctime,1); in read_directory()
810 direntry->cdate=fat_datetime(st.st_ctime,0); in read_directory()
811 direntry->adate=fat_datetime(st.st_atime,0); in read_directory()
812 direntry->begin_hi=0; in read_directory()
813 direntry->mtime=fat_datetime(st.st_mtime,1); in read_directory()
814 direntry->mdate=fat_datetime(st.st_mtime,0); in read_directory()
816 set_begin_of_direntry(direntry, first_cluster_of_parent); in read_directory()
818 set_begin_of_direntry(direntry, first_cluster); in read_directory()
820 direntry->begin=0; /* do that later */ in read_directory()
827 direntry->size=cpu_to_le32(S_ISDIR(st.st_mode)?0:st.st_size); in read_directory()
859 direntry = array_get_next(&(s->directory)); in read_directory()
860 memset(direntry,0,sizeof(direntry_t)); in read_directory()
880 direntry = array_get(&(s->directory), mapping->dir_index); in read_directory()
881 set_begin_of_direntry(direntry, mapping->begin); in read_directory()
973 direntry_t* direntry = array_get(&(s->directory), in init_directories() local
977 set_begin_of_direntry(direntry, mapping->begin); in init_directories()
1429 static void print_direntry(const direntry_t* direntry) in print_direntry() argument
1434 fprintf(stderr, "direntry %p: ", direntry); in print_direntry()
1435 if(!direntry) in print_direntry()
1437 if(is_long_name(direntry)) { in print_direntry()
1438 unsigned char* c=(unsigned char*)direntry; in print_direntry()
1452 ADD_CHAR(direntry->name[i]); in print_direntry()
1456 direntry->attributes, in print_direntry()
1457 begin_of_direntry(direntry),le32_to_cpu(direntry->size)); in print_direntry()
1674 const direntry_t* direntry) in parse_long_name() argument
1677 const unsigned char* pointer = (const unsigned char*)direntry; in parse_long_name()
1679 if (!is_long_name(direntry)) in parse_long_name()
1735 long_file_name* lfn, direntry_t* direntry) in parse_short_name() argument
1739 if (!is_short_name(direntry)) in parse_short_name()
1742 for (j = 7; j >= 0 && direntry->name[j] == ' '; j--); in parse_short_name()
1744 uint8_t c = direntry->name[i]; in parse_short_name()
1748 lfn->name[i] = qemu_tolower(direntry->name[i]); in parse_short_name()
1750 lfn->name[i] = direntry->name[i]; in parse_short_name()
1754 for (j = 2; j >= 0 && direntry->name[8 + j] == ' '; j--) { in parse_short_name()
1760 uint8_t c = direntry->name[8 + j]; in parse_short_name()
1859 get_cluster_count_for_direntry(BDRVVVFATState* s, direntry_t* direntry, const char* path) in get_cluster_count_for_direntry() argument
1882 uint32_t cluster_num = begin_of_direntry(direntry); in get_cluster_count_for_direntry()
1912 } else if (is_file(direntry)) in get_cluster_count_for_direntry()
1950 if (!was_modified && is_file(direntry)) { in get_cluster_count_for_direntry()
2343 direntry_t* direntry = array_get(&(s->directory), dir_index); in commit_mappings() local
2352 mapping->mode = (dir_index <= 0 || is_directory(direntry)) ? in commit_mappings()
2419 direntry_t* direntry = array_get(&(s->directory), dir_index); in commit_direntries() local
2420 uint32_t first_cluster = dir_index == 0 ? 0 : begin_of_direntry(direntry); in commit_direntries()
2429 assert(direntry); in commit_direntries()
2434 assert(dir_index == 0 || is_directory(direntry)); in commit_direntries()
2469 direntry = array_get(&(s->directory), current_dir_index); in commit_direntries()
2470 ret = vvfat_read(s->bs, cluster2sector(s, c), (uint8_t *)direntry, in commit_direntries()
2488 direntry = array_get(&(s->directory), first_dir_index + i); in commit_direntries()
2489 if (is_directory(direntry) && !is_dot(direntry)) { in commit_direntries()
2510 direntry_t* direntry = array_get(&(s->directory), dir_index); in commit_one_file() local
2511 uint32_t c = begin_of_direntry(direntry); in commit_one_file()
2514 uint32_t size = filesize_of_direntry(direntry); in commit_one_file()
2599 direntry_t* direntry = array_get(&(s->directory), mapping->dir_index); in check1() local
2600 assert(mapping->begin == begin_of_direntry(direntry) || mapping->first_mapping_index >= 0); in check1()
2615 direntry_t* direntry = array_get(&(s->directory), i); in check2() local
2617 if (is_short_name(direntry) && begin_of_direntry(direntry)) { in check2()
2618 mapping_t* mapping = find_mapping_for_cluster(s, begin_of_direntry(direntry)); in check2()
2620 assert(mapping->dir_index == i || is_dot(direntry)); in check2()
2621 assert(mapping->begin == begin_of_direntry(direntry) || is_dot(direntry)); in check2()
2690 direntry_t* direntry = array_get(&(s->directory), in handle_renames_and_mkdirs() local
2698 direntry_t *d = direntry + j; in handle_renames_and_mkdirs()