--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/linklayerprotocols/pppnif/tsrc/Tcfgfile.cpp Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,77 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "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:
+// TESTUTL.CPP
+//
+//
+
+#include "tcfgfile.h"
+#include <f32file.h>
+
+//PhilippeG 15/05/2000
+//New object to load and parse the test parameters file
+CConfigParams* CConfigParams::NewL(const TDesC &aCfgFileName)
+ {
+ CConfigParams *f;
+ f=new (ELeave) CConfigParams();
+ CleanupStack::PushL(f);
+ //A leave during the ConstrucL is not fatal, just means there's no param file
+ TRAPD(err,f->ConstructL(aCfgFileName));
+ CleanupStack::Pop();
+ return f;
+ }
+void CConfigParams::ConstructL(const TDesC &aCfgFileName)
+ {
+ //Find the config file
+ TAutoClose<RFs> fs;
+ User::LeaveIfError(fs.iObj.Connect());
+ fs.PushL();
+ //Location for the test parameter config file
+ _LIT(KTinetConfigFilePaths,"\\testdata\\configs\\ppp\\;\\;\\system\\data\\");
+ TFindFile filePath(fs.iObj);
+ User::LeaveIfError(filePath.FindByPath(aCfgFileName,&KTinetConfigFilePaths));
+ //read the content of the file
+ TAutoClose<RFile> fl;
+ fl.PushL();
+ User::LeaveIfError(fl.iObj.Open(fs.iObj,filePath.File(),EFileShareExclusive));
+ User::LeaveIfError(fl.iObj.Read(iConfigParamBuf8));
+ iConfigParamBuf.Copy(iConfigParamBuf8);
+ CleanupStack::Pop(2);
+ iFileExist = ETrue;
+ }
+
+const TPtrC CConfigParams::FindAlphaVar(const TDesC &aVarName, const TDesC &aDefault)
+ {
+ if(!iFileExist)
+ return TPtrC(aDefault);
+ TInt pos=iConfigParamBuf.Find(aVarName);
+ if (pos==KErrNotFound)
+ return TPtrC(aDefault);
+ TLex lex(iConfigParamBuf.Mid(pos));
+ lex.SkipCharacters();
+ lex.SkipSpaceAndMark(); // Should be at the start of the data
+ lex.SkipCharacters();
+ return TPtrC(lex.MarkedToken().Ptr(),lex.MarkedToken().Length());
+ }
+const TInt CConfigParams::FindNumVar(const TDesC &aVarName, const TInt aDefault)
+ {
+ TInt result;
+ TPtrC ptr = FindAlphaVar(aVarName,KNullDesC);
+ if(ptr.Length())
+ {
+ TLex lex(ptr);
+ if (lex.Val(result)==KErrNone)
+ return result;
+ }
+ return aDefault;
+ }