# HG changeset patch # User lpyl2111 <> # Date 1272031743 -3600 # Node ID 04d4a7bbc3e05d130796e515704ce8132f9cc415 # Parent 98b66e4fb0be86ab81fb612bc4502220d6d003b4 Iby file creation modification diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/dumpsis/main.cpp --- a/secureswitools/swisistools/source/dumpsis/main.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/dumpsis/main.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -116,13 +116,16 @@ SISLogger::SetStream(std::wcout); - CDumpSis dumpsis(options->SISFileName(), options->Verbose()); + CDumpSis dumpsis(options->SISFileName(), options->Verbose(), options->GetCompatibleMode() ); CDumpSis::TExtractionLevel extractionLevel = CDumpSis::ENone; if(options->ExtractFiles()) { - extractionLevel = (options->Verbose())? CDumpSis::EEverything : CDumpSis::EAllButCerts; + if(options->GetIBYFlag()) + extractionLevel = CDumpSis::EIbyFiles; + else + extractionLevel = (options->Verbose())? CDumpSis::EEverything : CDumpSis::EAllButCerts; } else { @@ -146,7 +149,7 @@ switch(oops.ErrorCategory()) { case CSISException::EFileProblem: - std::cerr << "cannot open specified SIS file for reading" << std::endl; + std::cerr << "File I/O error" << std::endl; break; case CSISException::EFileFormat: case CSISException::EMemory: @@ -181,6 +184,10 @@ std::cout << argv[0] << " Finished" << std::endl; getchar (); } + + if(options->GetIBYFlag()) + std::cout << std::endl << "IBY file created. Note, please remember to add stub-SIS file entry to IBY file!" << std::endl; + delete options; return retVal; diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/dumpsis/options.cpp --- a/secureswitools/swisistools/source/dumpsis/options.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/dumpsis/options.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -61,11 +61,13 @@ void Options::DisplayUsage () { - std::cout << "Usage: " << CommandName () << " [-v] [-h] [-x] [-l[-y]][-d directory] filename.sis" << std::endl; + std::cout << "Usage: " << CommandName () << " [-v] [-h] [-x] [-b] [-c] [-l[-y]][-d directory] filename.sis" << std::endl; std::cout << "Where:\t-i\tdisplays verbose output" << std::endl; std::cout << "\t-v\tdisplays version" << std::endl; std::cout << "\t-h\tdisplays this message" << std::endl; std::cout << "\t-x\textracts the files" << std::endl; + std::cout << "\t-b\textracts Iby file(s) too" << std::endl; + std::cout << "\t-c\tcompatible mode" << std::endl; std::cout << "\t-d\tspecifies where you wish to extract the files to" << std::endl; std::cout << "\t-p\tpauses when finishing" << std::endl; std::cout << "\t-l\tlist the executable against their capablities. " << std::endl; @@ -94,7 +96,9 @@ iExtractFilesFlag (false), iPauseOnExit (false), iList(false), - iCreateECI(false) + iCreateECI(false), + iCompatibleMode(false), + iCreateIBYFile(false) { while (--argc) { @@ -153,8 +157,15 @@ case 'Y': iCreateECI = true; break; + case 'c': + case 'C': + iCompatibleMode = true; + break; + case 'b': + case 'B': + iCreateIBYFile = true; + break; - default: throw ECmdLineUnknownOption; } diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/dumpsis/options.h --- a/secureswitools/swisistools/source/dumpsis/options.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/dumpsis/options.h Fri Apr 23 15:09:03 2010 +0100 @@ -69,6 +69,8 @@ bool Version () const { return iVersion; } bool ExtractFiles () const { return iExtractFilesFlag; } bool PauseOnExit () const { return iPauseOnExit; } + bool GetCompatibleMode () const { return iCompatibleMode; } + bool GetIBYFlag () const { return iCreateIBYFile; } /** Return the iList exe flag to which is set to true when -l is specified @@ -101,6 +103,8 @@ bool iPauseOnExit; bool iList; bool iCreateECI; + bool iCompatibleMode; + bool iCreateIBYFile; std::wstring iSISFileName; std::wstring iExtractDirectory; }; diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/dumpsislib/dumpsis.cpp --- a/secureswitools/swisistools/source/dumpsislib/dumpsis.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/dumpsislib/dumpsis.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -33,10 +33,12 @@ #include "siscontroller.h" #include "exception.h" -CDumpSis::CDumpSis(const std::wstring& aSISFileName, bool aVerbose) +#define KStubSisMsg "// *** Please add stub-SIS file entry here ***" +CDumpSis::CDumpSis(const std::wstring& aSISFileName, bool aVerbose, bool aCompatible) : iController(NULL), iSisFileName(aSISFileName), iVerbose(aVerbose), + iCompatible(aCompatible), iIsStub(false) { bool isSiSFile = CSISContents::IsSisFile(aSISFileName); @@ -67,29 +69,134 @@ std::wistringstream inStream (std::ios::in | std::ios::out); std::wostream outStream (inStream.rdbuf ()); - outStream << wchar_t(0xfeff); + if(iCompatible) + outStream << wchar_t(0xfeff); + if(iIsStub) { - iController->AddPackageEntry (outStream, iVerbose); + iController->AddPackageEntry (outStream, iVerbose, iCompatible); } else { - iSisContents.AddPackageEntry (outStream, iVerbose); + iSisContents.AddPackageEntry (outStream, iVerbose, iCompatible); } std::wstring str = inStream.str(); + if(!iCompatible) + { + std::string ns(str.begin(), str.end()); + WriteToFile(aPkgFileName, reinterpret_cast(ns.c_str()), ns.length()); + } + else WriteToFile(aPkgFileName, reinterpret_cast(str.c_str()), str.length()*2); } +void CDumpSis::CreateIbyFile(const std::wstring& aIbyFileName) + { + std::wistringstream inStream (std::ios::in | std::ios::out); + std::wostream outStream (inStream.rdbuf ()); + + if(iCompatible) + outStream << wchar_t(0xfeff); + + std::wstring tmp; + int index = aIbyFileName.find_last_of(L"/"); + if(index!=-1) + tmp = aIbyFileName.substr(index+1,aIbyFileName.length()-index-1); + else + tmp = aIbyFileName; + + index = tmp.find_last_of(L"."); + if(index!=-1) + tmp = tmp.replace(index,1,L"_"); + + std::transform(tmp.begin(), tmp.end(), tmp.begin(), towupper); + + outStream << L"#ifndef __" << tmp << L"__" << std::endl; + outStream << L"#define __" << tmp << L"__" << std::endl << std::endl; + if(iIsStub) + { + iController->AddIbyEntry (outStream, iVerbose, iCompatible); + } + else + { + iSisContents.AddIbyEntry (outStream, iVerbose, iCompatible); + } + + outStream << std::endl << KStubSisMsg << std::endl; + outStream << std::endl << L"#endif __" << tmp << L"__" << std::endl; + + std::wstring str = inStream.str(); + + if(!iCompatible) + { + std::string ns(str.begin(), str.end()); + WriteToFile(aIbyFileName, reinterpret_cast(ns.c_str()), ns.length()); + } + else + WriteToFile(aIbyFileName, reinterpret_cast(str.c_str()), str.length()*2); + + + } + void CDumpSis::CreatePackage(const CSISController& aSisController, const std::wstring& aPkgFileName) { std::wistringstream inStream (std::ios::in | std::ios::out); std::wostream outStream (inStream.rdbuf ()); - outStream << wchar_t(0xfeff); - aSisController.AddPackageEntry (outStream, iVerbose); + if(iCompatible) + outStream << wchar_t(0xfeff); + + aSisController.AddPackageEntry (outStream, iVerbose, iCompatible); std::wstring str = inStream.str(); - WriteToFile(aPkgFileName, reinterpret_cast(str.c_str()), str.length()*2); + + if(!iCompatible) + { + std::string ns(str.begin(), str.end()); + WriteToFile(aPkgFileName, reinterpret_cast(ns.c_str()), ns.length()); + } + else + WriteToFile(aPkgFileName, reinterpret_cast(str.c_str()), str.length()*2); + + } +void CDumpSis::CreateIbyFile(const CSISController& aSisController, const std::wstring& aIbyFileName) + { + std::wistringstream inStream (std::ios::in | std::ios::out); + std::wostream outStream (inStream.rdbuf ()); + + if(iCompatible) + outStream << wchar_t(0xfeff); + + std::wstring tmp; + int index = aIbyFileName.find_last_of(L"/"); + if(index!=-1) + tmp = aIbyFileName.substr(index+1,aIbyFileName.length()-index-1); + else + tmp = aIbyFileName; + + index = tmp.find_last_of(L"."); + if(index!=-1) + tmp = tmp.replace(index,1,L"_"); + + std::transform(tmp.begin(), tmp.end(), tmp.begin(), towupper); + + outStream << L"#ifndef __" << tmp << L"__" << std::endl; + outStream << L"#define __" << tmp << L"__" << std::endl << std::endl; + + aSisController.AddIbyEntry (outStream, iVerbose, iCompatible); + + outStream << std::endl << KStubSisMsg << std::endl; + outStream << std::endl << L"#endif __" << tmp << L"__" << std::endl; + std::wstring str = inStream.str(); + + if(!iCompatible) + { + std::string ns(str.begin(), str.end()); + WriteToFile(aIbyFileName, reinterpret_cast(ns.c_str()), ns.length()); + } + else + WriteToFile(aIbyFileName, reinterpret_cast(str.c_str()), str.length()*2); + } void CDumpSis::ExtractFiles(const std::wstring& aTargetDir, TExtractionLevel aLevel) @@ -136,6 +243,15 @@ ExtractAllCertificates(targetDir); break; } + case EIbyFiles: + { + ExtractIBYFile(targetDir); + ExtractBasePackageFile(targetDir); + ExtractFiles(*iController, targetDir); + ExtractNestedSisFile(targetDir, *iController, true, 0, iSisContents.SisData().DataUnitCount()); + ExtractAllCertificates(targetDir); + break; + } } } @@ -171,6 +287,14 @@ } } +void CDumpSis::ExtractIBYFile(const std::wstring& aTargetDir) + { + std::wstring ibyFileName = iSisFileName; + ibyFileName = FixPathDelimiters(ibyFileName); + SisFileNameToIbyFileName(ibyFileName); + ibyFileName = aTargetDir + KSisDirectorySeparator + ibyFileName; + CreateIbyFile(ibyFileName); + } void CDumpSis::ExtractBasePackageFile(const std::wstring& aTargetDir) { @@ -217,11 +341,40 @@ for(int i = 0; i < fileList.size(); ++i) { const CSISFileDescription* fdesc = fileList[i]; - const wchar_t* fileName = fdesc->GetFileName(); - std::wstring filePath = aTargetDir + KSisDirectorySeparator + fileName; + const CSISFileData& fileData = dataUnit.FileData(fdesc->FileIndex()); - WriteToFile(filePath, fileData.Data(), fileData.UncompressedSize()); - delete[] const_cast(fileName); + + if(!iCompatible) + { + std::wstring filePath = fdesc->Target().GetString(); + std::wstring fileNameOnly; + int index = filePath.find_last_of(L"\\"); + if(index!=-1) + { + fileNameOnly = filePath.substr(index+1,filePath.length()-index-1); + filePath = filePath.substr(0, index+1); + index = filePath.find_first_of(L":"); + if(index!=-1) + { + filePath = filePath.substr(index+2,filePath.length()-index-2); + } + filePath = aTargetDir + KSisDirectorySeparator+filePath; + CreateTargetDir(filePath); + try + { + WriteToFile(filePath+fileNameOnly, fileData.Data(), fileData.UncompressedSize()); + } + catch(...){} + } + } + else + { + const wchar_t* fileName = fdesc->GetFileName(); + std::wstring filePath = aTargetDir + KSisDirectorySeparator + fileName; + WriteToFile(filePath, fileData.Data(), fileData.UncompressedSize()); + delete[] const_cast(fileName); + } + } } @@ -264,8 +417,11 @@ std::wstring extractionPath = aTargetDir + KSisDirectorySeparator + pathName; CreateTargetDir(extractionPath); ExtractFiles(*iter->second, extractionPath, aStartIndex); + std::wstring ibyExtractionPath = extractionPath; extractionPath = extractionPath + KSisDirectorySeparator + pathName + L".pkg"; CreatePackage(*iter->second, extractionPath); + ibyExtractionPath = ibyExtractionPath + KSisDirectorySeparator + pathName + L".iby"; + CreateIbyFile(*iter->second, ibyExtractionPath); ExtractNestedSisFile(aTargetDir, *(iter->second), aExtractSis, aStartIndex + iter->first, maxDataUnit); } } @@ -371,6 +527,28 @@ } } +void CDumpSis::SisFileNameToIbyFileName(std::wstring& aFileName) + { + int pos = aFileName.find_last_of(L'/'); + if(std::wstring::npos != pos) + { + aFileName = aFileName.substr(pos+1); + } + + for(int i = 0; i < aFileName.size(); ++i) + { + aFileName[i] = tolower(aFileName[i]); + } + + pos = aFileName.rfind(L".sis"); + if(std::wstring::npos == pos) + { + pos = aFileName.rfind(L".ctl"); + } + + aFileName = aFileName.substr(0, pos); + aFileName.append(L".iby"); + } void CDumpSis::SisFileNameToPkgFileName(std::wstring& aFileName) { int pos = aFileName.find_last_of(L'/'); diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/dumpsislib/dumpsis.h --- a/secureswitools/swisistools/source/dumpsislib/dumpsis.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/dumpsislib/dumpsis.h Fri Apr 23 15:09:03 2010 +0100 @@ -57,6 +57,7 @@ EAllDataFiles, // Extract all files including those present in the embedded SIS. EAllButCerts, // EAllFiles + Embedded SIS files and their packages EEverything, // EAllButCerts + certificates + EIbyFiles // EAllButCerts + certificates +IBY files }; public: /** @@ -64,7 +65,7 @@ * in memory for future operation. In case of an invalid SIS the * constructor will throw an exception. */ - explicit CDumpSis(const std::wstring& aSISFileName, bool aVerbose = false); + explicit CDumpSis(const std::wstring& aSISFileName, bool aVerbose = false, bool aCompatible = false); /** * Desctructor. Will delete or free the owned resources. */ @@ -77,12 +78,24 @@ */ void CreatePackage(const std::wstring& aPkgFileName); /** + * This function will create the iby file for the SIS file. + * @param Name of the iby file to be created. + */ + void CreateIbyFile(const std::wstring& aIbyFileName); + /** * This function will generate package file for a specific controller. * @param aSisController controller for which the package file needs to be generated. * @param aPkgFileName Name of the package file to be created. */ void CreatePackage(const CSISController& aSisController, const std::wstring& aPkgFileName); /** + * This function will generate iby file for a specific controller. + * @param aSisController controller for which the iby file needs to be generated. + * @param aIbyFileName Name of the iby file to be created. + */ + void CreateIbyFile(const CSISController& aSisController, const std::wstring& aIbyFileName); + + /** * This will extract contents of the SIS file based on the extraction level provided. * Please refer TExtractionLevel for details. * @param aTargetDir Directory to which the contents to be extracted. @@ -102,6 +115,11 @@ */ void ExtractBasePackageFile(const std::wstring& aTargetDir); /** + * Extract the iby file to a specified directory. + * @param aTargetDir Directory to which the iby file needs to be extracted. + */ + void ExtractIBYFile(const std::wstring& aTargetDir); + /** * Extract all the certificate chains present in the sis file. * @param aTargetDir Destination folder. */ @@ -123,6 +141,7 @@ void CreateTargetDir(std::wstring& aTargetDir); void CreateDirectoriesRecursively(std::wstring aTargetDir); void SisFileNameToPkgFileName(std::wstring& aFileName); + void SisFileNameToIbyFileName(std::wstring& aFileName); void CreateEmbeddedSis(const std::wstring& aFileName, CSISController& aController, int aStart, int aEnd); void ExtractNestedSisFile( const std::wstring& aTargetDir, const CSISController& aController, @@ -139,6 +158,7 @@ CSISController* iController; std::wstring iSisFileName; TBool iVerbose; + TBool iCompatible; TBool iIsStub; }; diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/blob.h --- a/secureswitools/swisistools/source/sisxlibrary/blob.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/blob.h Fri Apr 23 15:09:03 2010 +0100 @@ -172,8 +172,10 @@ * @param aStream - Stream in which the package entries need to be written. * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; private: void Duplicate (const CBlob & aInitialiser); @@ -467,7 +469,7 @@ } template inline - void CBlob ::AddPackageEntry(std::wostream& aStream, bool aVerbose) const + void CBlob ::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { if(aVerbose) { diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/certchaindata.h --- a/secureswitools/swisistools/source/sisxlibrary/certchaindata.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/certchaindata.h Fri Apr 23 15:09:03 2010 +0100 @@ -60,8 +60,10 @@ * @param aStream - Stream in which the package entries need to be written. * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; private: CSISBlob iCertificateData; @@ -91,7 +93,7 @@ } -inline void CCertChainData::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +inline void CCertChainData::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { if(aVerbose) { diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/checksum.h --- a/secureswitools/swisistools/source/sisxlibrary/checksum.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/checksum.h Fri Apr 23 15:09:03 2010 +0100 @@ -71,8 +71,19 @@ * @param aStream - Stream in which the package entries need to be written. * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; + /** + * Adds the write the iby file details into the stream. + * @param aStream - Stream in which the iby entry need to be written. + * @param aVerbose - If this option is set then detail description of iby + * will be written into the stream. + * @param aCompatible - Flag to notify AddIbyEntry that Dumpsis works in the original,compatible mode + * or in the new way. + */ + void AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; private: CSISUInt16 iDataChecksum; @@ -126,7 +137,16 @@ #endif // GENERATE_ERRORS template inline - void CChecksum ::AddPackageEntry(std::wostream& aStream, bool aVerbose) const + void CChecksum ::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const + { + if(aVerbose) + { + aStream << L"; CRC16: " << std::hex << iDataChecksum.Value() << std::dec << std::endl; + } + } + +template inline + void CChecksum ::AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { if(aVerbose) { diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/datetime.cpp --- a/secureswitools/swisistools/source/sisxlibrary/datetime.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/datetime.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -71,10 +71,10 @@ iTime.Set (gmt -> tm_hour, gmt -> tm_min, gmt -> tm_sec); } -void CSISDateTime::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISDateTime::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { - iDate.AddPackageEntry(aStream, aVerbose); + iDate.AddPackageEntry(aStream, aVerbose, aCompatible); aStream << L" "; - iTime.AddPackageEntry(aStream, aVerbose); + iTime.AddPackageEntry(aStream, aVerbose, aCompatible); } diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/fieldroot.h --- a/secureswitools/swisistools/source/sisxlibrary/fieldroot.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/fieldroot.h Fri Apr 23 15:09:03 2010 +0100 @@ -213,8 +213,19 @@ * @param aStream - Stream in which the package entries need to be written. * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - virtual void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + virtual void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; + /** + * Adds the write the iby file details into the stream. + * @param aStream - Stream in which the iby entry need to be written. + * @param aVerbose - If this option is set then detail description of iby + * will be written into the stream. + * @param aCompatible - Flag to notify AddIbyEntry that Dumpsis works in the original,compatible mode + * or in the new way. + */ + virtual void AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; /** * Class name */ @@ -301,11 +312,25 @@ #endif // GENERATE_ERRORS }; - -inline void CSISFieldRoot::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +// +// Default AddPackageEntry function. +// Might be overridden by sub-classes +// +inline void CSISFieldRoot::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { (void)aStream; (void)aVerbose; + (void)aCompatible; + } +// +// Default AddIbyEntry function. +// Might be overridden by sub-classes +// +inline void CSISFieldRoot::AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const + { + (void)aStream; + (void)aVerbose; + (void)aCompatible; } inline void CSISFieldRoot::InitInstance () diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/signaturecertchaindata.h --- a/secureswitools/swisistools/source/sisxlibrary/signaturecertchaindata.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/signaturecertchaindata.h Fri Apr 23 15:09:03 2010 +0100 @@ -51,7 +51,8 @@ inline CSISArray & Signatures(); inline const CCertChainData& CertificateChain() const; inline void AddSignature(CSignatureData& aSignature); - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; + void AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; protected: CSISArray iSignatures; @@ -102,13 +103,23 @@ iSignatures.Push(aSignature); } -inline void CSignatureCertChainData::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +inline void CSignatureCertChainData::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { if (aVerbose) { aStream << L"; Signing chain:" << std::endl; - iCertificateChain.AddPackageEntry(aStream, aVerbose); - iSignatures.AddPackageEntry(aStream, aVerbose); + iCertificateChain.AddPackageEntry(aStream, aVerbose, aCompatible); + iSignatures.AddPackageEntry(aStream, aVerbose, aCompatible); + } + } + +inline void CSignatureCertChainData::AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const + { + if (aVerbose) + { + aStream << L"; Signing chain:" << std::endl; + iCertificateChain.AddIbyEntry(aStream, aVerbose, aCompatible); + iSignatures.AddIbyEntry(aStream, aVerbose, aCompatible); } } diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/signaturedata.h --- a/secureswitools/swisistools/source/sisxlibrary/signaturedata.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/signaturedata.h Fri Apr 23 15:09:03 2010 +0100 @@ -56,7 +56,7 @@ inline const TUint8* Data(); inline int DataSize() const; inline void SetDataByteCount(unsigned int aSize); - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; protected: CSISSignatureAlgorithm iSignatureAlgorithm; @@ -114,14 +114,14 @@ return iSignatureAlgorithm; } -inline void CSignatureData::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +inline void CSignatureData::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { if (aVerbose) { aStream << L"; Signature:"; - iSignatureAlgorithm.AddPackageEntry(aStream, aVerbose); + iSignatureAlgorithm.AddPackageEntry(aStream, aVerbose, aCompatible); aStream << L";"; - iData.AddPackageEntry(aStream, aVerbose); + iData.AddPackageEntry(aStream, aVerbose, aCompatible); } } diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisarray.h --- a/secureswitools/swisistools/source/sisxlibrary/sisarray.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisarray.h Fri Apr 23 15:09:03 2010 +0100 @@ -94,8 +94,20 @@ * @param aStream stream into which the package details need to be written. * @param aVerbose If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. + * */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; + /** + * Adds iby file entry related to this structure. + * @param aStream stream into which the iby file details need to be written. + * @param aVerbose If this option is set then detail description of iby + * will be written into the stream. + * @param aCompatible - Flag to notify AddIbyEntry that Dumpsis works in the original,compatible mode + * or in the new way. + */ + void AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; /** * Operator to access content of this array @@ -333,11 +345,20 @@ } template - void CSISArray ::AddPackageEntry(std::wostream& aStream, bool aVerbose) const + void CSISArray ::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { for (SisArrayIter(T) iterMemb = SisArrayMem(T).begin (); iterMemb != SisArrayMem(T).end (); iterMemb++) { - (**iterMemb)->AddPackageEntry(aStream, aVerbose); + (**iterMemb)->AddPackageEntry(aStream, aVerbose, aCompatible); + } + } + +template + void CSISArray ::AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const + { + for (SisArrayIter(T) iterMemb = SisArrayMem(T).begin (); iterMemb != SisArrayMem(T).end (); iterMemb++) + { + (**iterMemb)->AddIbyEntry(aStream, aVerbose, aCompatible); } } diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/siscapabilities.cpp --- a/secureswitools/swisistools/source/sisxlibrary/siscapabilities.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/siscapabilities.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -141,7 +141,7 @@ } -void CSISCapabilities::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISCapabilities::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { if(WasteOfSpace() || !aVerbose) { diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/siscapabilities.h --- a/secureswitools/swisistools/source/sisxlibrary/siscapabilities.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/siscapabilities.h Fri Apr 23 15:09:03 2010 +0100 @@ -97,8 +97,10 @@ * @param aStream - Stream in which the package entries need to be written. * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; /** * Get the stored capability list in human readable format. * @param aCapList will be filled by this function. diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/siscontents.cpp --- a/secureswitools/swisistools/source/sisxlibrary/siscontents.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/siscontents.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -310,11 +310,17 @@ Save (aTargetFileName); } -void CSISContents::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISContents::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { - iControllerChecksum.AddPackageEntry(aStream, aVerbose); - iDataChecksum.AddPackageEntry(aStream, aVerbose); - iController.AddPackageEntry(aStream, aVerbose); // CSISCompressed - Controller().AddPackageEntry(aStream, aVerbose); - iData.AddPackageEntry(aStream, aVerbose); + iControllerChecksum.AddPackageEntry(aStream, aVerbose, aCompatible); + iDataChecksum.AddPackageEntry(aStream, aVerbose, aCompatible); + iController.AddPackageEntry(aStream, aVerbose, aCompatible); // CSISCompressed + Controller().AddPackageEntry(aStream, aVerbose, aCompatible); + iData.AddPackageEntry(aStream, aVerbose, aCompatible); } + +void CSISContents::AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const + { + Controller().AddIbyEntry(aStream, aVerbose, aCompatible); + iData.AddIbyEntry(aStream, aVerbose, aCompatible); + } diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/siscontents.h --- a/secureswitools/swisistools/source/sisxlibrary/siscontents.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/siscontents.h Fri Apr 23 15:09:03 2010 +0100 @@ -364,8 +364,19 @@ * @param aStream - Stream in which the package entries need to be written. * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; + /** + * Adds the write the package details into the stream. + * @param aStream - Stream in which the package entries need to be written. + * @param aVerbose - If this option is set then detail description of pkg + * will be written into the stream. + * @param aCompatible - Flag to notify AddIbyEntry that Dumpsis works in the original,compatible mode + * or in the new way. + */ + void AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; public: diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/siscontroller.cpp --- a/secureswitools/swisistools/source/sisxlibrary/siscontroller.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/siscontroller.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -180,18 +180,27 @@ } -void CSISController::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISController::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { - iSupportedLanguages.AddPackageEntry(aStream, aVerbose); - iInfo.AddPackageEntry(aStream, aVerbose); - iPrerequisites.AddPackageEntry(aStream, aVerbose); - iSupportedOptions.AddPackageEntry(aStream, aVerbose); - iProperties.AddPackageEntry(aStream, aVerbose); - iLogo.AddPackageEntry(aStream, aVerbose); - iInstallBlock.AddPackageEntry(aStream, aVerbose); + iSupportedLanguages.AddPackageEntry(aStream, aVerbose, aCompatible ); + iInfo.AddPackageEntry(aStream, aVerbose, aCompatible); + iPrerequisites.AddPackageEntry(aStream, aVerbose, aCompatible); + iSupportedOptions.AddPackageEntry(aStream, aVerbose, aCompatible); + iProperties.AddPackageEntry(aStream, aVerbose, aCompatible); + iLogo.AddPackageEntry(aStream, aVerbose, aCompatible); + iInstallBlock.AddPackageEntry(aStream, aVerbose, aCompatible); for(int i = 0; i < iSignatures.size(); ++i) { - iSignatures[i].AddPackageEntry(aStream, aVerbose); + iSignatures[i].AddPackageEntry(aStream, aVerbose, aCompatible); + } + } + +void CSISController::AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const + { + iInstallBlock.AddIbyEntry(aStream, aVerbose, aCompatible); + for(int i = 0; i < iSignatures.size(); ++i) + { + iSignatures[i].AddIbyEntry(aStream, aVerbose, aCompatible); } } diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/siscontroller.h --- a/secureswitools/swisistools/source/sisxlibrary/siscontroller.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/siscontroller.h Fri Apr 23 15:09:03 2010 +0100 @@ -304,12 +304,23 @@ */ void AddSignatureChain(CSignatureCertChainData& aSISSigCertChain); /** - * Adds package entry related to this controller. - * @param aStream stream into which the package details need to be written. - * @param aVerbose If this option is set then detail description of pkg + * Adds the write the package details into the stream. + * @param aStream - Stream in which the package entries need to be written. + * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; + /** + * Adds the write the iby file details into the stream. + * @param aStream - Stream in which the iby entry need to be written. + * @param aVerbose - If this option is set then detail description of iby + * will be written into the stream. + * @param aCompatible - Flag to notify AddIbyEntry that Dumpsis works in the original,compatible mode + * or in the new way. + */ + void AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; /** * Retrieves the CSignatureCertChainData pointed by chain index. * @param aIndex index of the chain in the controller. diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisdata.cpp --- a/secureswitools/swisistools/source/sisxlibrary/sisdata.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisdata.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -51,8 +51,12 @@ return newData; } -void CSISData::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISData::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { - iDataUnit.AddPackageEntry(aStream, aVerbose); + iDataUnit.AddPackageEntry(aStream, aVerbose, aCompatible); } +void CSISData::AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const + { + iDataUnit.AddIbyEntry(aStream, aVerbose, aCompatible); + } diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisdata.h --- a/secureswitools/swisistools/source/sisxlibrary/sisdata.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisdata.h Fri Apr 23 15:09:03 2010 +0100 @@ -135,8 +135,19 @@ * @param aStream - Stream in which the package entries need to be written. * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; + /** + * Adds the write the iby file details into the stream. + * @param aStream - Stream in which the iby entry need to be written. + * @param aVerbose - If this option is set then detail description of iby + * will be written into the stream. + * @param aCompatible - Flag to notify AddIbyEntry that Dumpsis works in the original,compatible mode + * or in the new way. + */ + void AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; /** * Retrieve the data unit count present in this SISData. */ diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisdate.cpp --- a/secureswitools/swisistools/source/sisxlibrary/sisdate.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisdate.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -80,7 +80,7 @@ iDay = aDay; } -void CSISDate::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISDate::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { // Month starts with 0 aStream << static_cast(iYear) << L"/"; diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisdate.h --- a/secureswitools/swisistools/source/sisxlibrary/sisdate.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisdate.h Fri Apr 23 15:09:03 2010 +0100 @@ -62,13 +62,15 @@ * @param aDay New day to set. */ void Set (const TUint16 aYear, const TUint8 aMonth, const TUint8 aDay); - /** +/** * Adds the write the package details into the stream. * @param aStream - Stream in which the package entries need to be written. * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; /** * Get the year */ diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisdatetime.h --- a/secureswitools/swisistools/source/sisxlibrary/sisdatetime.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisdatetime.h Fri Apr 23 15:09:03 2010 +0100 @@ -68,8 +68,10 @@ * @param aStream - Stream in which the package entries need to be written. * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; /** * Get the date (CSISDate). */ diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisdependency.cpp --- a/secureswitools/swisistools/source/sisxlibrary/sisdependency.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisdependency.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -68,17 +68,17 @@ return "Dependency"; } -void CSISDependency::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISDependency::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { aStream << ((iDependencyType == ETargetDependency)?L"[" : L"("); - iUid.AddPackageEntry(aStream, aVerbose); + iUid.AddPackageEntry(aStream, aVerbose, aCompatible); aStream << ((iDependencyType == ETargetDependency)?L"]," : L"),"); - iVersionRange.AddPackageEntry(aStream, aVerbose); + iVersionRange.AddPackageEntry(aStream, aVerbose, aCompatible); aStream << L" ,{"; for (int i = 0; i < iDependencyNames.size(); ++i) { aStream << L"\""; - iDependencyNames[i].AddPackageEntry(aStream, aVerbose); + iDependencyNames[i].AddPackageEntry(aStream, aVerbose, aCompatible); aStream << L"\""; if ((i+1) < iDependencyNames.size()) { diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisdependency.h --- a/secureswitools/swisistools/source/sisxlibrary/sisdependency.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisdependency.h Fri Apr 23 15:09:03 2010 +0100 @@ -92,8 +92,10 @@ * @param aStream - Stream in which the package entries need to be written. * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; /** * Set whether the dependency is a target(device) or package dependency. * @param aDependencyType new dependency type. diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/siselseif.cpp --- a/secureswitools/swisistools/source/sisxlibrary/siselseif.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/siselseif.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -31,11 +31,11 @@ #include "siselseif.h" -void CSISElseIf::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISElseIf::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { aStream << L"ELSEIF "; - iExpression.AddPackageEntry(aStream, aVerbose); + iExpression.AddPackageEntry(aStream, aVerbose, aCompatible); aStream << std::endl; - iInstallBlock.AddPackageEntry(aStream, aVerbose); + iInstallBlock.AddPackageEntry(aStream, aVerbose, aCompatible); } diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/siselseif.h --- a/secureswitools/swisistools/source/sisxlibrary/siselseif.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/siselseif.h Fri Apr 23 15:09:03 2010 +0100 @@ -79,12 +79,14 @@ */ inline void GetEmbeddedControllers(TControllerMap& aControllers) const; /** - * Adds package entry related to this else-if block - * @param aStream stream into which the package details need to be written. - * @param aVerbose If this option is set then detail description of pkg + * Adds the write the package details into the stream. + * @param aStream - Stream in which the package entries need to be written. + * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; private: void InsertMembers (); diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisexpression.cpp --- a/secureswitools/swisistools/source/sisxlibrary/sisexpression.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisexpression.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -268,7 +268,7 @@ SetValue (static_cast (IdentifyUCKeyword (KVariables, aIdentifier, L"unknown variable"))); } -void CSISExpression::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISExpression::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { TExpressionFeatures* features = findExpressionFeature (iOperator); if(NULL == features) @@ -285,7 +285,7 @@ aStream << L"\""; } - LHS().AddPackageEntry(aStream, aVerbose); + LHS().AddPackageEntry(aStream, aVerbose, aCompatible); if(iOperator.Value() == EFuncExists) { aStream << L"\""; @@ -297,11 +297,11 @@ std::wstring supportedLanguageStr = iString.GetString().substr(0,KFuncSupportedLanguagePrefix.length()); if((iOperator.Value() == EFuncExists) && (versionStr == KFuncVersionPrefix)) { - WriteVersionCondition (aStream, aVerbose); + WriteVersionCondition (aStream, aVerbose, aCompatible); } else if ((iOperator.Value() == EFuncExists) && (supportedLanguageStr == KFuncSupportedLanguagePrefix)) { - WriteSupportedLanguageCondition (aStream, aVerbose); + WriteSupportedLanguageCondition (aStream, aVerbose, aCompatible); } else { @@ -316,7 +316,7 @@ aStream << L"\""; } - RHS().AddPackageEntry(aStream, aVerbose); + RHS().AddPackageEntry(aStream, aVerbose, aCompatible); if(iOperator.Value() == EFuncExists) { aStream << L"\""; @@ -335,7 +335,7 @@ aStream << L"\""; } - iString.AddPackageEntry(aStream, aVerbose); + iString.AddPackageEntry(aStream, aVerbose, aCompatible); if(iOperator.Value() == EFuncExists) { aStream << L"\""; @@ -370,7 +370,7 @@ } } -void CSISExpression::WriteVersionCondition(std::basic_ostream& aStream, bool aVerbose) const +void CSISExpression::WriteVersionCondition(std::basic_ostream& aStream, bool aVerbose, bool aCompatible) const { std::wstring parseString = iString.GetString().substr(KFuncVersionPrefix.length()); std::wstring outputArgs; @@ -530,7 +530,7 @@ // Output the condition as an exists statement and comment warnings to the stream aStream << L"exists(\""; - iString.AddPackageEntry(aStream, aVerbose); + iString.AddPackageEntry(aStream, aVerbose, aCompatible); aStream << L"\")" << std::endl; aStream << L"; warning: \"VERSION\" condition output as \"EXISTS\"" << std::endl; aStream << L"; " << msgString; @@ -594,7 +594,7 @@ return false; } -void CSISExpression::WriteSupportedLanguageCondition(std::basic_ostream& aStream, bool aVerbose) const +void CSISExpression::WriteSupportedLanguageCondition(std::basic_ostream& aStream, bool aVerbose, bool aCompatible) const { std::wstring parseString = iString.GetString().substr(KFuncSupportedLanguagePrefix.length()); std::wstring outputArgs; @@ -623,7 +623,7 @@ // Output the condition as an exists statement and comment warnings to the stream aStream << L"exists(\""; - iString.AddPackageEntry(aStream, aVerbose); + iString.AddPackageEntry(aStream, aVerbose, aCompatible); aStream << L"\")" << std::endl; aStream << L"; warning: \"Supported_Language\" condition output as \"EXISTS\"" << std::endl; aStream << L"; " << msgString; diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisexpression.h --- a/secureswitools/swisistools/source/sisxlibrary/sisexpression.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisexpression.h Fri Apr 23 15:09:03 2010 +0100 @@ -98,13 +98,13 @@ void SetNumeric (const TInt32 aValue); void SetLanguageComparision (const TInt32 aValue); void SetVariable (const std::wstring& aIdentifier); - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; inline CSISUInt32 Operator() const; inline const CSISString& String() const; inline TInt IntValue() const; - void WriteVersionCondition (std::wostream& aStream, bool aVerbose) const; - void WriteSupportedLanguageCondition (std::wostream& aStream, bool aVerbose) const; + void WriteVersionCondition (std::wostream& aStream, bool aVerbose, bool aCompatible) const; + void WriteSupportedLanguageCondition (std::wostream& aStream, bool aVerbose, bool aCompatible) const; static bool ExtractNextToken(std::wstring& aParseString, std::wstring& aTokenString); static bool IsHexadecimal(const std::wstring& aString); static bool IsHexadecimal(const std::wstring& aString, TUint32& aHexValue); diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisfiledescription.cpp --- a/secureswitools/swisistools/source/sisxlibrary/sisfiledescription.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisfiledescription.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -96,6 +96,7 @@ {NULL} }; +int FileOrData = 0; void CSISFileDescription::InsertMembers () { InsertMember (iTarget); @@ -364,21 +365,33 @@ } -void CSISFileDescription::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISFileDescription::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { + std::wstring filePath = iTarget.GetString(); aStream <(fileName); + if(aCompatible) + { + const wchar_t* fileName = GetFileName(); + aStream << L"\"" << fileName << L"\""; + delete[] const_cast(fileName); + } + else + { + int index = filePath.find_first_of(L":"); + if(index!=-1) + filePath = filePath.substr(index+2,filePath.length()-index-2); + + aStream << L"\"" << filePath << L"\""; + } + aStream << L"-"; aStream << L"\""; - iTarget.AddPackageEntry(aStream, aVerbose); + iTarget.AddPackageEntry(aStream, aVerbose, aCompatible); aStream << L"\""; TUint32 operation = (TUint32) iOperation; @@ -403,7 +416,7 @@ { options &= ~EInstFileRunOptionByMimeType; aStream << L", " << (aVerbose?L"FILEMIME, ":L"FM,\" "); - iMimeType.AddPackageEntry(aStream, aVerbose); + iMimeType.AddPackageEntry(aStream, aVerbose, aCompatible); aStream<0) + { + int index = fileExt.find_last_of(L"."); + if(index!=-1) + fileExt = fileExt.substr(index+1,fileExt.length()-index-1); + } + + if(fileExt.compare(L"exe")==0 || fileExt.compare(L"EXE")==0 || fileExt.compare(L"dll")==0 || fileExt.compare(L"DLL")==0) + { + if(FileOrData==2) + aStream << std::endl; + + FileOrData = 1; + } + else + { + if(FileOrData==1) + aStream << std::endl; + + FileOrData = 2; + } + + if(fileExt.length()==0) + aStream << L"; Unknown file name" << std::endl; + + aStream << L"; File length " << iLength << L" (" << iUncompressedLength << L")"; + + aStream << std::endl; + + if(fileExt.length()==0) + aStream << L"; "; + + if(FileOrData==1) + aStream << L"file="; + else + aStream << L"data="; + + if(aCompatible) + { + const wchar_t* fileName = GetFileName(); + aStream << L"\"" << fileName << L"\""; + delete[] const_cast(fileName); + } + else + { + int index = filePath.find_first_of(L":"); + if(index!=-1) + filePath = filePath.substr(index+2,filePath.length()-index-2); + + aStream << L"\"" << filePath << L"\""; + } + aStream << L" "; + aStream << L"\""; + iTarget.AddIbyEntry(aStream, aVerbose, aCompatible); + aStream << L"\""; + + aStream << std::endl; + } const wchar_t* CSISFileDescription::GetFileName() const { // Using actual iFileIndex rather than iFileNum because source file might be diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisfiledescription.h --- a/secureswitools/swisistools/source/sisxlibrary/sisfiledescription.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisfiledescription.h Fri Apr 23 15:09:03 2010 +0100 @@ -211,12 +211,23 @@ */ const wchar_t* GetFileName() const; /** - * Adds package entry related to the file description. - * @param aStream stream into which the package details need to be written. - * @param aVerbose If this option is set then detail description of pkg + * Adds the write the package details into the stream. + * @param aStream - Stream in which the package entries need to be written. + * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; + /** + * Adds the write the iby file details into the stream. + * @param aStream - Stream in which the iby entry need to be written. + * @param aVerbose - If this option is set then detail description of iby + * will be written into the stream. + * @param aCompatible - Flag to notify AddIbyEntry that Dumpsis works in the original,compatible mode + * or in the new way. + */ + void AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; /** * Retrieves the capability list associated with this sis file. * @param aCapList list to be filled by this function. diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sishash.cpp --- a/secureswitools/swisistools/source/sisxlibrary/sishash.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sishash.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -69,12 +69,12 @@ iBlob.Assign (data, size); } -void CSISHash::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISHash::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { if(aVerbose) { aStream << L"; " << ((iAlgorithm.Value()==EHashSHA)?L"SHA-1: ":L"Unknown hash: "); - iBlob.AddPackageEntry(aStream, aVerbose); + iBlob.AddPackageEntry(aStream, aVerbose, aCompatible); aStream << std::endl; } } diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sishash.h --- a/secureswitools/swisistools/source/sisxlibrary/sishash.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sishash.h Fri Apr 23 15:09:03 2010 +0100 @@ -61,7 +61,7 @@ void SetHash(const TUint8* aHash, TUint32 aHashSize); bool VerifyAlgorithm () const; const CSISBlob& Blob() const; - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; private: CSISUInt32 iAlgorithm; diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisif.cpp --- a/secureswitools/swisistools/source/sisxlibrary/sisif.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisif.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -29,13 +29,13 @@ #include "sisif.h" -void CSISIf::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISIf::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { aStream << L"IF "; - iExpression.AddPackageEntry(aStream, aVerbose); + iExpression.AddPackageEntry(aStream, aVerbose, aCompatible); aStream << std::endl; - iInstallBlock.AddPackageEntry(aStream, aVerbose); - iElseIfs.AddPackageEntry(aStream, aVerbose); + iInstallBlock.AddPackageEntry(aStream, aVerbose, aCompatible); + iElseIfs.AddPackageEntry(aStream, aVerbose, aCompatible); aStream << L"ENDIF" << std::endl; } diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisif.h --- a/secureswitools/swisistools/source/sisxlibrary/sisif.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisif.h Fri Apr 23 15:09:03 2010 +0100 @@ -106,12 +106,14 @@ */ const CSISInstallBlock& InstallBlock () const; /** - * Adds package entry related to this if block. - * @param aStream stream into which the package details need to be written. - * @param aVerbose If this option is set then detail description of pkg + * Adds the write the package details into the stream. + * @param aStream - Stream in which the package entries need to be written. + * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; /** * Retrieves the list of files present in the if block. * @param aFileList this will be filled by this function. diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisinfo.cpp --- a/secureswitools/swisistools/source/sisxlibrary/sisinfo.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisinfo.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -124,7 +124,7 @@ return reply; } -void CSISInfo::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISInfo::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { if (aVerbose) { @@ -134,7 +134,7 @@ for (int i=0; i < iNames.size(); ++i) { aStream << L"\""; - iNames[i].AddPackageEntry(aStream, aVerbose); + iNames[i].AddPackageEntry(aStream, aVerbose, aCompatible); aStream << L"\""; if ((i+1)(dataFileNameW); aStream << L", " ; aStream << L"\""; - iLogoFile.MimeType().AddPackageEntry(aStream, aVerbose); + iLogoFile.MimeType().AddPackageEntry(aStream, aVerbose, aCompatible); aStream << L"\""; aStream << L", " ; aStream << L"\""; - iLogoFile.Target().AddPackageEntry(aStream, aVerbose); + iLogoFile.Target().AddPackageEntry(aStream, aVerbose, aCompatible); aStream << L"\""; aStream << std::endl << std::endl; } +void CSISLogo::AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const + { + if(WasteOfSpace()) + { + return; + } + if (aVerbose) + { + aStream << L"; Logo" << std::endl; + } + aStream << L"="; + const wchar_t* dataFileNameW = iLogoFile.GetFileName(); + aStream <(dataFileNameW); + aStream << L", " ; + aStream << L"\""; + iLogoFile.MimeType().AddIbyEntry(aStream, aVerbose, aCompatible); + aStream << L"\""; + aStream << L", " ; + aStream << L"\""; + iLogoFile.Target().AddIbyEntry(aStream, aVerbose, aCompatible); + aStream << L"\""; + aStream << std::endl << std::endl; + } diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sislogo.h --- a/secureswitools/swisistools/source/sisxlibrary/sislogo.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sislogo.h Fri Apr 23 15:09:03 2010 +0100 @@ -45,12 +45,12 @@ void Set (const std::wstring& aMime, const std::wstring& aTarget, const TUint32 aFileIndex, const CSISDataUnit& aDataUnit); void SetSizes (const TUint64 aCompressedSize, const TUint64 aUncompressedSize); - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; + void AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; inline const CSISFileDescription& FileDesc() const; private: CSISFileDescription iLogoFile; - }; diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisprerequisites.cpp --- a/secureswitools/swisistools/source/sisxlibrary/sisprerequisites.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisprerequisites.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -40,7 +40,7 @@ return false; } -void CSISPrerequisites::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISPrerequisites::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { if (iTargetDevices.size()) { @@ -56,7 +56,7 @@ { aStream << L"; Target dependencies" << std::endl; } - iTargetDevices.AddPackageEntry(aStream, aVerbose); + iTargetDevices.AddPackageEntry(aStream, aVerbose, aCompatible); } if (iDependencies.size()) @@ -65,7 +65,35 @@ { aStream << L"; Dependencies" << std::endl; } - iDependencies.AddPackageEntry(aStream, aVerbose); + iDependencies.AddPackageEntry(aStream, aVerbose, aCompatible); } } +void CSISPrerequisites::AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const + { + if (iTargetDevices.size()) + { + // Since iTargetDevices and iDependencies are of same type and they + // have different structure in the package (pkg) file we need to set + // + for(int i = 0; i < iTargetDevices.size(); ++i) + { + iTargetDevices[i].SetDependencyType(CSISDependency::ETargetDependency); + } + + if (aVerbose) + { + aStream << L"; Target dependencies" << std::endl; + } + iTargetDevices.AddIbyEntry(aStream, aVerbose, aCompatible); + } + + if (iDependencies.size()) + { + if (aVerbose) + { + aStream << L"; Dependencies" << std::endl; + } + iDependencies.AddIbyEntry(aStream, aVerbose, aCompatible); + } + } diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisprerequisites.h --- a/secureswitools/swisistools/source/sisxlibrary/sisprerequisites.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisprerequisites.h Fri Apr 23 15:09:03 2010 +0100 @@ -81,8 +81,19 @@ * @param aStream - Stream in which the package entries need to be written. * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; + /** + * Adds the write the iby file details into the stream. + * @param aStream - Stream in which the iby entry need to be written. + * @param aVerbose - If this option is set then detail description of iby + * will be written into the stream. + * @param aCompatible - Flag to notify AddIbyEntry that Dumpsis works in the original,compatible mode + * or in the new way. + */ + void AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; /** * Get the list of dependencies. */ diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisproperties.cpp --- a/secureswitools/swisistools/source/sisxlibrary/sisproperties.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisproperties.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -25,7 +25,7 @@ #include "sisproperties.h" -void CSISProperties::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISProperties::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { TUint32 propertiesCount = iProperty.size(); if (propertiesCount == 0) @@ -40,7 +40,7 @@ TUint32 i = 0; do { - iProperty[i].AddPackageEntry(aStream, aVerbose); + iProperty[i].AddPackageEntry(aStream, aVerbose, aCompatible); if (++i < propertiesCount) { aStream << L", "; diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisproperties.h --- a/secureswitools/swisistools/source/sisxlibrary/sisproperties.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisproperties.h Fri Apr 23 15:09:03 2010 +0100 @@ -44,7 +44,7 @@ virtual std::string Name () const; void AddProperty (const TUint32 aKey, const TUint32 aValue); - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; inline const SISPropertyArray& Properties() const; private: diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisproperty.h --- a/secureswitools/swisistools/source/sisxlibrary/sisproperty.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisproperty.h Fri Apr 23 15:09:03 2010 +0100 @@ -53,7 +53,7 @@ virtual void CreateDefects (); #endif // GENERATE_ERRORS - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; inline TKey Key() const; inline TValue Value() const; @@ -115,7 +115,7 @@ } #endif // GENERATE_ERRORS -inline void CSISProperty::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +inline void CSISProperty::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { (void)aVerbose; aStream << iKey << L"=" << iValue; diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sissignaturealgorithm.h --- a/secureswitools/swisistools/source/sisxlibrary/sissignaturealgorithm.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sissignaturealgorithm.h Fri Apr 23 15:09:03 2010 +0100 @@ -55,7 +55,7 @@ TAlgorithm Algorithm () const; bool IsAlgorithmKnown () const; void Verify (const TUint32 aLanguages) const; - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; protected: CSISString iAlgorithmIdentifier; @@ -93,12 +93,12 @@ return (iAlgorithm > EAlgNone) && (iAlgorithm < EAlgIllegal); } -inline void CSISSignatureAlgorithm::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +inline void CSISSignatureAlgorithm::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { if (aVerbose) { aStream << L"Algorithm: "; - iAlgorithmIdentifier.AddPackageEntry(aStream, aVerbose); + iAlgorithmIdentifier.AddPackageEntry(aStream, aVerbose, aCompatible); aStream << std::endl; } } diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisstring.h --- a/secureswitools/swisistools/source/sisxlibrary/sisstring.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisstring.h Fri Apr 23 15:09:03 2010 +0100 @@ -148,8 +148,19 @@ * @param aStream - Stream in which the package entries need to be written. * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; + /** + * Adds the write the iby file details into the stream. + * @param aStream - Stream in which the iby entry need to be written. + * @param aVerbose - If this option is set then detail description of iby + * will be written into the stream. + * @param aCompatible - Flag to notify AddIbyEntry that Dumpsis works in the original,compatible mode + * or in the new way. + */ + void AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; /** * Delete the temporary buffer used for reading the string. @@ -275,11 +286,20 @@ return iData; } -inline void CSISString::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +inline void CSISString::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { (void)aVerbose; + (void)aCompatible; aStream << iData; } +inline void CSISString::AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const + { + (void)aVerbose; + (void)aCompatible; + if(iData.length()>0) + aStream << iData; + } + #endif // __SISSTRING_H__ diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sissupportedlanguages.cpp --- a/secureswitools/swisistools/source/sisxlibrary/sissupportedlanguages.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sissupportedlanguages.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -39,7 +39,7 @@ return "Supported Languages"; } -void CSISSupportedLanguages::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISSupportedLanguages::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { TUint32 optionCount = iSupportedLanguage.size(); if (optionCount == 0) @@ -53,7 +53,7 @@ aStream << L"&"; for (TUint32 i = 0; i < optionCount; ++i) { - iSupportedLanguage[i].AddPackageEntry(aStream, aVerbose); + iSupportedLanguage[i].AddPackageEntry(aStream, aVerbose, aCompatible); if (i < (optionCount-1)) { aStream << L", "; diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sissupportedlanguages.h --- a/secureswitools/swisistools/source/sisxlibrary/sissupportedlanguages.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sissupportedlanguages.h Fri Apr 23 15:09:03 2010 +0100 @@ -47,7 +47,7 @@ bool AreLanguagesSpecified () const; TUint32 LanguageCount () const; CSISLanguage::TLanguage Language (const TUint32 aIndex) const; - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; private: CSISArray iSupportedLanguage; diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sissupportedoption.cpp --- a/secureswitools/swisistools/source/sisxlibrary/sissupportedoption.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sissupportedoption.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -39,13 +39,13 @@ return "Supported Option"; } -void CSISSupportedOption::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISSupportedOption::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { TUint32 optionCount = iNames.size(); for (TUint32 i = 0; i < optionCount; ++i) { aStream << L"\""; - iNames[i].AddPackageEntry(aStream, aVerbose); + iNames[i].AddPackageEntry(aStream, aVerbose, aCompatible); aStream << L"\""; if (i < (optionCount-1)) { @@ -53,3 +53,18 @@ } } } + +void CSISSupportedOption::AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const + { + TUint32 optionCount = iNames.size(); + for (TUint32 i = 0; i < optionCount; ++i) + { + aStream << L"\""; + iNames[i].AddIbyEntry(aStream, aVerbose, aCompatible); + aStream << L"\""; + if (i < (optionCount-1)) + { + aStream << L", "; + } + } + } diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sissupportedoption.h --- a/secureswitools/swisistools/source/sisxlibrary/sissupportedoption.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sissupportedoption.h Fri Apr 23 15:09:03 2010 +0100 @@ -46,7 +46,8 @@ void AddOptionName (const std::wstring& aName); TUint32 LanguageCount () const; - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; + void AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; private: CSISArrayOfStrings iNames; diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sissupportedoptions.cpp --- a/secureswitools/swisistools/source/sisxlibrary/sissupportedoptions.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sissupportedoptions.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -24,7 +24,7 @@ #include "sissupportedoptions.h" -void CSISSupportedOptions::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISSupportedOptions::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { TUint32 optionCount = iSupportedOption.size(); if (optionCount == 0) @@ -35,7 +35,7 @@ for (TUint32 i = 0; i < optionCount; ++i) { aStream << L"{"; - iSupportedOption[i].AddPackageEntry(aStream, aVerbose); + iSupportedOption[i].AddPackageEntry(aStream, aVerbose, aCompatible); aStream << L"}"; if (i < (optionCount-1)) { @@ -45,3 +45,23 @@ aStream << L")" << std::endl << std::endl; } +void CSISSupportedOptions::AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const + { + TUint32 optionCount = iSupportedOption.size(); + if (optionCount == 0) + { + return; + } + aStream << L"!("; + for (TUint32 i = 0; i < optionCount; ++i) + { + aStream << L"{"; + iSupportedOption[i].AddIbyEntry(aStream, aVerbose, aCompatible); + aStream << L"}"; + if (i < (optionCount-1)) + { + aStream << L", "; + } + } + aStream << L")" << std::endl << std::endl; + } diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sissupportedoptions.h --- a/secureswitools/swisistools/source/sisxlibrary/sissupportedoptions.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sissupportedoptions.h Fri Apr 23 15:09:03 2010 +0100 @@ -44,7 +44,8 @@ void AddOption (); void AddOptionName (const std::wstring& aName); - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; + void AddIbyEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; inline TUint32 SupportedOptionCount() const; private: diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sistime.cpp --- a/secureswitools/swisistools/source/sisxlibrary/sistime.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sistime.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -76,7 +76,7 @@ iSeconds = aSeconds; } -void CSISTime::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISTime::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { aStream << static_cast(iHours) << L":"; aStream << static_cast(iMinutes) << L":"; diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sistime.h --- a/secureswitools/swisistools/source/sisxlibrary/sistime.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sistime.h Fri Apr 23 15:09:03 2010 +0100 @@ -71,8 +71,10 @@ * @param aStream - Stream in which the package entries need to be written. * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; /** * Get value for Hours */ diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisuid.h --- a/secureswitools/swisistools/source/sisxlibrary/sisuid.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisuid.h Fri Apr 23 15:09:03 2010 +0100 @@ -74,8 +74,10 @@ * @param aStream - Stream in which the package entries need to be written. * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - inline void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + inline void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; private: CSISUInt32 iUID; @@ -122,7 +124,7 @@ return "Uid"; } -inline void CSISUid::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +inline void CSISUid::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { aStream << L"0x" << std::hex << iUID << std::dec; } diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisversion.cpp --- a/secureswitools/swisistools/source/sisxlibrary/sisversion.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisversion.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -88,7 +88,7 @@ } } -void CSISVersion::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISVersion::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { (void)aVerbose; aStream << iMajor << L", " << iMinor << L", " << iBuild; diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisversion.h --- a/secureswitools/swisistools/source/sisxlibrary/sisversion.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisversion.h Fri Apr 23 15:09:03 2010 +0100 @@ -97,8 +97,10 @@ * @param aStream - Stream in which the package entries need to be written. * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; private: void InsertMembers (); diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisversionrange.cpp --- a/secureswitools/swisistools/source/sisxlibrary/sisversionrange.cpp Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisversionrange.cpp Fri Apr 23 15:09:03 2010 +0100 @@ -44,13 +44,13 @@ return "Version Range"; } -void CSISVersionRange::AddPackageEntry(std::wostream& aStream, bool aVerbose) const +void CSISVersionRange::AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const { - iFromVersion.AddPackageEntry(aStream, aVerbose); + iFromVersion.AddPackageEntry(aStream, aVerbose, aCompatible); if (iToVersion.Specified()) { aStream << L" ~ "; - iToVersion.AddPackageEntry(aStream, aVerbose); + iToVersion.AddPackageEntry(aStream, aVerbose, aCompatible); } } diff -r 98b66e4fb0be -r 04d4a7bbc3e0 secureswitools/swisistools/source/sisxlibrary/sisversionrange.h --- a/secureswitools/swisistools/source/sisxlibrary/sisversionrange.h Fri Apr 16 15:05:20 2010 +0300 +++ b/secureswitools/swisistools/source/sisxlibrary/sisversionrange.h Fri Apr 23 15:09:03 2010 +0100 @@ -71,8 +71,10 @@ * @param aStream - Stream in which the package entries need to be written. * @param aVerbose - If this option is set then detail description of pkg * will be written into the stream. + * @param aCompatible - Flag to notify AddPackageEntry that Dumpsis works in the original,compatible mode + * or in the new way. */ - void AddPackageEntry(std::wostream& aStream, bool aVerbose) const; + void AddPackageEntry(std::wostream& aStream, bool aVerbose, bool aCompatible) const; /** * Get the value of from version. */