diff -r cd189dac02f7 -r 5cc91383ab1e secureswitools/swisistools/source/interpretsislib/sisregistry.cpp --- a/secureswitools/swisistools/source/interpretsislib/sisregistry.cpp Thu Jul 15 18:47:04 2010 +0300 +++ b/secureswitools/swisistools/source/interpretsislib/sisregistry.cpp Thu Aug 19 10:02:49 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2006-2010 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" @@ -51,6 +51,7 @@ // SisX Library Includes #include "sisfiledescription.h" #include "sisstring.h" +#include "utility.h" // User Includes #include "sisregistry.h" @@ -64,9 +65,15 @@ #include "configmanager.h" // Constants +#ifndef __TOOLS2_LINUX__ const std::wstring SisRegistry::KPathToRegistry(L"\\sys\\install\\sisregistry/"); const std::wstring SisRegistry::KPathToRomStubs(L"\\system\\install\\"); const std::wstring SisRegistry::KPathToRegistryVersionMarker(L"\\system\\data\\"); +#else +const std::wstring SisRegistry::KPathToRegistry(L"/sys/install/sisregistry/"); +const std::wstring SisRegistry::KPathToRomStubs(L"/system/install/"); +const std::wstring SisRegistry::KPathToRegistryVersionMarker(L"/system/data/"); +#endif const std::wstring KRegistryEntry(L"00000000.reg"); const std::wstring KControllerEntry(L"00000000_0000.ctl"); const std::wstring KBackupLst(L"backup.lst"); @@ -81,9 +88,13 @@ const std::wstring SisRegistry::KRegistryV52(L"sisregistry_5.2.txt"); const std::wstring SisRegistry::KRegistryV53(L"sisregistry_5.3.txt"); const std::wstring SisRegistry::KRegistryV54(L"sisregistry_5.4.txt"); +#ifndef __TOOLS2_LINUX__ const std::wstring SisRegistry::KRomStubDir(L"z:\\system\\install\\"); const std::wstring SisRegistry::KRomRegistryVersionMarker(L"z:\\system\\data\\"); - +#else +const std::wstring SisRegistry::KRomStubDir(L"z:/system/install/"); +const std::wstring SisRegistry::KRomRegistryVersionMarker(L"z:/system/data/"); +#endif const std::string SisRegistry::KRegistryV40string("4.0"); const std::string SisRegistry::KRegistryV50string("5.0"); const std::string SisRegistry::KRegistryV51string("5.1"); @@ -545,9 +556,7 @@ while(it != iEntries.end()) { - if (aUid == it->first && - aPackageName == it->second->GetPackageName() && - aVendorName == it->second->GetVendorName()) + if (aUid == it->first && !wcscmp(aPackageName.c_str(), it->second->GetPackageName().c_str()) && aVendorName == it->second->GetVendorName() ) { LINFO(L"Removing package \"" << it->second->GetPackageName() << L"\" prior to re-installation"); @@ -948,7 +957,11 @@ { return (aFileName.find(L'?') != std::wstring::npos || aFileName.find(L'*') != std::wstring::npos || + #ifndef __TOOLS2_LINUX__ aFileName[aFileName.length() - 1] == L'\\'); + #else + aFileName[aFileName.length() - 1] == L'/'); + #endif } @@ -1030,7 +1043,11 @@ continue; std::fstream input; + #ifndef __TOOLS2_LINUX__ std::wstring filename(aPath + L"\\" + *c); + #else + std::wstring filename(aPath + L"/" + *c); + #endif OpenFile(filename.c_str(), input, std::fstream::in | std::fstream::binary); @@ -1041,7 +1058,7 @@ if (!obj) { - throw std::runtime_error("Cannot create SisRegistryObject for " + Ucs2ToUtf8(filename)); + throw std::runtime_error("Cannot create SisRegistryObject for " + wstring2string(filename)); } Deserialiser des(input); @@ -1241,7 +1258,7 @@ msg.append(L" does not have any SisRegistry file"); - throw std::runtime_error( Ucs2ToUtf8(msg) ); + throw std::runtime_error( wstring2string(msg) ); } aObj.SetIndex( index ); @@ -1253,7 +1270,7 @@ msg.append(L" directory NOT found"); - throw std::runtime_error( Ucs2ToUtf8(msg) ); + throw std::runtime_error( wstring2string(msg) ); } } } @@ -1276,7 +1293,7 @@ msg.append(L" directory NOT found"); - throw std::runtime_error( Ucs2ToUtf8(msg) ); + throw std::runtime_error( wstring2string(msg) ); } } } @@ -1329,7 +1346,7 @@ msg.append(L" does not have any Sis Controller file"); - throw std::runtime_error( Ucs2ToUtf8(msg) ); + throw std::runtime_error( wstring2string(msg) ); } } @@ -1447,32 +1464,34 @@ void SisRegistry::UpdateInstallationInformation(XmlDetails::TScrPreProvisionDetail aScrPreProvisionDetail) { - CXmlGenerator xmlgenerator; - char* tmpFileName = tmpnam(NULL); + CXmlGenerator xmlGenerator; + char* tmpFileName = tmpnam(NULL); std::wstring filename(string2wstring(tmpFileName)); - - xmlgenerator.WritePreProvisionDetails(filename , aScrPreProvisionDetail); - + + int isRomApplication = 0; + xmlGenerator.WritePreProvisionDetails(filename , aScrPreProvisionDetail, isRomApplication); + + #ifdef __LINUX__ + std::string executable = "scrtool"; + #else std::string executable = "scrtool.exe"; + #endif + std::string command; command = executable + " -d " + GetDbPath() + " -p " + tmpFileName; - + int error = system(command.c_str()); - + + int err = remove(tmpFileName); + if(err != 0) + LERROR(L"Temporary file removal failed."); + if(error != 0) { std::string err = "Scrtool failed to upload the database registry entry."; LERROR(L"Scrtool failed to upload the database registry entry."); throw InterpretSisError(err, DATABASE_UPDATE_FAILED); } - - error = remove(tmpFileName); - - if(error != 0) - { - LERROR(L"Temporary file removal failed."); - } - } std::string SisRegistry::GetDbPath() @@ -1482,10 +1501,17 @@ iParamList.IsFlagSet(CParameterList::EFlagsDisableZDriveChecksSet) ) { + #ifndef __TOOLS2_LINUX__ return wstring2string(iParamList.SystemDrivePath()) + "\\sys\\install\\scr\\scr.db"; + #else + return wstring2string(iParamList.SystemDrivePath()) + "/sys/install/scr/scr.db"; + #endif } - + #ifndef __TOOLS2_LINUX__ return wstring2string(iParamList.RomDrivePath()) + "\\sys\\install\\scr\\provisioned\\scr.db"; + #else + return wstring2string(iParamList.RomDrivePath()) + "/sys/install/scr/provisioned/scr.db"; + #endif } @@ -1819,8 +1845,8 @@ // The property is a concatenation of the algorithm id and the hash data const std::string hashData = aHashContainer.GetData(); - std::string encodedHashData = Util::Base64Encode(hashData); - std::wstring wideHashData = Utils::string2wstring(encodedHashData); + std::string encodedHashData = Util::Base64Encode(hashData); + std::wstring wideHashData = string2wstring(encodedHashData); AddComponentProperty( aComponent, DbConstants::CompControllerHashData, wideHashData, aCount, true); } @@ -2014,7 +2040,7 @@ if(!aFileDescription->GetHash().GetData().empty()) { std::string binHashData = Util::Base64Encode(aFileDescription->GetHash().GetData()); - std::wstring hashData = Utils::string2wstring(binHashData); + std::wstring hashData = string2wstring(binHashData); AddFileProperty( aComponentFile, DbConstants::FileHashData, hashData, true); } }