userlibandfileserver/fileserver/sfat/sl_check.cpp
changeset 15 4122176ea935
parent 0 a41df078684a
--- a/userlibandfileserver/fileserver/sfat/sl_check.cpp	Mon Oct 19 15:55:17 2009 +0100
+++ b/userlibandfileserver/fileserver/sfat/sl_check.cpp	Mon Dec 21 16:14:42 2009 +0000
@@ -15,6 +15,14 @@
 // 
 //
 
+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+//!!
+//!! WARNING!! DO NOT edit this file !! '\sfat' component is obsolete and is not being used. '\sfat32'replaces it
+//!!
+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
 #include "sl_std.h"
 #include "sl_scandrv.h"
 
@@ -33,66 +41,66 @@
 
 TInt CCheckFatTable::MaxFatIndex() const
     {   
-	__ASSERT_DEBUG((TUint)iMaxFatIndex>=KFatFirstSearchCluster, Fault(ECheckFatIndexZero));
-	return(iMaxFatIndex);
-	}
+    __ASSERT_DEBUG((TUint)iMaxFatIndex>=KFatFirstSearchCluster, Fault(ECheckFatIndexZero));
+    return(iMaxFatIndex);
+    }
 
 
 CCheckFatTable* CCheckFatTable::NewL(CFatMountCB* aOwner)
 //
 // Create a CCheckFatTable
 //
-	{
-	CCheckFatTable* fatTable;
-	fatTable=new(ELeave) CCheckFatTable(aOwner);
-	return(fatTable);
-	}
+    {
+    CCheckFatTable* fatTable;
+    fatTable=new(ELeave) CCheckFatTable(aOwner);
+    return(fatTable);
+    }
 
 
 CCheckFatTable::CCheckFatTable(CFatMountCB* aOwner)
 //
 // Constructor
 //
-	{
-	iOwner=aOwner;
-	}
+    {
+    iOwner=aOwner;
+    }
 
 CCheckFatTable::~CCheckFatTable()
 //
 // Destructor
 //
-	{
-	User::Free(iCheckFat);
-	}
+    {
+    User::Free(iCheckFat);
+    }
 
 
 void CCheckFatTable::InitializeL()
 //
 // Initialize the check fat table
 //
-	{
-	__PRINT(_L("CCheckFatTable::InitializeL"));
+    {
+    __PRINT(_L("CCheckFatTable::InitializeL"));
 
-	TInt fatSize=iOwner->FatSizeInBytes();
+    TInt fatSize=iOwner->FatSizeInBytes();
 
-	if(iCheckFat==NULL)
-		iCheckFat=(TUint8*)User::AllocL(fatSize);
-	else
-		iCheckFat=(TUint8*)User::ReAllocL(iCheckFat,fatSize);
-	Mem::FillZ(iCheckFat,fatSize);
-	iMaxFatIndex=iOwner->UsableClusters()+1;
-	if(iOwner->Is16BitFat())
-		{
-		__ASSERT_ALWAYS(iMaxFatIndex>0 && iMaxFatIndex<EOF_16Bit && !IsEof16Bit(iMaxFatIndex),User::Leave(KErrCorrupt));
-		}
-	else
-		{
-		__ASSERT_ALWAYS(iMaxFatIndex>0 && iMaxFatIndex<EOF_12Bit && !IsEof12Bit(iMaxFatIndex),User::Leave(KErrCorrupt));
-		}
-	WriteMediaDescriptor();
-	
-	__PRINT2(_L("fatSize=%d,iCheckFat=0x%x"),fatSize,iCheckFat);
-	}
+    if(iCheckFat==NULL)
+        iCheckFat=(TUint8*)User::AllocL(fatSize);
+    else
+        iCheckFat=(TUint8*)User::ReAllocL(iCheckFat,fatSize);
+    Mem::FillZ(iCheckFat,fatSize);
+    iMaxFatIndex=iOwner->UsableClusters()+1;
+    if(iOwner->Is16BitFat())
+        {
+        __ASSERT_ALWAYS(iMaxFatIndex>0 && iMaxFatIndex<EOF_16Bit && !IsEof16Bit(iMaxFatIndex),User::Leave(KErrCorrupt));
+        }
+    else
+        {
+        __ASSERT_ALWAYS(iMaxFatIndex>0 && iMaxFatIndex<EOF_12Bit && !IsEof12Bit(iMaxFatIndex),User::Leave(KErrCorrupt));
+        }
+    WriteMediaDescriptor();
+    
+    __PRINT2(_L("fatSize=%d,iCheckFat=0x%x"),fatSize,iCheckFat);
+    }
 
 
 /**
@@ -102,198 +110,198 @@
 //
 // Flush iCheckFat to the media, comparing each sector to corresponding 
 // sector in all fats (cf.CFixedCache::FlushL)
-//	
-	{
-	TBool bErrFound = EFalse;
+//  
+    {
+    TBool bErrFound = EFalse;
     
     __PRINT(_L("CCheckFatTable::FlushL()"));
-	HBufC8* hBuf=HBufC8::New(KMaxBufferSize);
-	if (hBuf==NULL)
-		hBuf=HBufC8::NewL(KMaxBufferSize/4);
-	CleanupStack::PushL(hBuf);
+    HBufC8* hBuf=HBufC8::New(KMaxBufferSize);
+    if (hBuf==NULL)
+        hBuf=HBufC8::NewL(KMaxBufferSize/4);
+    CleanupStack::PushL(hBuf);
 
-	TUint8* ptr=(TUint8*)hBuf->Ptr();
-	TInt maxSize=hBuf->Des().MaxSize();
+    TUint8* ptr=(TUint8*)hBuf->Ptr();
+    TInt maxSize=hBuf->Des().MaxSize();
 
-	TPtr8 fatBuffer(ptr,maxSize);
-	TInt fatSize=iOwner->FatSizeInBytes();
-	TInt remainder=fatSize;
-	TInt offset=iOwner->StartOfFatInBytes();
-	TUint8* dataPtr=iCheckFat;
+    TPtr8 fatBuffer(ptr,maxSize);
+    TInt fatSize=iOwner->FatSizeInBytes();
+    TInt remainder=fatSize;
+    TInt offset=iOwner->StartOfFatInBytes();
+    TUint8* dataPtr=iCheckFat;
     TFatDriveInterface& drive = iOwner->DriveInterface();
-	TInt fatNumber=iOwner->NumberOfFats();
-	
-	while(remainder)
-		{
-		TInt s=Min(fatBuffer.MaxSize(),remainder);
-		TInt fatCount=fatNumber;
-		TInt fatPos=0;
-		while(fatCount)
-			{
-			TInt fatOffset=offset+fatPos;
-			User::LeaveIfError(drive.ReadCritical(fatOffset,s,fatBuffer));
-			TInt rem2=s;
-			TInt offset2=fatOffset;
-			TUint8* dataPtr2=dataPtr;
-			TInt bufOffset=0;
-			while(rem2)
-				{
-				TInt s2=Min(rem2,512);
-				TInt r=Mem::Compare(dataPtr2,s2,fatBuffer.Ptr()+bufOffset,s2);
-				if (r!=0)
-					{
-					bErrFound = ETrue;
+    TInt fatNumber=iOwner->NumberOfFats();
+    
+    while(remainder)
+        {
+        TInt s=Min(fatBuffer.MaxSize(),remainder);
+        TInt fatCount=fatNumber;
+        TInt fatPos=0;
+        while(fatCount)
+            {
+            TInt fatOffset=offset+fatPos;
+            User::LeaveIfError(drive.ReadCritical(fatOffset,s,fatBuffer));
+            TInt rem2=s;
+            TInt offset2=fatOffset;
+            TUint8* dataPtr2=dataPtr;
+            TInt bufOffset=0;
+            while(rem2)
+                {
+                TInt s2=Min(rem2,512);
+                TInt r=Mem::Compare(dataPtr2,s2,fatBuffer.Ptr()+bufOffset,s2);
+                if (r!=0)
+                    {
+                    bErrFound = ETrue;
                     TPtrC8 dataBuf(dataPtr2,s2);
-					User::LeaveIfError(drive.WriteCritical(offset2,dataBuf));
-					}
-				rem2-=s2;
-				offset2+=s2;
-				dataPtr2+=s2;
-				bufOffset+=s2;
-				}
-			--fatCount;
-			fatPos+=fatSize;
-			}
-		offset+=s;
-		dataPtr+=s;
-		remainder-=s;
-		}
+                    User::LeaveIfError(drive.WriteCritical(offset2,dataBuf));
+                    }
+                rem2-=s2;
+                offset2+=s2;
+                dataPtr2+=s2;
+                bufOffset+=s2;
+                }
+            --fatCount;
+            fatPos+=fatSize;
+            }
+        offset+=s;
+        dataPtr+=s;
+        remainder-=s;
+        }
 
-	CleanupStack::PopAndDestroy();
+    CleanupStack::PopAndDestroy();
 
     return bErrFound;
-	}
+    }
 
 void CCheckFatTable::WriteMediaDescriptor()
 //
 // Write media descriptor to first byte and 0xFF to
 // remaining bytes of first two entries
 //
-	{
-	__PRINT(_L("CCheckFatTable::WriteMediaDescriptor"));
-	iCheckFat[0]=KBootSectorMediaDescriptor;
-	iCheckFat[1]=0xFF;
-	iCheckFat[2]=0xFF;
-	if (iOwner->Is16BitFat())
-		iCheckFat[3]=0xFF;
-	}
+    {
+    __PRINT(_L("CCheckFatTable::WriteMediaDescriptor"));
+    iCheckFat[0]=KBootSectorMediaDescriptor;
+    iCheckFat[1]=0xFF;
+    iCheckFat[2]=0xFF;
+    if (iOwner->Is16BitFat())
+        iCheckFat[3]=0xFF;
+    }
 
 TInt CCheckFatTable::PosInBytes(TInt aFatIndex) const
 //
 // Return number of bytes into the fat
 //
-	{
-	TInt fatPosInBytes;
-	if (iOwner->Is16BitFat())
-		fatPosInBytes=aFatIndex<<1;
-	else
-		// this is used since 8-bit access will be used for reading/writing
-		fatPosInBytes=(aFatIndex*3>>1);
-	return(fatPosInBytes);
-	}
+    {
+    TInt fatPosInBytes;
+    if (iOwner->Is16BitFat())
+        fatPosInBytes=aFatIndex<<1;
+    else
+        // this is used since 8-bit access will be used for reading/writing
+        fatPosInBytes=(aFatIndex*3>>1);
+    return(fatPosInBytes);
+    }
 
 
 TInt CCheckFatTable::PosInIndex(TInt aBytePos) const
 //
 // Return index given byte position in fat
 //
-	{
-	if(iOwner->Is16BitFat())
-		return(aBytePos>>1);
-	else
-		return((aBytePos<<1)/3);
-	}
+    {
+    if(iOwner->Is16BitFat())
+        return(aBytePos>>1);
+    else
+        return((aBytePos<<1)/3);
+    }
 
 
 TInt CCheckFatTable::ReadL(TInt aFatIndex) const
 //
 // Read a value from the check fat
 //
-	{
-	__ASSERT_ALWAYS((TUint32)aFatIndex >=KFatFirstSearchCluster && aFatIndex<=MaxFatIndex(),User::Leave(KErrCorrupt));
-	TUint clusterVal;
-	if(iOwner->Is16BitFat())
-		clusterVal=*(TUint16*)(iCheckFat+PosInBytes(aFatIndex));
-	else
-		{
-		TUint8* pCluster=iCheckFat+PosInBytes(aFatIndex);
-		clusterVal=pCluster[0]|(pCluster[1]<<8);
-		TBool oddCluster=(aFatIndex)&1;
-		if(oddCluster)
-			clusterVal>>=4;
-		clusterVal&=0xFFF;
-		}
-	return(clusterVal);
-	}
+    {
+    __ASSERT_ALWAYS((TUint32)aFatIndex >=KFatFirstSearchCluster && aFatIndex<=MaxFatIndex(),User::Leave(KErrCorrupt));
+    TUint clusterVal;
+    if(iOwner->Is16BitFat())
+        clusterVal=*(TUint16*)(iCheckFat+PosInBytes(aFatIndex));
+    else
+        {
+        TUint8* pCluster=iCheckFat+PosInBytes(aFatIndex);
+        clusterVal=pCluster[0]|(pCluster[1]<<8);
+        TBool oddCluster=(aFatIndex)&1;
+        if(oddCluster)
+            clusterVal>>=4;
+        clusterVal&=0xFFF;
+        }
+    return(clusterVal);
+    }
 
 
 void CCheckFatTable::WriteL(TInt aFatIndex,TInt aValue)
 //
 // Write a value to the check fat
 //
-	{
-	if(iOwner->Is16BitFat())
-		__ASSERT_ALWAYS((TUint32)aFatIndex>=KFatFirstSearchCluster && aFatIndex<=MaxFatIndex() && aValue>=0 && aValue<=0xFFFF,User::Leave(KErrCorrupt));
-	else
-		__ASSERT_ALWAYS((TUint32)aFatIndex>=KFatFirstSearchCluster && aFatIndex<=MaxFatIndex() && aValue>=0 && aValue<=0xFFF,User::Leave(KErrCorrupt));
-	TUint8* p=(TUint8*)(iCheckFat+PosInBytes(aFatIndex));
-	if (iOwner->Is16BitFat())
-		{ 
-		*(TUint16*)p=(TUint16)aValue;
-		return;
-		}
-	TUint8 mask=0x0F;
-	TBool odd=(aFatIndex)&1;
-	TUint8 fatVal;
-	if(odd)
-		{
-		mask<<=4;
-		aValue<<=4;
-		fatVal=p[0];
-		fatVal&=~mask;
-		fatVal|=(TUint8)(aValue&0xFF);
-		p[0]=fatVal;
-		p[1]=(TUint8)(aValue>>8);
-		}
-	else
-		{
-		p[0]=(TUint8)(aValue&0xFF);
-		fatVal=p[1];
-		fatVal&=~mask;
-		fatVal|=(TUint8)(aValue>>8);
-		p[1]=fatVal;
-		}
-	return;
-	}
-	
+    {
+    if(iOwner->Is16BitFat())
+        __ASSERT_ALWAYS((TUint32)aFatIndex>=KFatFirstSearchCluster && aFatIndex<=MaxFatIndex() && aValue>=0 && aValue<=0xFFFF,User::Leave(KErrCorrupt));
+    else
+        __ASSERT_ALWAYS((TUint32)aFatIndex>=KFatFirstSearchCluster && aFatIndex<=MaxFatIndex() && aValue>=0 && aValue<=0xFFF,User::Leave(KErrCorrupt));
+    TUint8* p=(TUint8*)(iCheckFat+PosInBytes(aFatIndex));
+    if (iOwner->Is16BitFat())
+        { 
+        *(TUint16*)p=(TUint16)aValue;
+        return;
+        }
+    TUint8 mask=0x0F;
+    TBool odd=(aFatIndex)&1;
+    TUint8 fatVal;
+    if(odd)
+        {
+        mask<<=4;
+        aValue<<=4;
+        fatVal=p[0];
+        fatVal&=~mask;
+        fatVal|=(TUint8)(aValue&0xFF);
+        p[0]=fatVal;
+        p[1]=(TUint8)(aValue>>8);
+        }
+    else
+        {
+        p[0]=(TUint8)(aValue&0xFF);
+        fatVal=p[1];
+        fatVal&=~mask;
+        fatVal|=(TUint8)(aValue>>8);
+        p[1]=fatVal;
+        }
+    return;
+    }
+    
 
 TBool CCheckFatTable::GetNextClusterL(TInt& aCluster) const
 //
 // Get the next cluster in the chain from the check fat.
 //
     {
-	__PRINT(_L("CCheckFatTable::GetNextClusterL"));
-	TBool ret;
-	TInt nextCluster=ReadL(aCluster);
-	if (iOwner->Is16BitFat())
-		ret=!IsEof16Bit(nextCluster);
-	else
-		ret=!IsEof12Bit(nextCluster);
-	if (ret)
-		aCluster=nextCluster;
-	return(ret);
-	}
+    __PRINT(_L("CCheckFatTable::GetNextClusterL"));
+    TBool ret;
+    TInt nextCluster=ReadL(aCluster);
+    if (iOwner->Is16BitFat())
+        ret=!IsEof16Bit(nextCluster);
+    else
+        ret=!IsEof12Bit(nextCluster);
+    if (ret)
+        aCluster=nextCluster;
+    return(ret);
+    }
 
 void CCheckFatTable::WriteFatEntryEofFL(TInt aCluster)
 //
 // Write EOF to aCluster
 //
-	{
-	__PRINT(_L("CCheckFatTable::WriteFatEntryEofF"));
-	if (iOwner->Is16BitFat())
-		WriteL(aCluster,EOF_16Bit);
-	else
-		WriteL(aCluster,EOF_12Bit);
-	}
+    {
+    __PRINT(_L("CCheckFatTable::WriteFatEntryEofF"));
+    if (iOwner->Is16BitFat())
+        WriteL(aCluster,EOF_16Bit);
+    else
+        WriteL(aCluster,EOF_12Bit);
+    }