diff -r 675a964f4eb5 -r 35751d3474b7 cryptomgmtlibs/securitytestfw/test/testhandler2/t_utils.cpp --- a/cryptomgmtlibs/securitytestfw/test/testhandler2/t_utils.cpp Tue Jul 21 01:04:32 2009 +0100 +++ b/cryptomgmtlibs/securitytestfw/test/testhandler2/t_utils.cpp Thu Sep 10 14:01:51 2009 +0300 @@ -1,105 +1,106 @@ -/* -* Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the License "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - -#include -#include "t_utils.h" - - -const TInt KBufferSize = 1024; - -EXPORT_C TBool Utils::CompareFileL(const TDesC& aFileName1, const TDesC& aFileName2, TInt &aError) - { - RFile file1, file2; - RFs fs; - TInt err1, err2, size1, size2; - TBool success = EFalse; - - // checks files are different - if(aFileName1 == aFileName2) - { - aError = KErrNotFound; - return(EFalse); - }; - - User::LeaveIfError(fs.Connect()); - CleanupClosePushL(fs); - - // opens first file - err1 = file1.Open(fs, aFileName1, EFileRead); - if (err1 != KErrNone) - { - CleanupStack::PopAndDestroy(); // fs - aError = KErrNotFound; - return(EFalse); - } - CleanupClosePushL(file1); - - //opens second file - err2 = file2.Open(fs, aFileName2, EFileRead); - if (err2 != KErrNone) - { - CleanupStack::PopAndDestroy(2); // fs, file1 - aError = KErrNotFound; - return(EFalse); - } - CleanupClosePushL(file2); - - TBool finished = EFalse; - HBufC8 *fileBuf1 = HBufC8::NewLC(KBufferSize); - HBufC8 *fileBuf2 = HBufC8::NewLC(KBufferSize); - TPtr8 filePtr1(fileBuf1->Des()); - TPtr8 filePtr2(fileBuf2->Des()); - - file1.Size(size1); - file2.Size(size2); - - // compares size, no need to do any more checking if they are different - if(size1 == size2) - { - success = ETrue; - do - { - // reads in buffer from each file - // cannot rely on max length of descriptor so pass in size of - // buffer to read - err1 = file1.Read(filePtr1,KBufferSize); - err2 = file2.Read(filePtr2,KBufferSize); - // checks if an error has occured - if(err1 != KErrNone && err2 != KErrNone) - { - finished = ETrue; - success = EFalse; - }; - // executes a binary compare - if(fileBuf1->Compare(*fileBuf2)!=0) - { - // binary compare failed, file are different - finished = ETrue; - success = EFalse; - }; - // checks for EOF - if(fileBuf1->Length() != KBufferSize) - finished = ETrue; - } - while(!finished); - }; - - - CleanupStack::PopAndDestroy(5); // fs, file1, file2, fileBuf1, fileBuf2 - return(success); - }; +/* +* Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + +#include +#include "t_utils.h" + + +const TInt KBufferSize = 1024; + +EXPORT_C TBool Utils::CompareFileL(const TDesC& aFileName1, const TDesC& aFileName2, TInt &aError) + { + RFile file1, file2; + RFs fs; + TInt err1, err2, size1, size2; + TBool success = EFalse; + + // checks files are different + if(aFileName1 == aFileName2) + { + aError = KErrNotFound; + return(EFalse); + }; + + User::LeaveIfError(fs.Connect()); + CleanupClosePushL(fs); + + // opens first file + err1 = file1.Open(fs, aFileName1, EFileRead); + if (err1 != KErrNone) + { + CleanupStack::PopAndDestroy(); // fs + aError = KErrNotFound; + return(EFalse); + } + CleanupClosePushL(file1); + + //opens second file + err2 = file2.Open(fs, aFileName2, EFileRead); + if (err2 != KErrNone) + { + CleanupStack::PopAndDestroy(2); // fs, file1 + aError = KErrNotFound; + return(EFalse); + } + CleanupClosePushL(file2); + + TBool finished = EFalse; + HBufC8 *fileBuf1 = HBufC8::NewLC(KBufferSize); + HBufC8 *fileBuf2 = HBufC8::NewLC(KBufferSize); + TPtr8 filePtr1(fileBuf1->Des()); + TPtr8 filePtr2(fileBuf2->Des()); + + file1.Size(size1); + file2.Size(size2); + + // compares size, no need to do any more checking if they are different + if(size1 == size2) + { + success = ETrue; + do + { + // reads in buffer from each file + // cannot rely on max length of descriptor so pass in size of + // buffer to read + err1 = file1.Read(filePtr1,KBufferSize); + err2 = file2.Read(filePtr2,KBufferSize); + // checks if an error has occured + if(err1 != KErrNone && err2 != KErrNone) + { + finished = ETrue; + success = EFalse; + }; + // executes a binary compare + if(fileBuf1->Compare(*fileBuf2)!=0) + { + // binary compare failed, file are different + finished = ETrue; + success = EFalse; + }; + // checks for EOF + if(fileBuf1->Length() != KBufferSize) + finished = ETrue; + } + while(!finished); + }; + + + CleanupStack::PopAndDestroy(5); // fs, file1, file2, fileBuf1, fileBuf2 + return(success); + }; +