Fixing diskwrite bug

This commit is contained in:
notsomeidiot123 2024-10-08 14:48:01 -04:00
parent 943641df74
commit 7a94090b55
1 changed files with 5 additions and 2 deletions

View File

@ -145,6 +145,7 @@ int create_file(char *path, fat_info *info, FILE *file){
verbose && printf("Failed to read from file %s, skippping\n", path);
return 0;
}
verbose && printf("Read %d bytes from ifile\n", ifsize);
//create file in root dir
file_t dirent = {0};
int extoffset = 0;
@ -158,14 +159,16 @@ int create_file(char *path, fat_info *info, FILE *file){
dirent.size_bytes = ifsize;
verbose && printf("Writing %u sectors\n", ifsize/(info->bpb.bytes_per_sector * info->bpb.sectors_per_cluster) + 1);
uint32_t last_cluster = 0;
for(int i = 0; i < ifsize/(info->bpb.bytes_per_sector * info->bpb.sectors_per_cluster) + 1; i++){
for(int i = 0; i <= ifsize/(info->bpb.bytes_per_sector * info->bpb.sectors_per_cluster); i++){
uint32_t cluster = find_free_cluster(info);
if(i == 0){
dirent.start_cluster_high = cluster >> 16;
dirent.start_cluster_low = cluster & 0xFFFF;
}
// printf("found free cluster\n");
write_sector(file, (info->bpb.reserved_sectors + info->bpb.fat_count * info->bpb.sectors_per_fat) + cluster * info->bpb.sectors_per_cluster, info->bpb.sectors_per_cluster, ifile_data);
write_sector(file, (info->bpb.reserved_sectors + info->bpb.fat_count * info->bpb.sectors_per_fat) + cluster * info->bpb.sectors_per_cluster, info->bpb.sectors_per_cluster, ifile_data + (info->bpb.bytes_per_sector * info->bpb.sectors_per_cluster) * i);
printf("cluster %d @ %p\n", i, ifile_data + (info->bpb.bytes_per_sector * info->bpb.sectors_per_fat * info->bpb.sectors_per_cluster) * i);
verbose && printf("wrote to sector %x %x sectors of data from buffer\n", (info->bpb.reserved_sectors + info->bpb.fat_count * info->bpb.sectors_per_fat) + cluster * info->bpb.sectors_per_cluster, info->bpb.sectors_per_cluster);
if(last_cluster != 0) write_cluster_value(info, cluster, last_cluster);
last_cluster = cluster;