--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptomgmtlibs/securitytestfw/test/testhandler2/t_tefinput.cpp Thu Sep 10 14:01:51 2009 +0300
@@ -0,0 +1,780 @@
+//
+// Copyright (c) 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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+// T_INPUT.CPP
+//
+// Copyright (c) Symbian Software Ltd 1998-2007. All rights reserved.
+//
+
+#include <s32file.h>
+#include "t_tefinput.h"
+#include "t_errorconverter.h"
+#include "tScriptSetup.h"
+#include <securityerr.h>
+#include <keystore_errs.h>
+
+#ifdef SYMBIAN_AUTH_SERVER
+#include <auth_srv_errs.h>
+#endif
+
+_LIT8(KSpace, " ");
+_LIT8(KTab, "\t");
+_LIT8(KReturn, "\r");
+_LIT8(KNewline, "\n");
+_LIT8(KOpenBrk, "[");
+_LIT8(KCloseBrk, "]");
+_LIT8(KEquals, "=");
+_LIT8(KUnderScore, "_");
+_LIT8(KSectionIDTag, "[SEC");
+
+#define KIniSectionIdLength 512
+#define KResultLength 512
+
+// Extracts RUN_TESTSTEP from the whole of script file passed in
+
+EXPORT_C TPtrC8 Tefinput::ParseRunTestStep(const TDesC8& aBuf,
+ const TDesC8& aTag,
+ TInt& aPos,
+ TInt& aError)
+ {
+ aError = KErrNone;
+ TInt endPos = 0;
+ TInt startPos = 0;
+ TInt tempPos = 0;
+
+ TPtrC8 data = aBuf.Mid(aPos);
+
+ tempPos = data.Find(aTag);
+
+ if (tempPos != KErrNotFound)
+ {
+ tempPos += aTag.Length();
+
+ TPtrC8 temprunStepData = data.Mid(tempPos);
+
+ endPos = temprunStepData.Find(KNewline);
+ if (endPos == KErrNotFound)
+ {
+ endPos = temprunStepData.Find(KReturn);
+ }
+ if (endPos == KErrNotFound)
+ {
+ endPos = temprunStepData.Length();
+ }
+
+ TInt len = 0;
+ len = (endPos - startPos) + 1;
+ TPtrC8 runStepData = temprunStepData.Mid(startPos,len);
+ aPos += tempPos + runStepData.Length();
+ return runStepData;
+ }
+ else
+ {
+ aError = KErrNotFound;
+ return TPtrC8();
+ }
+
+ // None found
+
+
+ }
+
+// Extracts the nth word from the given descritor
+EXPORT_C TPtrC8 Tefinput::ParseNthElement(const TDesC8& aBuf,
+ TInt aWordPos,
+ TInt& aError)
+
+ {
+ aError = KErrNone;
+ TInt startPos = KErrNotFound, endPos = KErrNotFound;
+ TInt wordCounter =0 ;
+ TBool inWord = EFalse;
+ TInt i =0;
+ for(i = 0; i < aBuf.Length() ; i ++)
+ {
+ TPtrC8 tmpChar = aBuf.Mid(i,1);
+ if(tmpChar == KSpace || tmpChar == KTab || tmpChar == KReturn || tmpChar == KNewline )
+ {
+ if(inWord)
+ {
+ if(wordCounter == aWordPos)
+ {
+ endPos =i-1;
+ break;
+ }
+ inWord = EFalse;
+ }
+ }
+ else
+ {
+ if(inWord == EFalse)
+ {
+ wordCounter ++;
+ inWord = ETrue;
+ if(wordCounter == aWordPos)
+ {
+ startPos =i;
+ }
+ }
+ }
+ }
+
+ if(startPos < 0 || endPos < 0)
+ {
+ aError = KErrNotFound;
+ return TPtrC8();
+ }
+ else
+ {
+ return aBuf.Mid(startPos,(endPos-startPos+1));
+ }
+ }
+
+// Extracts testCaseID from the whole script file
+EXPORT_C TPtrC8 Tefinput::ParseTestCaseID(const TDesC8& aBuf,
+ const TDesC8& aTag,
+ TDes8& aPrevTestID,
+ TInt& aPos,
+ TInt& aError,
+ TBool& testSet,
+ TBool& startTest
+ )
+ {
+ aError = KErrNone;
+ TInt startPos = 0, endPos = 0;
+
+ TPtrC8 datatemp;
+ TPtrC8 testID;
+ TPtrC8 data = aBuf.Mid(aPos);
+ TInt len = aTag.Length();
+ startPos = data.Find(aTag);
+
+ TInt filePos = startPos + aPos;
+
+ if(startPos != KErrNotFound)
+ {
+ TInt templen;
+ startPos += len;
+ filePos += len;
+ datatemp.Set(data.Mid(startPos));
+
+ endPos = datatemp.Find(KNewline);
+ if(endPos == KErrNotFound)
+ {
+ endPos = datatemp.Find(KReturn);
+ TInt temp =0;
+ templen = endPos - temp;
+ testID.Set(datatemp.Mid(temp,templen));
+ filePos += testID.Length();
+ aPos = filePos;
+ testSet = ETrue;
+ startTest = ETrue;
+ return Trim(testID);
+ }
+ else
+ {
+ TInt temp =0;
+ templen = endPos - temp;
+ testID.Set(datatemp.Mid(temp,templen));
+ filePos += testID.Length();
+ aPos = filePos;
+ testSet = ETrue;
+ startTest = ETrue;
+ return Trim(testID);
+ }
+ }
+ else
+ {
+ aPos = aPos;
+ aError = KErrNotFound;
+ testSet = EFalse;
+ return aPrevTestID;
+ }
+
+ }
+
+
+// Generates the path for .ini file from the .script file path
+EXPORT_C TInt Tefinput::ParseiniPath(const TDesC8& aIniFileName,
+ const TDesC& aScriptPath,
+ TDes& aIniFilePath)
+ {
+
+ TInt err = KErrNone;
+ TInt endPos = aScriptPath.LocateReverse('\\');
+ if (endPos == KErrNotFound)
+ {
+ err = KErrNotFound;
+ }
+ else
+ {
+ aIniFilePath.Copy(aIniFileName);
+ aIniFilePath.Insert(0, aScriptPath.Left(endPos+1));
+ }
+ return err;
+ }
+
+// Reads the whole of .ini file contents, calls ParseActionbody()
+// to extract info between <actionbody></actionbody>tags
+EXPORT_C HBufC8* Tefinput::GetiniFile(RFs& aFs,
+ const TDesC& aIniFilePath,
+ TInt& err)
+ {
+ RFile iniFile;
+ err = iniFile.Open(aFs, aIniFilePath, EFileStream | EFileRead | EFileShareReadersOnly);
+ if (err != KErrNone)
+ {
+ return NULL; // Bad exit ...
+ }
+ // gets size of ini file
+ TInt size;
+ iniFile.Size(size);
+ iniFile.Close();
+
+ // reads ini into iTestInput
+ HBufC8* testInput = HBufC8::NewLC(size);
+
+ TPtr8 aInput = testInput->Des(); // Appoint our local 8 bit pointer descriptor to the heap area to work with
+ aInput.SetLength(size);
+
+ RFileReadStream stream;
+ User::LeaveIfError(stream.Open(aFs, aIniFilePath, EFileStream | EFileRead | EFileShareReadersOnly));
+ CleanupClosePushL(stream);
+ stream.ReadL(aInput, size); // Load in the inifile into Heap buffer
+
+// TPtrC8 iniFileread = ParseElement(pInput, tempsectID, pos, err );
+// TPtrC8 iniFileread = ParseActionbody(pInput, aIniSectionName, err);
+// iniFileread.TDesC8();
+
+ CleanupStack::PopAndDestroy(1); // stream,
+
+ return testInput; // Return a valid HBuf8 pointer where the ini file has been loaded (on the heap)
+ }
+
+// Extracts info between <actionbody></actionbody>tags from the inifile contents
+EXPORT_C TInt Tefinput::ParseActionbody( TPtrC8& aBuf,
+ const TDesC8& aIniTag,
+ TPtrC8& aSectionBody)
+ {
+ TInt len =0, startPos =0, endPos = 0;
+ TPtrC8 inifile = aBuf.Mid(startPos);
+
+ TBuf8<KIniSectionIdLength> tempsectID(KOpenBrk);
+ tempsectID.Append(aIniTag);
+ tempsectID.Append(KCloseBrk);
+
+ startPos = inifile.Find(tempsectID);
+
+ if (startPos != KErrNotFound)
+ {
+ TPtrC8 actionblk = inifile.Mid(startPos + tempsectID.Length());
+ endPos = actionblk.Find(KSectionIDTag);
+ if (endPos == KErrNotFound)
+ {
+ endPos = actionblk.Length();
+ }
+ len = endPos - 0;
+
+ aSectionBody.Set(aBuf.Mid(startPos + tempsectID.Length(),len));
+ return KErrNone;
+ }
+ else
+ {
+// aSectionBody();
+ return KErrNotFound;
+ }
+ }
+
+// Takes in an integer and returns the appropriate error code with <return></return> tags
+EXPORT_C TInt Tefinput::GetActionResult(TInt aErrCode, TDes8& aReturnTag)
+ {
+ TInt err = KErrNone;
+
+ if(aErrCode == KErrNone)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrNone</return>"));
+ }
+ else if(aErrCode == KErrNotFound)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrNotFound</return>"));
+ }
+ else if(aErrCode == KErrGeneral)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrGeneral</return>"));
+ }
+ else if(aErrCode == KErrCancel)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrCancel</return>"));
+ }
+ else if(aErrCode == KErrNoMemory)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrNoMemory</return>"));
+ }
+
+ else if(aErrCode == KErrNotSupported)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrNotSupported</return>"));
+ }
+
+ else if(aErrCode == KErrArgument)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrArgument</return>"));
+ }
+
+ else if(aErrCode == KErrTotalLossOfPrecision)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrTotalLossOfPrecision</return>"));
+ }
+
+ else if(aErrCode == KErrBadHandle)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrBadHandle</return>"));
+ }
+
+ else if(aErrCode == KErrOverflow)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrOverflow</return>"));
+ }
+
+ else if(aErrCode == KErrUnderflow)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrUnderflow</return>"));
+ }
+
+ else if(aErrCode == KErrAlreadyExists)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAlreadyExists</return>"));
+ }
+
+ else if(aErrCode == KErrPathNotFound)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrPathNotFound</return>"));
+ }
+
+ else if(aErrCode == KErrDied)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrDied</return>"));
+ }
+
+ else if(aErrCode == KErrInUse)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrInUse</return>"));
+ }
+
+ else if(aErrCode == KErrServerTerminated)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrServerTerminated</return>"));
+ }
+
+ else if(aErrCode == KErrServerBusy)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrServerBusy</return>"));
+ }
+
+ else if(aErrCode == KErrCompletion)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrCompletion</return>"));
+ }
+
+ else if(aErrCode == KErrNotReady)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrNotReady</return>"));
+ }
+
+ else if(aErrCode == KErrUnknown)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrUnknown</return>"));
+ }
+
+ else if(aErrCode == KErrCorrupt)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrCorrupt</return>"));
+ }
+
+ else if(aErrCode == KErrAccessDenied)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAccessDenied</return>"));
+ }
+
+ else if(aErrCode == KErrLocked)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrLocked</return>"));
+ }
+
+ else if(aErrCode == KErrWrite)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrWrite</return>"));
+ }
+
+ else if(aErrCode == KErrDisMounted)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrDisMounted</return>"));
+ }
+
+ else if(aErrCode == KErrEof)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrEof</return>"));
+ }
+
+ else if(aErrCode == KErrDiskFull)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrDiskFull</return>"));
+ }
+
+ else if(aErrCode == KErrBadDriver)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrBadDriver</return>"));
+ }
+
+ else if(aErrCode == KErrBadName)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrBadName</return>"));
+ }
+
+ else if(aErrCode == KErrCommsLineFail)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrCommsLineFail</return>"));
+ }
+
+ else if(aErrCode == KErrCommsFrame)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrCommsFrame</return>"));
+ }
+
+ else if(aErrCode == KErrCommsOverrun)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrCommsOverrun</return>"));
+ }
+
+ else if(aErrCode == KErrCommsParity)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrCommsParity</return>"));
+ }
+
+ else if(aErrCode == KErrTimedOut)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrTimedOut</return>"));
+ }
+
+ else if(aErrCode == KErrCouldNotConnect)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrCouldNotConnect</return>"));
+ }
+
+ else if(aErrCode == KErrCouldNotDisconnect)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrCouldNotDisconnect</return>"));
+ }
+
+ else if(aErrCode == KErrDisconnected)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrDisconnected</return>"));
+ }
+
+ else if(aErrCode == KErrBadLibraryEntryPoint)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrBadLibraryEntryPoint</return>"));
+ }
+
+ else if(aErrCode == KErrBadDescriptor)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrBadDescriptor</return>"));
+ }
+
+ else if(aErrCode == KErrAbort)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAbort</return>"));
+ }
+
+ else if(aErrCode == KErrTooBig)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrTooBig</return>"));
+ }
+
+ else if(aErrCode == KErrDivideByZero)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrDivideByZero</return>"));
+ }
+
+ else if(aErrCode == KErrBadPower)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrBadPower</return>"));
+ }
+
+ else if(aErrCode == KErrDirFull)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrDirFull</return>"));
+ }
+
+ else if(aErrCode == KErrHardwareNotAvailable)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrHardwareNotAvailable</return>"));
+ }
+ else if(aErrCode == KErrPermissionDenied)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrPermissionDenied</return>"));
+ }
+ else if(aErrCode == KErrBadPassphrase)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrBadPassphrase</return>"));
+ }
+ else if(aErrCode == KErrTotalLossOfEntropy)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrTotalLossOfEntropy</return>"));
+ }
+ else if(aErrCode == KErrKeyNotWeakEnough)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrKeyNotWeakEnough</return>"));
+ }
+ else if(aErrCode == KErrInvalidPadding)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrInvalidPadding</return>"));
+ }
+ else if(aErrCode == KErrWeakKey)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrWeakKey</return>"));
+ }
+ else if(aErrCode == KErrNegativeExportNotSupported)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrNegativeExportNotSupported</return>"));
+ }
+ else if(aErrCode == KErrKeyAlgorithm)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrKeyAlgorithm</return>"));
+ }
+ else if(aErrCode == KErrKeyUsage)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrKeyUsage</return>"));
+ }
+ else if(aErrCode == KErrKeyValidity)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrKeyValidity</return>"));
+ }
+ else if(aErrCode == KErrKeySize)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrKeySize</return>"));
+ }
+ else if(aErrCode == KErrKeyAccess)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrKeyAccess</return>"));
+ }
+ else if(aErrCode == KErrPrivateKeyNotFound)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrPrivateKeyNotFound</return>"));
+ }
+ else if(aErrCode == KErrAuthenticationFailure)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAuthenticationFailure</return>"));
+ }
+
+#ifdef SYMBIAN_AUTH_SERVER
+ else if(aErrCode == KErrAuthServUnsupportedExprVersion)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAuthServUnsupportedExprVersion</return>"));
+ }
+ else if(aErrCode == KErrAuthServNoSuchPlugin)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAuthServNoSuchPlugin</return>"));
+ }
+ else if(aErrCode == KErrAuthServNoSuchIdentity)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAuthServNoSuchIdentity</return>"));
+ }
+ else if(aErrCode == KErrAuthServPluginCancelled)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAuthServPluginCancelled</return>"));
+ }
+ else if(aErrCode == KErrAuthServPluginQuit)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAuthServPluginQuit</return>"));
+ }
+ else if(aErrCode == KErrAuthServAuthenticationRequired)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAuthServAuthenticationRequired</return>"));
+ }
+ else if(aErrCode == KErrAuthServIdentityAlreadyExists)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAuthServIdentityAlreadyExists</return>"));
+ }
+ else if(aErrCode == KErrAuthServIdentityNotFound)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAuthServIdentityNotFound</return>"));
+ }
+ else if(aErrCode == KErrAuthServTrainingNotFound)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAuthServTrainingNotFound</return>"));
+ }
+ else if(aErrCode == KErrAuthServRegistrationFailed)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAuthServRegistrationFailed</return>"));
+ }
+ else if(aErrCode == KErrAuthServCanNotRemoveLastIdentity)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAuthServCanNotRemoveLastIdentity</return>"));
+ }
+ else if(aErrCode == KErrAuthServCanNotRemoveLastPlugin)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAuthServCanNotRemoveLastPlugin</return>"));
+ }
+ else if(aErrCode == KErrAuthServPluginNotActive)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAuthServPluginNotActive</return>"));
+ }
+ else if(aErrCode == KErrAuthServDescTooLong)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAuthServDescTooLong</return>"));
+ }
+ else if(aErrCode == KErrUnknownAuthStrengthAlias)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrUnknownAuthStrengthAlias</return>"));
+ }
+ else if(aErrCode == KErrAuthStrengthAliasNotDefined)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAuthStrengthAliasNotDefined</return>"));
+ }
+ else if(aErrCode == KErrAuthServInvalidAliasStringExpression)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAuthServInvalidAliasStringExpression/return>"));
+ }
+ else if(aErrCode == KErrAuthServResetMayLoseIdentity)
+ {
+ aReturnTag.Copy(_L8("\r\n\t\t<return>KErrAuthServResetMayLoseIdentity/return>"));
+ }
+#endif
+
+
+//
+
+ return err;
+ }
+
+// Checks if the first word in RUN_TEST_STEP is an error code. If, then calls GetActionResult().
+EXPORT_C TInt Tefinput::ParseActionResult(const TDesC8& aBuf, TDes8& aActionResult)
+ {
+ TInt errorCode = 0;
+ TInt startPos =0;
+
+ TPtrC8 data = aBuf.Mid(startPos);
+ startPos = data.Find(KEquals);
+ if (startPos != KErrNotFound)
+ {
+ TInt tmp;
+ TPtrC8 tmpErrCode = data.Mid(startPos+1);
+ TLex8 lex8(tmpErrCode);
+ tmp = lex8.Val(errorCode);
+ if(tmp != KErrNone)
+ {
+ return KErrNotFound;
+ }
+ }
+
+ return GetActionResult(errorCode, aActionResult);
+ }
+
+// Removes any /t, /n and empty spaces from any extracted data.
+EXPORT_C TPtrC8 Tefinput::Trim(const TDesC8& aBuf)
+ {
+ TInt startPos = 0;
+ TInt endPos = 0;
+ TInt i = 0, j = 0;
+
+ for(i = 0; i < aBuf.Length() ; i ++)
+ {
+ TPtrC8 tmpChar = aBuf.Mid(i,1);
+ if(tmpChar != KSpace && tmpChar != KTab && tmpChar != KReturn && tmpChar != KNewline )
+ {
+ startPos = i;
+ break;
+ }
+ }
+ for(j = aBuf.Length()-1; j >= 0 ; j --)
+ {
+ TPtrC8 tmpChar1 = aBuf.Mid(j,1);
+ if(tmpChar1 != KSpace && tmpChar1 != KTab && tmpChar1 != KReturn && tmpChar1 != KNewline )
+ {
+ endPos = j;
+ break;
+ }
+ }
+ if(endPos < startPos)
+ {
+ endPos = aBuf.Length();
+ }
+
+
+ return aBuf.Mid(startPos, endPos - startPos + 1);
+
+ }
+
+//Removes '_' between 2 words and adds a space
+EXPORT_C TDes8 Tefinput::TrimActionType(const TDesC8& aBuf, TDes8& aType)
+ {
+ TInt startPos = 0;
+ TInt pos = 0;
+
+ // Allocating on heap - since 1024 bytes on stack could be too much for the target.
+ HBufC* temp = HBufC::NewLC(512);
+ HBufC* temp2 = HBufC::NewLC(512);
+
+ startPos = aBuf.Find(KUnderScore);
+ if(startPos != KErrNotFound)
+ {
+ temp->Des().Copy(aBuf.Mid(pos,(startPos-pos)));
+ temp2->Des().Copy(aBuf.Mid(startPos+1));
+ aType.Copy(temp->Des());
+ aType.Append(KSpace);
+ aType.Append(temp2->Des());
+ }
+ else
+ {
+ aType.Copy(aBuf);
+ }
+
+ CleanupStack::PopAndDestroy(temp2);
+ CleanupStack::PopAndDestroy(temp);
+ return aType;
+ }
+
+//Checks if END_TESTCASE has been reached
+EXPORT_C TBool Tefinput::EndTestCase(const TDesC8& aBuf, const TDesC8& aRunStep, const TDesC8& aTag, TInt& aPos)
+ {
+ TInt startPos =0;
+
+ TInt lenRunStep = aRunStep.Length();
+
+ TPtrC8 tempScriptFile;
+ tempScriptFile.Set(aBuf.Mid(aPos));
+
+ startPos = tempScriptFile.Find(aTag);
+ if(startPos != KErrNotFound)
+ {
+ startPos += aPos;
+ if(startPos == aPos)
+ {
+ return ETrue;
+ }
+ else
+ {
+ return EFalse;
+ }
+ }
+ else
+ {
+ return EFalse;
+ }
+
+ }
+