--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/launcher/src/launcherdllparser.cpp Tue Feb 02 00:17:27 2010 +0200
@@ -0,0 +1,133 @@
+/*
+* 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 "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 "launcherdllparser.h"
+#include "launchertraces.h"
+
+// ---------------------------------------------------------------------------
+
+CLauncherDLLParser::~CLauncherDLLParser()
+ {
+ LOGSTRING("Launcher: CLauncherDLLParser::~CLauncherDLLParser");
+ }
+
+// ---------------------------------------------------------------------------
+
+CLauncherDLLParser::CLauncherDLLParser()
+ {
+ LOGSTRING("Launcher: CLauncherDLLParser::CLauncherDLLParser");
+ }
+
+// ---------------------------------------------------------------------------
+
+CLauncherDLLParser* CLauncherDLLParser::NewL()
+ {
+ LOGSTRING("Launcher: CLauncherDLLParser::NewL");
+ CLauncherDLLParser* self = CLauncherDLLParser::NewLC();
+ CleanupStack::Pop();
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+
+CLauncherDLLParser* CLauncherDLLParser::NewLC()
+ {
+ LOGSTRING("Launcher: CLauncherDLLParser::NewLC");
+ CLauncherDLLParser* self = new (ELeave) CLauncherDLLParser;
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+
+void CLauncherDLLParser::ConstructL()
+ {
+
+ }
+
+// ---------------------------------------------------------------------------
+
+void CLauncherDLLParser::ParseL( RFs& aFileSession, RFile& aFile, CLauncherDLLElement& aElement )
+ {
+ TFileName dllName;
+ TFileName fullName;
+ TUid tmpUID;
+ TInt offset = 0;
+
+ aFile.Name(dllName);
+ aFile.FullName(fullName);
+ aElement.SetNameL(dllName);
+
+ TBool isFileInRom = aFileSession.IsFileInRom(fullName) != 0;
+
+ /**
+ * Read UID1
+ */
+ offset = UID1_OFFSET;
+ aFile.Seek(ESeekStart, offset); // Set file position
+ tmpUID.iUid = ReadUint32L(aFile);
+ aElement.SetUID1L(tmpUID);
+
+ /**
+ * Read UID2
+ */
+ offset = UID2_OFFSET;
+ aFile.Seek(ESeekStart, offset); // Set file position
+ tmpUID.iUid = ReadUint32L(aFile);
+ aElement.SetUID2L(tmpUID);
+
+ /**
+ * Read UID3
+ */
+ offset = UID3_OFFSET;
+ aFile.Seek(ESeekStart, offset); // Set file position
+ tmpUID.iUid = ReadUint32L(aFile);
+ aElement.SetUID3L(tmpUID);
+
+ /**
+ * Read SID
+ */
+ if( isFileInRom )
+ offset = SID_OFFSET_ROM;
+ else
+ offset = SID_OFFSET_ROFS;
+ aFile.Seek(ESeekStart, offset); // Set file position
+ tmpUID.iUid = ReadUint32L(aFile);
+ aElement.SetSIDL(tmpUID);
+
+ /**
+ * Read Capability
+ */
+ if( isFileInRom )
+ offset = CAPABILITY_OFFSET_ROM;
+ else
+ offset = CAPABILITY_OFFSET_ROFS;
+ aFile.Seek(ESeekStart, offset); // Set file position
+ TUint32 tmpVal = ReadUint32L(aFile);
+ aElement.SetCapabilityL(tmpVal);
+ }
+
+// ---------------------------------------------------------------------------
+
+TUint32 CLauncherDLLParser::ReadUint32L( RFile& aFile )
+ {
+ TBuf8<4> tempBuf;
+ User::LeaveIfError(aFile.Read(tempBuf, 4));
+ const TUint8* ptr = tempBuf.Ptr();
+ return TUint32(ptr[0] | (ptr[1]<<8) | (ptr[2]<<16) | (ptr[3]<<24));
+ }