--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/sisxlibrary/sisfiledescription.h Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,351 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Note: This file may contain code to generate corrupt files for test purposes.
+* Such code is excluded from production builds by use of compiler defines;
+* it is recommended that such code should be removed if this code is ever published publicly.
+* As specified in SGL.GT0188.251
+*
+*/
+
+
+/**
+ @file
+ @publishedPartner
+ @released
+*/
+
+#ifndef __SISFILEDESCRIPTION_H__
+#define __SISFILEDESCRIPTION_H__
+
+#include "sisstring.h"
+#include "sishash.h"
+#include "siscapabilities.h"
+#include "numeric.h"
+
+class CSISData;
+class CSISDataUnit;
+
+#define SYSTEMDRIVE '$'
+
+typedef struct {
+ wchar_t* iName;
+} SKeyword1;
+
+class CSISFileDescription : public CStructure <CSISFieldRoot::ESISFileDescription>
+ {
+public:
+ /**
+ * Enumeration to specify various file operation.
+ */
+ typedef enum
+ {
+ EOpNone = 0,
+ EOpInstall = 1,
+ EOpRun = 2,
+ EOpText = 4,
+ EOpNull = 8,
+ EOpIllegal = 16
+ } TSISFileOperation;
+
+ /**
+ * Enumeration to specify various installation options
+ */
+ typedef enum
+ {
+ EInstFileNone = 0,
+
+ //EOpRun Options
+ EInstFileRunOptionInstall = 1 << 1, // Run at installation
+ EInstFileRunOptionUninstall = 1 << 2, // Run at uninstallation
+ EInstFileRunOptionByMimeType = 1 << 3, // Run using MIME type
+ EInstFileRunOptionWaitEnd = 1 << 4, // Wait for end before continuing
+ EInstFileRunOptionSendEnd = 1 << 5, // Terminate after (un)install ends
+ EInstFileRunOptionBeforeShutdown= 1 << 6, // Run at uninstallation , before any running applications are shut down.
+ EInstFileRunOptionAfterInstall= 1 << 7, // Run after install
+
+ //EOpText Options
+ EInstFileTextOptionContinue = 1 << 9, // Continue button
+ EInstFileTextOptionSkipIfNo = 1 << 10, // Yes/No - skip next file if user selects no
+ EInstFileTextOptionAbortIfNo = 1 << 11, // Yes/No - abort install if user selects no
+ EInstFileTextOptionExitIfNo = 1 << 12, // Yes/No - uninstall if user selects no
+ EInstFileTextOptionForceAbort = 1 << 13, // Continue button .Installation aborts.
+
+ EInstVerifyOnRestore = 1 << 15 // Verify on Restore
+
+ } TSISInstOption;
+
+public:
+ /**
+ * Default constructor
+ */
+ CSISFileDescription ();
+ /**
+ * Copy constructor.
+ */
+ CSISFileDescription (const CSISFileDescription& aInitialiser);
+
+public:
+ /**
+ * Fix minor issues with the structure.
+ */
+ virtual void MakeNeat ();
+ /**
+ * This function verifies the structure
+ * @param aLanguage - language
+ */
+ virtual void Verify (const TUint32 aLanguages) const;
+ /**
+ * @return name of the class.
+ */
+ virtual std::string Name () const;
+#ifdef GENERATE_ERRORS
+ virtual void CreateDefects ();
+#endif // GENERATE_ERRORS
+
+ /**
+ * Set MIME type of the last file of the base controller's install block.
+ * @param aMimeType MIME type
+ */
+ void SetMimeType (const std::wstring& aMimeType);
+ /**
+ * Set the target for this file
+ * @param aTarget new taret location for this file.
+ */
+ void SetTarget (const std::wstring& aTarget);
+ /**
+ * Sets the new file operation.
+ * @param new file operation.
+ */
+ void SetOperation (const TUint32 aOperation);
+ /**
+ * Sets the new file options.
+ * @param new file options.
+ */
+ void SetOptions (const TUint32 aOperationOptions);
+ /**
+ * Sets the file index of this file. Its an index into the data unit.
+ * @param aFileIndex new file index to be set.
+ */
+ void SetFileIndex (const TUint32 aFileIndex);
+ /**
+ * Set compressed and uncompressed lengths of this file.
+ * @param aUncompressed uncompressed size
+ * @param aCompressed compressed size
+ */
+ void SetLengths (const TUint64 aUncompressed, const TUint64 aCompressed);
+ /**
+ * Checks if the file has a MIME type or not.
+ * @return true for success else false
+ */
+ bool HasMimeType () const;
+ /**
+ * Sets the hash of the file.
+ * @param aHash new hash value
+ */
+ void SetHash (const CSISHash& aHash);
+
+ /**
+ * @return File index of the file.
+ */
+ TUint32 FileIndex() const;
+ /**
+ * @return file operation (TSISFileOperation).
+ */
+ CSISFileDescription::TSISFileOperation Operation() const;
+ /**
+ * @return file options (TSISInstOption).
+ */
+ CSISFileDescription::TSISInstOption OperationOptions() const;
+ /**
+ * @return file length
+ */
+ CSISUInt64& Length() const;
+ /**
+ * @return uncompressed file length
+ */
+ CSISUInt64& UncompressedLength() const;
+ /**
+ * @return Hash of the file.
+ */
+ CSISHash& Hash() const;
+ /**
+ * @return Target location of the file.
+ */
+ inline const CSISString& Target() const;
+ /**
+ * @return File MIME type.
+ */
+ inline const CSISString& MimeType() const;
+ /**
+ * Converts the string into installation option (only if its valid) and sets the
+ * option to this file.
+ * @param aOption installation option string.
+ * @return returns the installation option
+ */
+ TSISInstOption InterpretOption (const std::wstring& aOption);
+ /**
+ * Sets the hash of the file.
+ * @param aHash hash value
+ * @param aHashSize size of hash
+ */
+ void SetHash(const TUint8* aHash, TUint32 aHashSize);
+ /**
+ * Extracts capabilities of this file.
+ * @param file name whose capabilities need to be retieved.
+ */
+ void ExtractCapabilities(const std::wstring& aFileName);
+ /**
+ * Retrieves the file name
+ */
+ 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
+ * will be written into the stream.
+ */
+ void AddPackageEntry(std::wostream& aStream, bool aVerbose) const;
+ /**
+ * Retrieves the capability list associated with this sis file.
+ * @param aCapList list to be filled by this function.
+ */
+ inline void GetCapabilityList(std::vector<std::wstring>& aCapList) const;
+ /**
+ * Retrieves the capability list associated with this sis file.
+ * @return capability list in number format.
+ */
+ inline TUint32 Capabilities() const;
+
+private:
+ void InsertMembers ();
+
+private:
+ CSISString iTarget;
+ CSISString iMimeType;
+ CSISCapabilities iCapabilities;
+ CSISHash iHash;
+ CSISUInt32 iOperation;
+ CSISUInt32 iOperationOptions;
+ CSISUInt64 iLength;
+ CSISUInt64 iUncompressedLength;
+ CSISUInt32 iFileIndex;
+ };
+
+
+inline CSISFileDescription::TSISInstOption operator | (const CSISFileDescription::TSISInstOption aLHS, const CSISFileDescription::TSISInstOption aRHS)
+ {
+ return static_cast <CSISFileDescription::TSISInstOption> (static_cast <TUint32> (aLHS) | static_cast <TUint32> (aRHS));
+ }
+
+
+inline CSISFileDescription::CSISFileDescription ()
+ {
+ InsertMembers ();
+ }
+
+
+inline void CSISFileDescription::SetMimeType (const std::wstring& aMimeType)
+ {
+ iMimeType = aMimeType;
+ }
+
+
+inline void CSISFileDescription::SetTarget (const std::wstring& aTarget)
+ {
+ iTarget = aTarget;
+ }
+
+
+inline void CSISFileDescription::SetOperation (const TUint32 aOperation)
+ {
+ iOperation |= aOperation;
+ }
+
+
+inline void CSISFileDescription::SetOptions (const TUint32 aOperationOptions)
+ {
+ iOperationOptions |= aOperationOptions;
+ }
+
+
+inline void CSISFileDescription::SetFileIndex (const TUint32 aFileIndex)
+ {
+ iFileIndex = aFileIndex;
+ }
+
+
+inline void CSISFileDescription::SetLengths (const TUint64 aUncompressed, const TUint64 aCompressed)
+ {
+ iLength = aCompressed;
+ iUncompressedLength = aUncompressed;
+ }
+
+inline bool CSISFileDescription::HasMimeType () const
+ {
+ return ! iMimeType.empty ();
+ }
+
+inline TUint32 CSISFileDescription::FileIndex() const
+ {
+ return iFileIndex.Value();
+ }
+
+inline CSISFileDescription::TSISFileOperation CSISFileDescription::Operation() const
+ {
+ return (CSISFileDescription::TSISFileOperation)(int)iOperation;
+ }
+
+inline CSISFileDescription::TSISInstOption CSISFileDescription::OperationOptions() const
+ {
+ return (CSISFileDescription::TSISInstOption)(int)iOperationOptions;
+ }
+
+inline CSISUInt64& CSISFileDescription::Length() const
+ {
+ return (CSISUInt64&)iLength;
+ }
+
+inline CSISUInt64& CSISFileDescription::UncompressedLength() const
+ {
+ return (CSISUInt64&)iUncompressedLength;
+ }
+
+inline CSISHash& CSISFileDescription::Hash() const
+ {
+ return (CSISHash&)iHash;
+ }
+
+inline const CSISString& CSISFileDescription::Target() const
+ {
+ return iTarget;
+ }
+
+inline const CSISString& CSISFileDescription::MimeType() const
+ {
+ return iMimeType;
+ }
+
+inline void CSISFileDescription::GetCapabilityList(std::vector<std::wstring>& aCapList) const
+ {
+ iCapabilities.GetCapabilityList(aCapList);
+ }
+
+inline TUint32 CSISFileDescription::Capabilities() const
+ {
+ return iCapabilities.Capabilities();
+ }
+
+#endif // __SISFILEDESCRIPTION_H__
+