• Home
  • Raw
  • Download

Lines Matching refs:itr

212 static int new_dir_table(fat_itr *itr);
213 static int flush_dir(fat_itr *itr);
220 fill_dir_slot(fat_itr *itr, const char *l_name) in fill_dir_slot() argument
228 checksum = mkcksum(itr->dent->name, itr->dent->ext); in fill_dir_slot()
243 memcpy(itr->dent, slotptr, sizeof(dir_slot)); in fill_dir_slot()
247 if (itr->remaining == 0) in fill_dir_slot()
248 flush_dir(itr); in fill_dir_slot()
251 if (!fat_itr_next(itr)) in fill_dir_slot()
252 if (!itr->dent && in fill_dir_slot()
253 (!itr->is_root || itr->fsdata->fatsize == 32) && in fill_dir_slot()
254 new_dir_table(itr)) in fill_dir_slot()
472 flush_dir(fat_itr *itr) in flush_dir() argument
474 fsdata *mydata = itr->fsdata; in flush_dir()
477 if (!itr->is_root || mydata->fatsize == 32) in flush_dir()
478 return set_cluster(mydata, itr->clust, itr->block, in flush_dir()
481 sect_offset = itr->clust * mydata->clust_size; in flush_dir()
487 return set_sectors(mydata, startsect, itr->block, in flush_dir()
626 static int new_dir_table(fat_itr *itr) in new_dir_table() argument
628 fsdata *mydata = itr->fsdata; in new_dir_table()
633 set_fatent_value(mydata, itr->clust, dir_newclust); in new_dir_table()
641 itr->clust = dir_newclust; in new_dir_table()
642 itr->next_clust = dir_newclust; in new_dir_table()
647 memset(itr->block, 0x00, bytesperclust); in new_dir_table()
649 itr->dent = (dir_entry *)itr->block; in new_dir_table()
650 itr->last_cluster = 1; in new_dir_table()
651 itr->remaining = bytesperclust / sizeof(dir_entry) - 1; in new_dir_table()
965 static dir_entry *find_directory_entry(fat_itr *itr, char *filename) in find_directory_entry() argument
969 while (fat_itr_next(itr)) { in find_directory_entry()
971 if (!strcasecmp(filename, itr->name)) in find_directory_entry()
973 else if (itr->name != itr->s_name && in find_directory_entry()
974 !strcasecmp(filename, itr->s_name)) in find_directory_entry()
980 if (itr->dent->name[0] == '\0') in find_directory_entry()
983 return itr->dent; in find_directory_entry()
987 if (!itr->dent && in find_directory_entry()
988 (!itr->is_root || itr->fsdata->fatsize == 32) && in find_directory_entry()
989 new_dir_table(itr)) in find_directory_entry()
991 itr->dent = NULL; in find_directory_entry()
1078 fat_itr *itr = NULL; in file_fat_write_at() local
1102 itr = malloc_cache_aligned(sizeof(fat_itr)); in file_fat_write_at()
1103 if (!itr) { in file_fat_write_at()
1108 ret = fat_itr_root(itr, &datablock); in file_fat_write_at()
1114 ret = fat_itr_resolve(itr, parent, TYPE_DIR); in file_fat_write_at()
1120 retdent = find_directory_entry(itr, l_filename); in file_fat_write_at()
1123 if (fat_itr_isdir(itr)) { in file_fat_write_at()
1143 if (itr->is_root) { in file_fat_write_at()
1152 if (!itr->dent) { in file_fat_write_at()
1164 memset(itr->dent, 0, sizeof(*itr->dent)); in file_fat_write_at()
1167 set_name(itr->dent, filename); in file_fat_write_at()
1170 if (fill_dir_slot(itr, filename)) { in file_fat_write_at()
1176 fill_dentry(itr->fsdata, itr->dent, filename, 0, size, 0x20); in file_fat_write_at()
1178 retdent = itr->dent; in file_fat_write_at()
1198 ret = flush_dir(itr); in file_fat_write_at()
1207 free(itr); in file_fat_write_at()
1217 static int fat_dir_entries(fat_itr *itr) in fat_dir_entries() argument
1232 fat_itr_child(dirs, itr); in fat_dir_entries()
1254 static int delete_dentry(fat_itr *itr) in delete_dentry() argument
1256 fsdata *mydata = itr->fsdata; in delete_dentry()
1257 dir_entry *dentptr = itr->dent; in delete_dentry()
1275 if (flush_dir(itr)) { in delete_dentry()
1286 fat_itr *itr = NULL; in fat_unlink() local
1304 itr = malloc_cache_aligned(sizeof(fat_itr)); in fat_unlink()
1305 if (!itr) { in fat_unlink()
1311 ret = fat_itr_root(itr, &fsdata); in fat_unlink()
1317 ret = fat_itr_resolve(itr, dirname, TYPE_DIR); in fat_unlink()
1324 if (!find_directory_entry(itr, basename)) { in fat_unlink()
1330 if (fat_itr_isdir(itr)) { in fat_unlink()
1331 n_entries = fat_dir_entries(itr); in fat_unlink()
1344 ret = delete_dentry(itr); in fat_unlink()
1348 free(itr); in fat_unlink()
1359 fat_itr *itr = NULL; in fat_mkdir() local
1383 itr = malloc_cache_aligned(sizeof(fat_itr)); in fat_mkdir()
1384 if (!itr) { in fat_mkdir()
1389 ret = fat_itr_root(itr, &datablock); in fat_mkdir()
1395 ret = fat_itr_resolve(itr, parent, TYPE_DIR); in fat_mkdir()
1401 retdent = find_directory_entry(itr, l_dirname); in fat_mkdir()
1408 if (itr->is_root) { in fat_mkdir()
1417 if (!itr->dent) { in fat_mkdir()
1423 memset(itr->dent, 0, sizeof(*itr->dent)); in fat_mkdir()
1426 set_name(itr->dent, dirname); in fat_mkdir()
1427 fill_dir_slot(itr, dirname); in fat_mkdir()
1430 fill_dentry(itr->fsdata, itr->dent, dirname, 0, 0, in fat_mkdir()
1433 retdent = itr->dent; in fat_mkdir()
1452 set_start_cluster(mydata, &dotdent[1], itr->start_clust); in fat_mkdir()
1477 ret = flush_dir(itr); in fat_mkdir()
1484 free(itr); in fat_mkdir()