/** 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 @internalComponent @released*/#include "typedefs.h"#include "rofsimage.h"/** Constructor.@internalComponent@released@param aReader - image reader pointer*/RofsImage::RofsImage(RCoreImageReader *aReader): CCoreImage(aReader) ,iRofsHeader(0), iRofsExtnHeader(0),iAdjustment(0), iImageType((RCoreImageReader::TImageType)0){}/** Destructor deletes iRofsHeader and iRofsExtnHeader.@internalComponent@released@param aReader - image reader pointer*/RofsImage::~RofsImage(){ DELETE(iRofsHeader); DELETE(iRofsExtnHeader);}/** Function responsible to read the ROFS image and to construct the tree for the elements available in Directory section.@internalComponent@released@return - returns the error code*/TInt RofsImage::ProcessImage(){ int result = CreateRootDir(); if (result == KErrNone) { if (iReader->Open()) { iImageType = iReader->ReadImageType(); if (iImageType == RCoreImageReader::E_ROFS) { iRofsHeader = new TRofsHeader; result = iReader->ReadCoreHeader(*iRofsHeader); if (result != KErrNone) return result; SaveDirInfo(*iRofsHeader); result = ProcessDirectory(0); } else if (iImageType == RCoreImageReader::E_ROFX) { iRofsExtnHeader = new TExtensionRofsHeader ; result = iReader->ReadExtensionHeader(*iRofsExtnHeader); if(result != KErrNone) return result; long filePos = iReader->FilePosition(); iAdjustment = iRofsExtnHeader->iDirTreeOffset - filePos; SaveDirInfo(*iRofsExtnHeader); result = ProcessDirectory(iAdjustment); } else { result = KErrNotSupported; } } else { result = KErrGeneral; } } return result;}