secureswitools/swisistools/source/dumpsislib/dumpsis.cpp
author lpyl2111 <>
Fri, 23 Apr 2010 15:09:03 +0100
changeset 26 04d4a7bbc3e0
parent 0 ba25891c3a9e
permissions -rw-r--r--
Iby file creation modification
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
*
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
*
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
* Contributors:
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
*
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
* Description: 
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
*
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
*/
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
#ifdef _MSC_VER
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
#pragma warning (disable: 4786)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#endif 
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include <iostream>
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
#include <sstream>    // for strstream, wistringstream
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include <stdio.h>
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
#include <sys/stat.h>
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
#include <algorithm>
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
#include <functional>
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
#include <set>
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
#include "dumpsis.h"
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
#include "siscontroller.h"
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
#include "exception.h"
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
26
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    36
#define KStubSisMsg "// *** Please add stub-SIS file entry here ***"
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    37
CDumpSis::CDumpSis(const std::wstring& aSISFileName, bool aVerbose, bool aCompatible)
0
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    38
		: 	iController(NULL),
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
			iSisFileName(aSISFileName),
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
			iVerbose(aVerbose),
26
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    41
			iCompatible(aCompatible),
0
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    42
			iIsStub(false)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
	{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
	bool isSiSFile = CSISContents::IsSisFile(aSISFileName);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    45
	if(isSiSFile)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
		iSisContents.Load (iSisFileName);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    48
		iController = &iSisContents.Controller();
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    49
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    50
	else
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    51
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
		iIsStub = true;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
		iController = new CSISController;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
		SISLogger::Log(L"Dumping Stub SIS Controller\n");
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    55
		iController->Load(iSisFileName);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    56
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    57
	}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    58
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
CDumpSis::~CDumpSis()
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    60
	{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    61
	if(iIsStub)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    62
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    63
		delete iController;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    64
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    65
	}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    66
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    67
void CDumpSis::CreatePackage(const std::wstring& aPkgFileName)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
	{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    69
	std::wistringstream inStream (std::ios::in | std::ios::out);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
	std::wostream outStream (inStream.rdbuf ());
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
26
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    72
	if(iCompatible)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    73
		outStream << wchar_t(0xfeff);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    74
0
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    75
	if(iIsStub)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    76
		{
26
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    77
		iController->AddPackageEntry (outStream, iVerbose, iCompatible);
0
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    78
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    79
	else
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    80
		{
26
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    81
		iSisContents.AddPackageEntry (outStream, iVerbose, iCompatible);
0
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    82
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    83
	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    84
	std::wstring str = inStream.str();
26
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    85
	if(!iCompatible)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    86
		{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    87
		std::string ns(str.begin(), str.end());
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    88
		WriteToFile(aPkgFileName, reinterpret_cast<const TUint8*>(ns.c_str()), ns.length());
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    89
		}
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    90
	else
0
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    91
	WriteToFile(aPkgFileName, reinterpret_cast<const TUint8*>(str.c_str()), str.length()*2);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    92
	}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
26
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    94
void CDumpSis::CreateIbyFile(const std::wstring& aIbyFileName)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    95
	{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    96
	std::wistringstream inStream (std::ios::in | std::ios::out);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    97
	std::wostream outStream (inStream.rdbuf ());
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    98
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
    99
	if(iCompatible)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   100
		outStream << wchar_t(0xfeff);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   101
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   102
	std::wstring tmp;
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   103
	int index = aIbyFileName.find_last_of(L"/");
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   104
	if(index!=-1)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   105
		tmp = aIbyFileName.substr(index+1,aIbyFileName.length()-index-1);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   106
	else
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   107
		tmp = aIbyFileName;
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   108
	
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   109
	index = tmp.find_last_of(L".");
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   110
	if(index!=-1)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   111
		tmp = tmp.replace(index,1,L"_");
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   112
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   113
	std::transform(tmp.begin(), tmp.end(), tmp.begin(), towupper);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   114
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   115
	outStream << L"#ifndef __" << tmp << L"__" << std::endl;
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   116
	outStream << L"#define __" << tmp << L"__" << std::endl << std::endl;
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   117
	if(iIsStub)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   118
		{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   119
		iController->AddIbyEntry (outStream, iVerbose, iCompatible);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   120
		}
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   121
	else
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   122
		{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   123
		iSisContents.AddIbyEntry (outStream, iVerbose, iCompatible);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   124
		}
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   125
	
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   126
	outStream << std::endl << KStubSisMsg << std::endl;
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   127
	outStream << std::endl << L"#endif __" << tmp << L"__" << std::endl;
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   128
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   129
	std::wstring str = inStream.str();
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   130
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   131
	if(!iCompatible)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   132
		{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   133
		std::string ns(str.begin(), str.end());
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   134
		WriteToFile(aIbyFileName, reinterpret_cast<const TUint8*>(ns.c_str()), ns.length());
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   135
		}
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   136
	else
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   137
		WriteToFile(aIbyFileName, reinterpret_cast<const TUint8*>(str.c_str()), str.length()*2);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   138
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   139
		
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   140
	}
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   141
0
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   142
void CDumpSis::CreatePackage(const CSISController& aSisController, const std::wstring& aPkgFileName)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   143
	{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   144
	std::wistringstream inStream (std::ios::in | std::ios::out);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   145
	std::wostream outStream (inStream.rdbuf ());
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   146
26
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   147
	if(iCompatible)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   148
		outStream << wchar_t(0xfeff);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   149
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   150
	aSisController.AddPackageEntry (outStream, iVerbose, iCompatible);
0
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   151
	std::wstring str = inStream.str();
26
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   152
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   153
	if(!iCompatible)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   154
		{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   155
		std::string ns(str.begin(), str.end());
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   156
		WriteToFile(aPkgFileName, reinterpret_cast<const TUint8*>(ns.c_str()), ns.length());
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   157
		}
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   158
	else
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   159
		WriteToFile(aPkgFileName, reinterpret_cast<const TUint8*>(str.c_str()), str.length()*2);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   160
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   161
	}
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   162
void CDumpSis::CreateIbyFile(const CSISController& aSisController, const std::wstring& aIbyFileName)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   163
	{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   164
	std::wistringstream inStream (std::ios::in | std::ios::out);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   165
	std::wostream outStream (inStream.rdbuf ());
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   166
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   167
	if(iCompatible)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   168
		outStream << wchar_t(0xfeff);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   169
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   170
	std::wstring tmp;
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   171
	int index = aIbyFileName.find_last_of(L"/");
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   172
	if(index!=-1)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   173
		tmp = aIbyFileName.substr(index+1,aIbyFileName.length()-index-1);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   174
	else
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   175
		tmp = aIbyFileName;
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   176
	
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   177
	index = tmp.find_last_of(L".");
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   178
	if(index!=-1)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   179
		tmp = tmp.replace(index,1,L"_");
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   180
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   181
	std::transform(tmp.begin(), tmp.end(), tmp.begin(), towupper);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   182
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   183
	outStream << L"#ifndef __" << tmp << L"__" << std::endl;
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   184
	outStream << L"#define __" << tmp << L"__" << std::endl << std::endl;
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   185
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   186
	aSisController.AddIbyEntry (outStream, iVerbose, iCompatible);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   187
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   188
	outStream << std::endl << KStubSisMsg << std::endl;
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   189
	outStream << std::endl << L"#endif __" << tmp << L"__" << std::endl;
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   190
	std::wstring str = inStream.str();
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   191
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   192
	if(!iCompatible)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   193
		{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   194
		std::string ns(str.begin(), str.end());
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   195
		WriteToFile(aIbyFileName, reinterpret_cast<const TUint8*>(ns.c_str()), ns.length());
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   196
		}
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   197
	else
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   198
		WriteToFile(aIbyFileName, reinterpret_cast<const TUint8*>(str.c_str()), str.length()*2);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   199
	
0
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   200
	}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   201
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   202
void CDumpSis::ExtractFiles(const std::wstring& aTargetDir, TExtractionLevel aLevel)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   203
	{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   204
	std::wstring targetDir = aTargetDir;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   205
	CreateTargetDir(targetDir);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   206
	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   207
	switch(aLevel)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   208
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   209
		case EOnlyPackage:
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   210
			{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   211
			ExtractBasePackageFile(targetDir);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   212
			break;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   213
			}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   214
		case ECertificates:
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   215
			{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   216
			ExtractCertificates(*iController, targetDir);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   217
			break;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   218
			}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   219
		case EBaseFiles:
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   220
			{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   221
			ExtractFiles(*iController, targetDir);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   222
			break;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   223
			}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   224
		case EAllDataFiles:
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   225
			{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   226
			ExtractBasePackageFile(targetDir);	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   227
			ExtractFiles(*iController, targetDir);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   228
			ExtractNestedSisFile(targetDir, *iController, false, 0, iSisContents.SisData().DataUnitCount());
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   229
			break;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   230
			}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   231
		case EAllButCerts:
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   232
			{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   233
			ExtractBasePackageFile(targetDir);	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   234
			ExtractFiles(*iController, targetDir);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   235
			ExtractNestedSisFile(targetDir, *iController, true, 0, iSisContents.SisData().DataUnitCount());
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   236
			break;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   237
			}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   238
		case EEverything:
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   239
			{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   240
			ExtractBasePackageFile(targetDir);	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   241
			ExtractFiles(*iController, targetDir);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   242
			ExtractNestedSisFile(targetDir, *iController, true, 0, iSisContents.SisData().DataUnitCount());
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   243
			ExtractAllCertificates(targetDir);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   244
			break;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   245
			}
26
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   246
		case EIbyFiles:
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   247
			{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   248
			ExtractIBYFile(targetDir);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   249
			ExtractBasePackageFile(targetDir);	
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   250
			ExtractFiles(*iController, targetDir);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   251
			ExtractNestedSisFile(targetDir, *iController, true, 0, iSisContents.SisData().DataUnitCount());
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   252
			ExtractAllCertificates(targetDir);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   253
			break;
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   254
			}
0
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   255
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   256
	}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   257
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   258
void CDumpSis::ExtractAllCertificates(const std::wstring& aTargetDir)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   259
	{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   260
	ExtractCertificates(*iController, aTargetDir);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   261
	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   262
	TControllerMap controllerList;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   263
	iController->InstallBlock().GetEmbeddedControllers(controllerList);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   264
	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   265
	for (TControllerMapConstIter iter = controllerList.begin(); iter != controllerList.end(); ++iter)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   266
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   267
		wchar_t pathName[20];
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   268
		swprintf(pathName, 20, L"sis%d", iter->first);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   269
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   270
		std::wstring extractionPath = aTargetDir + KSisDirectorySeparator + pathName;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   271
		CreateTargetDir(extractionPath);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   272
		ExtractCertificates(*iter->second, extractionPath);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   273
		}	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   274
	}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   275
void CDumpSis::ExtractCertificates(const CSISController& aSisController, const std::wstring& aTargetDir)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   276
	{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   277
	TUint32 certChainCount = aSisController.SignatureCount();
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   278
	for(TUint32 i = 0; i < certChainCount; ++i)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   279
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   280
		wchar_t certName[30];
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   281
		swprintf(certName, 30, L"certChain%d%d.der", aSisController.DataIndex(), i+1);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   282
		std::wstring certFullPath = aTargetDir + KSisDirectorySeparator + certName;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   283
		const CCertChainData certChain = aSisController.SignatureCertChain(i).CertificateChain();
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   284
		const TUint8* certChainData = certChain.CertificateData().Data();
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   285
		TUint32 certSize =  certChain.CertificateData().Size();
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   286
		WriteToFile(certFullPath, certChainData, certSize);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   287
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   288
	}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   289
26
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   290
void CDumpSis::ExtractIBYFile(const std::wstring& aTargetDir)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   291
	{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   292
	std::wstring ibyFileName = iSisFileName;
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   293
	ibyFileName = FixPathDelimiters(ibyFileName);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   294
	SisFileNameToIbyFileName(ibyFileName);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   295
	ibyFileName = aTargetDir + KSisDirectorySeparator + ibyFileName;
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   296
	CreateIbyFile(ibyFileName);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   297
	}
0
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   298
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   299
void CDumpSis::ExtractBasePackageFile(const std::wstring& aTargetDir)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   300
	{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   301
	std::wstring pkgFileName = iSisFileName;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   302
	pkgFileName = FixPathDelimiters(pkgFileName);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   303
	SisFileNameToPkgFileName(pkgFileName);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   304
	pkgFileName = aTargetDir + KSisDirectorySeparator + pkgFileName;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   305
	CreatePackage(pkgFileName);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   306
	}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   307
void CDumpSis::ExtractFiles(const CSISController& aSisController, const std::wstring& aTargetDir, int aBaseIndex)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   308
	{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   309
	if(iIsStub)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   310
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   311
		// There is no data associated with stub sis file.
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   312
		return;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   313
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   314
	TFileDescList fileList;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   315
	aSisController.InstallBlock().GetFileList(fileList);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   316
	// Controller's index is relative to base controller's index.
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   317
	TUint32 dataIndex = aBaseIndex + aSisController.DataIndex();
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   318
	if(dataIndex >= iSisContents.SisData().DataUnitCount())
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   319
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   320
		return;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   321
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   322
	const CSISDataUnit& dataUnit = iSisContents.SisData().DataUnit(dataIndex);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   323
	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   324
	const CSISLogo& logo = aSisController.Logo();
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   325
	if(!logo.WasteOfSpace())
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   326
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   327
		const CSISFileDescription& logoFile = logo.FileDesc();
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   328
		const wchar_t* fileName = logoFile.GetFileName();
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   329
		std::wstring filePath = aTargetDir + KSisDirectorySeparator + fileName;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   330
		const CSISFileData& fileData = dataUnit.FileData(logoFile.FileIndex());
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   331
		WriteToFile(filePath, fileData.Data(), fileData.UncompressedSize());
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   332
		delete[] const_cast<wchar_t*>(fileName);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   333
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   334
	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   335
	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   336
	if(dataUnit.FileCount() <= 0)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   337
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   338
		return; // No files present to extract.
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   339
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   340
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   341
	for(int i = 0; i < fileList.size(); ++i)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   342
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   343
		const CSISFileDescription* fdesc = fileList[i];
26
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   344
0
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   345
		const CSISFileData& fileData = dataUnit.FileData(fdesc->FileIndex());
26
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   346
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   347
		if(!iCompatible)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   348
			{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   349
			std::wstring filePath = fdesc->Target().GetString();
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   350
			std::wstring fileNameOnly;
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   351
			int index = filePath.find_last_of(L"\\");
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   352
			if(index!=-1)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   353
				{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   354
				fileNameOnly = filePath.substr(index+1,filePath.length()-index-1);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   355
				filePath = filePath.substr(0, index+1);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   356
				index = filePath.find_first_of(L":");
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   357
				if(index!=-1)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   358
					{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   359
					filePath = filePath.substr(index+2,filePath.length()-index-2);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   360
					}
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   361
				filePath = aTargetDir + KSisDirectorySeparator+filePath;
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   362
				CreateTargetDir(filePath);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   363
				try
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   364
					{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   365
					WriteToFile(filePath+fileNameOnly, fileData.Data(), fileData.UncompressedSize());
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   366
					}
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   367
					catch(...){}
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   368
				}
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   369
			}
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   370
		else
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   371
			{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   372
			const wchar_t* fileName = fdesc->GetFileName();
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   373
			std::wstring filePath = aTargetDir + KSisDirectorySeparator + fileName;
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   374
			WriteToFile(filePath, fileData.Data(), fileData.UncompressedSize());
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   375
			delete[] const_cast<wchar_t*>(fileName);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   376
			}
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   377
	
0
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   378
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   379
	}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   380
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   381
void CDumpSis::ExtractNestedSisFile(const std::wstring& aTargetDir, 
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   382
									const CSISController& aController,
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   383
									bool aExtractSis,
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   384
									int aStartIndex, 
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   385
									int aEndIndex)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   386
	{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   387
	TControllerMap controllerList;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   388
	aController.InstallBlock().GetEmbeddedControllers(controllerList);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   389
	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   390
	for (TControllerMapConstIter iter = controllerList.begin(); iter != controllerList.end(); ++iter)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   391
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   392
		TControllerMapConstIter nextIter = iter;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   393
		int curindex = iter->second->DataIndex();
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   394
		int maxDataUnit = 0;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   395
		if (++nextIter != controllerList.end())
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   396
			{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   397
			maxDataUnit = nextIter->first;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   398
			}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   399
		else
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   400
			{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   401
			maxDataUnit = aEndIndex;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   402
			}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   403
		wchar_t pathName[20];
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   404
#ifdef _MSC_VER
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   405
		swprintf(pathName, L"sis%d", iter->second->GetControllerID());
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   406
#else
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   407
		swprintf(pathName, 20, L"sis%d", iter->second->GetControllerID());
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   408
#endif //_MSC_VER
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   409
		
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   410
		if(aExtractSis)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   411
			{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   412
			std::wstring sisPath = aTargetDir + KSisDirectorySeparator + pathName + L".sis";
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   413
			CSISController* ctl = const_cast<CSISController*>(iter->second);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   414
			CreateEmbeddedSis(sisPath, *ctl, aStartIndex + iter->first, maxDataUnit);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   415
			}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   416
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   417
		std::wstring extractionPath = aTargetDir + KSisDirectorySeparator + pathName;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   418
		CreateTargetDir(extractionPath);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   419
		ExtractFiles(*iter->second, extractionPath, aStartIndex);
26
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   420
		std::wstring ibyExtractionPath = extractionPath;
0
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   421
		extractionPath = extractionPath + KSisDirectorySeparator + pathName + L".pkg";
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   422
		CreatePackage(*iter->second, extractionPath);
26
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   423
		ibyExtractionPath = ibyExtractionPath + KSisDirectorySeparator + pathName + L".iby";
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   424
		CreateIbyFile(*iter->second, ibyExtractionPath);
0
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   425
		ExtractNestedSisFile(aTargetDir, *(iter->second), aExtractSis, aStartIndex + iter->first, maxDataUnit);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   426
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   427
	}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   428
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   429
void CDumpSis::CreateTargetDir(std::wstring& aTargetDir)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   430
	{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   431
	aTargetDir = FixPathDelimiters(aTargetDir);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   432
	if(CreateDir(aTargetDir.c_str()) != 0)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   433
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   434
		return;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   435
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   436
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   437
	int err = GetErrorValue();
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   438
	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   439
	switch (err)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   440
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   441
		case ERROR_ALREADY_EXISTS:
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   442
			{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   443
			int attrs;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   444
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   445
			if (0xFFFFFFFF != (attrs = FileAttributes(aTargetDir.c_str())))
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   446
				{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   447
				if (!(attrs & FILE_ATTRIBUTE_DIRECTORY))
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   448
					{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   449
					throw CSISException::EDirIsFile;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   450
					}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   451
				else if (attrs & FILE_ATTRIBUTE_READONLY)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   452
					{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   453
					throw CSISException::EPermissionDenied;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   454
					}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   455
				}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   456
			else
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   457
				{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   458
				throw CSISException::EInvalidDestination;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   459
				}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   460
			break;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   461
			}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   462
		case ERROR_PATH_NOT_FOUND:
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   463
			CreateDirectoriesRecursively(aTargetDir);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   464
			break;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   465
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   466
		case ERROR_ACCESS_DENIED:
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   467
			throw CSISException::EInvalidDestination;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   468
			break;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   469
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   470
		case ERROR_INVALID_NAME:
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   471
			aTargetDir = L".";
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   472
			break;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   473
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   474
		default:
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   475
			throw CSISException::EInvalidDestination;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   476
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   477
	}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   478
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   479
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   480
void CDumpSis::CreateDirectoriesRecursively(std::wstring aTargetDir)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   481
	{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   482
	int pos = aTargetDir.find(L'/');
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   483
	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   484
	if(0 == pos)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   485
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   486
		// Path starting with "/" can be skipped
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   487
		pos = aTargetDir.find(L'/', 1);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   488
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   489
	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   490
	while(pos != std::wstring::npos)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   491
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   492
		std::wstring path = aTargetDir.substr(0, pos);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   493
		
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   494
		if (0 == CreateDir(path.c_str()))
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   495
			{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   496
			int err = GetErrorValue();
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   497
			switch(err)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   498
				{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   499
				case ERROR_ACCESS_DENIED:
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   500
					{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   501
					// If this is caused by a path like "D:" we can continue
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   502
					bool validPath = ((aTargetDir.size() >= 2) && (isalpha(aTargetDir[0])) && (aTargetDir[1] ==L':'));
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   503
					if (!validPath)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   504
						{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   505
						throw CSISException::EInvalidDestination;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   506
						}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   507
					break;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   508
					}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   509
	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   510
				case ERROR_ALREADY_EXISTS:
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   511
					// NOOP
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   512
					break;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   513
	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   514
				default:
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   515
					throw CSISException::EInvalidDestination;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   516
				}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   517
			}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   518
		pos = aTargetDir.find(L'/', pos+1);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   519
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   520
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   521
	if (0 == CreateDir(aTargetDir.c_str()))
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   522
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   523
		if ( GetErrorValue() != ERROR_ALREADY_EXISTS)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   524
			{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   525
			throw CSISException::EInvalidDestination;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   526
			}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   527
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   528
	}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   529
26
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   530
void CDumpSis::SisFileNameToIbyFileName(std::wstring& aFileName)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   531
	{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   532
	int pos = aFileName.find_last_of(L'/');
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   533
	if(std::wstring::npos != pos)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   534
		{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   535
		aFileName = aFileName.substr(pos+1);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   536
		}
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   537
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   538
	for(int i = 0; i < aFileName.size(); ++i)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   539
		{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   540
		aFileName[i] = tolower(aFileName[i]);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   541
		}
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   542
	
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   543
	pos = aFileName.rfind(L".sis");
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   544
	if(std::wstring::npos == pos)
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   545
		{
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   546
		pos = aFileName.rfind(L".ctl");
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   547
		}
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   548
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   549
	aFileName = aFileName.substr(0, pos);
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   550
	aFileName.append(L".iby");
04d4a7bbc3e0 Iby file creation modification
lpyl2111 <>
parents: 0
diff changeset
   551
	}
0
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   552
void CDumpSis::SisFileNameToPkgFileName(std::wstring& aFileName)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   553
	{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   554
	int pos = aFileName.find_last_of(L'/');
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   555
	if(std::wstring::npos != pos)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   556
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   557
		aFileName = aFileName.substr(pos+1);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   558
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   559
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   560
	for(int i = 0; i < aFileName.size(); ++i)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   561
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   562
		aFileName[i] = tolower(aFileName[i]);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   563
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   564
	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   565
	pos = aFileName.rfind(L".sis");
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   566
	if(std::wstring::npos == pos)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   567
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   568
		pos = aFileName.rfind(L".ctl");
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   569
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   570
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   571
	aFileName = aFileName.substr(0, pos);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   572
	aFileName.append(L".pkg");
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   573
	}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   574
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   575
void CDumpSis::CreateEmbeddedSis(const std::wstring& aFileName, CSISController& aController, int aStart, int aEnd)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   576
	{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   577
	const CSISData& parentSisData = iSisContents.SisData();
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   578
	TUint32 dataIndex = aController.DataIndex();
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   579
	aController.SetDataIndex(0);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   580
	CSISCompressed<CSISController> compressedController(aController);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   581
	aController.SetDataIndex(dataIndex);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   582
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   583
	CSISData sisData;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   584
	for (int i = aStart; i < aEnd; ++i)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   585
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   586
		sisData.AddDataUnit(parentSisData.DataUnit(i));
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   587
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   588
	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   589
	CSISContents contents(	const_cast<CSISControllerChecksum&>(iSisContents.ControllerChecksum()),
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   590
							const_cast<CSISDataChecksum&>(iSisContents.DataChecksum()),
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   591
							compressedController,
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   592
							sisData
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   593
						 	);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   594
	
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   595
	contents.Save(aFileName);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   596
	}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   597
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   598
void CDumpSis::GetCapVerifiedFileList(TFileCapTestList& aFileCapList)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   599
	{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   600
	TFileDescList fileList;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   601
	iSisContents.Controller().InstallBlock().GetFileList(fileList);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   602
	const CSISDataUnit& dataUnit = iSisContents.SisData().DataUnit(0);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   603
	int fileCount = fileList.size();
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   604
	for(int i = 0; i < fileCount; ++i)
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   605
		{
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   606
		const CSISFileDescription* fdesc = fileList[i];
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   607
		const wchar_t* fileName = L"symbiantemp.xyz";
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   608
		const CSISFileData& fileData = dataUnit.FileData(fdesc->FileIndex());
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   609
		WriteToFile(fileName, fileData.Data(), fileData.UncompressedSize());
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   610
		CSISCapabilities capObj;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   611
		capObj.ExtractCapabilities(fileName);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   612
		TFileCapTest fileCapTest;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   613
		fileCapTest.iFileDesc = fdesc;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   614
		fileCapTest.iActualCap = capObj.Capabilities();
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   615
		fileCapTest.iCapVerified = (fileCapTest.iActualCap == fileList[i]->Capabilities())? true : false;
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   616
		aFileCapList.push_back(fileCapTest);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   617
		MakeSISDeleteFile(fileName);
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   618
		}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   619
	}
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   620
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   621
ba25891c3a9e Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   622
// End Of File