commonservices/sysutil/test/shared/sysutilfunctions.cpp
changeset 0 4e1aa6a622a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commonservices/sysutil/test/shared/sysutilfunctions.cpp	Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,123 @@
+// Copyright (c) 2008-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:
+// file sysutilfunctions.cpp
+// 
+//
+
+#include <e32property.h>
+#include <f32file.h>
+#include <bafl/sysutil.h>
+#include "sysutilconstants.h"
+#include "sysutilfunctions.h"
+#include "sysutilsetup.h"
+
+/**
+Checks if the given file exists.
+
+@param	aFilename			The path of the file to be checked.
+@return KErrNone			The file exists.
+@return KErrNotSupported	The file does not exist.
+@return ...					One of the other system wide error codes.
+*/
+TInt CheckIsFileExist(const TDesC& aFilename)
+	{
+	RFs fs;
+	TInt err;
+	err = fs.Connect();
+	if (err != KErrNone)
+		{
+		return err;
+		}
+	
+	RFile file;
+	err = file.Open(fs, aFilename, EFileRead | EFileStreamText | EFileShareReadersOnly);
+	
+	file.Close();
+	fs.Close();
+	
+	if (err == KErrNotFound || err == KErrPathNotFound)
+		{
+		err = KErrNotSupported;
+		}
+	
+	return err;
+	}
+
+/**
+Deletes all the Publish and Subscribe properties.
+
+@return KErrNone	If Publish and Subscribe properties where deleted successfully.
+@return ...			One of the other system wide error codes.
+*/
+TInt DeletePSProperties()
+	{
+	_LIT( KExeName, "Z:\\sys\\bin\\sysutilsetup.exe" );
+	const TUidType KExeUid( KNullUid, KNullUid, KSysUtilSetupUid );
+	
+	RProcess setupProcess;
+	TInt err = setupProcess.Create( KExeName, KDeletePropertiesFlag, KExeUid );
+	if( KErrNone != err )
+		{
+		return err;
+		}
+	
+	TRequestStatus status;
+	setupProcess.Rendezvous( status );
+	if( KRequestPending != status.Int() )
+		{
+		setupProcess.Kill( 0 );		// Abort startup
+		}
+	else
+		{
+		setupProcess.Resume();		// Logon OK - start the server
+		}
+	
+	User::WaitForRequest( status );	// Wait for start or death
+	
+	// We can't use the 'exit reason' if the server panicked as this
+	// is the panic 'reason' and may be '0' which cannot be distinguished
+	// from KErrNone
+	err = setupProcess.ExitType() == EExitPanic ? KErrGeneral : status.Int();
+	setupProcess.Close();
+	return err;
+	}
+
+/**
+Switches the test paths on and off. The paths as as follows:
+
+Default Paths:
+Z:\\resource\\versions\\deviceattributes.ini
+Z:\\sys\\bin\\sysutilplugin.dll
+
+Test Paths:
+<system drive>:\\versions\\deviceattributes.ini
+<system drive>:\\sys\\bin\\sysutilplugin.dll
+
+@param	aTestPathOn	If ETrue, test paths are turned on. If EFalse, test paths are turned off.
+@return	KErrNone	If the test paths were turned on/off successfully.
+@return	...			One of the other system wide error codes.
+*/
+TInt SetTestPath(const TBool aTestPathOn)
+	{
+	_LIT_SECURITY_POLICY_C1( KSecurityPolicyNone, ECapability_None );
+	
+	TInt err = RProperty::Define( KUidSystemCategory, KTestFilePathsUid.iUid, RProperty::EInt, KSecurityPolicyNone, KSecurityPolicyNone );
+	if(KErrNone != err && KErrAlreadyExists != err)
+		{
+		return err;
+		}
+	err = RProperty::Set(KUidSystemCategory, KTestFilePathsUid.iUid, aTestPathOn);
+	
+	return err;
+	}