diff -r 000000000000 -r 044383f39525 imgtools/imgcheck/libimgutils/src/imagereader.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imgtools/imgcheck/libimgutils/src/imagereader.cpp Tue Oct 27 16:36:35 2009 +0000 @@ -0,0 +1,170 @@ +/* +* 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 "imagereader.h" +#include "romreader.h" +#include "rofsreader.h" + +#include + +/** +Constructor intializes the input stream. + +@internalComponent +@released + +@param aFile - image file name +*/ +ImageReader::ImageReader(const char* aFile) +:iImgFileName(String(aFile)), iImageSize(0), iExeAvailable(false) +{ +} + +/** +Destructor closes the input stream + +@internalComponent +@released +*/ +ImageReader::~ImageReader() +{ + ExeVsIdDataMap::iterator exeBegin = iExeVsIdData.begin(); + ExeVsIdDataMap::iterator exeEnd = iExeVsIdData.end(); + while(exeBegin != exeEnd) + { + DELETE(exeBegin->second); + ++exeBegin; + } + iHiddenExeList.clear(); + iExecutableList.clear(); + iImageVsDepList.clear(); +} + +/** +Function responsible to identify the image type + +@internalComponent +@released + +@param aImageName - image filename +*/ +EImageType ImageReader::ReadImageType(const String aImageName) +{ + char* imageName = (char*)aImageName.c_str(); + Ifstream aIfs(imageName, Ios::in | Ios::binary); + if(!aIfs) + { + cout << "Error: " << "Cannot open file: " << imageName << endl; + exit(EXIT_FAILURE); + } + EImageType imgType = EUnknownImage; + char* aMagicW = new char[1024]; + aIfs.read(aMagicW, 1024); + aIfs.close(); + String magicWord(aMagicW, 1024); + if(aMagicW != NULL) + delete [] aMagicW; + aMagicW = 0; + + if(RofsReader::IsRofsImage(magicWord)) + { + imgType = ERofsImage; + } + else if(RofsReader::IsRofsExtImage(magicWord)) + { + imgType = ERofsExImage; + } + else if (RomReader::IsRomImage(magicWord)) + { + imgType = ERomImage; + } + else if(RomReader::IsRomExtImage(magicWord)) + { + imgType = ERomExImage; + } + return imgType; +} + +/** +Dummy function. + +@internalComponent +@released +*/ +void ImageReader::PrepareExecutableList() +{ +} + +/** +Function responsible to return the executable list + +@internalComponent +@released + +@return iExecutableList - returns all executable names present in the image +*/ +const StringList& ImageReader::GetExecutableList() const +{ + return iExecutableList; +} + +/** +Function responsible to return the Hidden executables list + +@internalComponent +@released + +@return iHiddenExeList - returns all hidden executable names present in the image +*/ +const StringList& ImageReader::GetHiddenExeList() const +{ + return iHiddenExeList; +} + +/** +Function responsible to return the image name which is under process + +@internalComponent +@released + +@return iImgFileName - the image name which is under process +*/ +String& ImageReader::ImageName() +{ + return iImgFileName; +} + +/** +Function responsible to identify the executable presence. + +@internalComponent +@released + +@return true - Executable is present + false - Executable is not present +*/ +bool ImageReader::ExecutableAvailable() +{ + return iExeAvailable; +}