--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/weakcryptospi/test/tcryptospi/src/filecompare.cpp Thu Sep 10 14:01:51 2009 +0300
@@ -0,0 +1,112 @@
+/*
+* Copyright (c) 2007-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:
+*
+*/
+
+
+/**
+ @file
+ @internalTechnology
+*/
+#include "filecompare.h"
+
+#include "cryptospi/cryptospidef.h"
+#include <e32std.h>
+#include <e32def.h>
+#include <f32file.h>
+
+const TInt KCompareBlockSize = 0xff;
+
+//const TInt KCompareEqual = 0;
+const TInt KCompareGreaterThan = 1;
+const TInt KCompareLessThan = -1;
+
+// a simple utility class to compare 2 files, returns
+TInt TFileCompare::CompareL(TPtrC aFile1Path, TPtrC aFile2Path)
+ {
+ // assume is all well, compare always
+ TInt retVal = 0;
+
+ RFs rFs;
+ RFile file1;
+ RFile file2;
+
+ User::LeaveIfError(rFs.Connect());
+ CleanupClosePushL(rFs);
+ User::LeaveIfError(file1.Open(rFs, aFile1Path, EFileRead));
+ CleanupClosePushL(file1);
+ User::LeaveIfError(file2.Open(rFs, aFile2Path, EFileRead));
+ CleanupClosePushL(file2);
+
+ TInt file1Size;
+ file1.Size(file1Size);
+
+ TInt file2Size;
+ file2.Size(file2Size);
+
+ // bail out if the sizes of the 2 files are different
+ if(file1Size == file2Size)
+ {
+
+ TBuf8<KCompareBlockSize> tempBuf1;
+ TBuf8<KCompareBlockSize> tempBuf2;
+
+ TInt compareBlockSize;
+ TInt loopCount;
+
+ if(file1Size > KCompareBlockSize)
+ {
+ compareBlockSize = KCompareBlockSize;
+ loopCount = file1Size / compareBlockSize;
+ }
+ else
+ {
+ loopCount = 1;
+ compareBlockSize = file1Size;
+ }
+
+
+ // read through the files comparing each block
+ for(TInt i = 0; i < loopCount; i++)
+ {
+
+ file1.Read(tempBuf1, compareBlockSize);
+ file2.Read(tempBuf2, compareBlockSize);
+
+ // remember, 0 is return value for a successful comparison
+
+ retVal = tempBuf1.Compare(tempBuf2);
+ if( retVal != 0 )
+ {
+ //if files fail to match, break out of the loop
+ break;
+ }
+ }
+ }
+ else
+ {
+ if(file1Size > file2Size)
+ retVal = KCompareGreaterThan;
+ else
+ retVal = KCompareLessThan;
+ }
+
+ CleanupStack::PopAndDestroy(&file2);
+ CleanupStack::PopAndDestroy(&file1);
+
+ CleanupStack::PopAndDestroy(&rFs);
+
+ return retVal;
+ }