X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FFilesystems%2FFAT%2Ffatio.c;h=7bf62efc6c89b57311a8bc10fc17f5d005eaeb30;hb=b0da731b2d89b9dd58de2c98eaf6218a41a21920;hp=340ccf82548a47da9a7621544fe17b741836f978;hpb=53d12157a95444f260dbb5de6b04ef309a52e3c7;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/Filesystems/FAT/fatio.c b/KernelLand/Modules/Filesystems/FAT/fatio.c index 340ccf82..7bf62efc 100644 --- a/KernelLand/Modules/Filesystems/FAT/fatio.c +++ b/KernelLand/Modules/Filesystems/FAT/fatio.c @@ -20,14 +20,15 @@ Uint32 FAT_int_GetFatValue(tFAT_VolInfo *Disk, Uint32 cluster) Uint32 val = 0; Uint32 ofs; ENTER("pDisk xCluster", Disk, cluster); + Mutex_Acquire( &Disk->lFAT ); #if CACHE_FAT if( Disk->ClusterCount <= giFAT_MaxCachedClusters ) { val = Disk->FATCache[cluster]; - if(Disk->type == FAT12 && val == EOC_FAT12) val = -1; - if(Disk->type == FAT16 && val == EOC_FAT16) val = -1; - if(Disk->type == FAT32 && val == EOC_FAT32) val = -1; + if(Disk->type == FAT12 && val == EOC_FAT12) val = GETFATVALUE_EOC; + if(Disk->type == FAT16 && val == EOC_FAT16) val = GETFATVALUE_EOC; + if(Disk->type == FAT32 && val == EOC_FAT32) val = GETFATVALUE_EOC; } else { @@ -37,13 +38,13 @@ Uint32 FAT_int_GetFatValue(tFAT_VolInfo *Disk, Uint32 cluster) VFS_ReadAt(Disk->fileHandle, ofs+(cluster/2)*3, 3, &val); LOG("3 bytes at 0x%x are (Uint32)0x%x", ofs+(cluster/2)*3, val); val = (cluster & 1) ? (val>>12) : (val & 0xFFF); - if(val == EOC_FAT12) val = -1; + if(val == EOC_FAT12) val = GETFATVALUE_EOC; } else if(Disk->type == FAT16) { VFS_ReadAt(Disk->fileHandle, ofs+cluster*2, 2, &val); - if(val == EOC_FAT16) val = -1; + if(val == EOC_FAT16) val = GETFATVALUE_EOC; } else { VFS_ReadAt(Disk->fileHandle, ofs+cluster*4, 4, &val); - if(val == EOC_FAT32) val = -1; + if(val == EOC_FAT32) val = GETFATVALUE_EOC; } #if CACHE_FAT }