X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FFilesystems%2FFAT%2Ffatio.c;h=7bf62efc6c89b57311a8bc10fc17f5d005eaeb30;hb=e2eabccf7e2b996ca9294946607abefc11b2fefe;hp=0652f0fa810e67b92d67b89d724588bfc116154b;hpb=97159caf60a26cff3cc8f52e050a44d2492430f8;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/Filesystems/FAT/fatio.c b/KernelLand/Modules/Filesystems/FAT/fatio.c index 0652f0fa..7bf62efc 100644 --- a/KernelLand/Modules/Filesystems/FAT/fatio.c +++ b/KernelLand/Modules/Filesystems/FAT/fatio.c @@ -5,7 +5,7 @@ * fatio.c * - FAT Manipulation and Cluster IO */ -#define DEBUG 1 +#define DEBUG 0 #include #include #include "common.h" @@ -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 }