diff options
author | Ivo Hinkelmann <ihi@openoffice.org> | 2011-01-18 18:14:05 +0100 |
---|---|---|
committer | Ivo Hinkelmann <ihi@openoffice.org> | 2011-01-18 18:14:05 +0100 |
commit | 064fff2dd1cc50211cea54b4fafd99d60a2b997f (patch) | |
tree | 2379b34b500ce0e153bd737999aebd333775936c | |
parent | 3053a9b2b84681009d5a3cb50fec809663557806 (diff) | |
parent | 283dfc7cf7853d4d9dd3cf008865486f5272d9ca (diff) |
CWS-TOOLING: integrate CWS fwk162ooo/DEV300_m98
-rw-r--r-- | package/source/manifest/ManifestExport.cxx | 5 | ||||
-rw-r--r-- | package/source/zippackage/ZipPackageFolder.cxx | 63 |
2 files changed, 38 insertions, 30 deletions
diff --git a/package/source/manifest/ManifestExport.cxx b/package/source/manifest/ManifestExport.cxx index 580c3f92e..92d1f07a4 100644 --- a/package/source/manifest/ManifestExport.cxx +++ b/package/source/manifest/ManifestExport.cxx @@ -166,6 +166,11 @@ ManifestExport::ManifestExport(Reference < XDocumentHandler > xHandler, const S { // this is ODF12 generation, let encrypted streams contain start-key-generation entry bStoreStartKeyGeneration = sal_True; + + // starting from ODF12 the version should be also in manifest:manifest element + pRootAttrList->AddAttribute ( OUString( RTL_CONSTASCII_USTRINGPARAM ( ATTRIBUTE_VERSION ) ), + sCdataAttribute, + aDocVersion ); } } else diff --git a/package/source/zippackage/ZipPackageFolder.cxx b/package/source/zippackage/ZipPackageFolder.cxx index d2c81b993..70df2792c 100644 --- a/package/source/zippackage/ZipPackageFolder.cxx +++ b/package/source/zippackage/ZipPackageFolder.cxx @@ -271,11 +271,10 @@ Sequence< OUString > SAL_CALL ZipPackageFolder::getElementNames( ) { sal_uInt32 i=0, nSize = maContents.size(); Sequence < OUString > aSequence ( nSize ); - OUString *pNames = aSequence.getArray(); for ( ContentHash::const_iterator aIterator = maContents.begin(), aEnd = maContents.end(); aIterator != aEnd; ++i, ++aIterator) - pNames[i] = (*aIterator).first; + aSequence[i] = (*aIterator).first; return aSequence; } sal_Bool SAL_CALL ZipPackageFolder::hasByName( const OUString& aName ) @@ -358,7 +357,6 @@ void ZipPackageFolder::saveContents(OUString &rPath, std::vector < Sequence < Pr const ContentInfo &rInfo = *(*aCI).second; Sequence < PropertyValue > aPropSet (PKG_SIZE_NOENCR_MNFST); - PropertyValue *pValue = aPropSet.getArray(); if ( rInfo.bFolder ) pFolder = rInfo.pFolder; @@ -369,13 +367,18 @@ void ZipPackageFolder::saveContents(OUString &rPath, std::vector < Sequence < Pr { OUString sTempName = rPath + rShortName + OUString( RTL_CONSTASCII_USTRINGPARAM ( "/" ) ); - pValue[PKG_MNFST_MEDIATYPE].Name = sMediaTypeProperty; - pValue[PKG_MNFST_MEDIATYPE].Value <<= pFolder->GetMediaType(); - pValue[PKG_MNFST_VERSION].Name = sVersionProperty; - pValue[PKG_MNFST_VERSION].Value <<= pFolder->GetVersion(); - pValue[PKG_MNFST_FULLPATH].Name = sFullPathProperty; - pValue[PKG_MNFST_FULLPATH].Value <<= sTempName; - + if ( pFolder->GetMediaType().getLength() ) + { + aPropSet[PKG_MNFST_MEDIATYPE].Name = sMediaTypeProperty; + aPropSet[PKG_MNFST_MEDIATYPE].Value <<= pFolder->GetMediaType(); + aPropSet[PKG_MNFST_VERSION].Name = sVersionProperty; + aPropSet[PKG_MNFST_VERSION].Value <<= pFolder->GetVersion(); + aPropSet[PKG_MNFST_FULLPATH].Name = sFullPathProperty; + aPropSet[PKG_MNFST_FULLPATH].Value <<= sTempName; + } + else + aPropSet.realloc( 0 ); + pFolder->saveContents( sTempName, rManList, rZipOut, rEncryptionKey, rRandomPool); } else @@ -395,12 +398,12 @@ void ZipPackageFolder::saveContents(OUString &rPath, std::vector < Sequence < Pr sal_Bool bToBeEncrypted = pStream->IsToBeEncrypted() && (bHaveEncryptionKey || pStream->HasOwnKey()); sal_Bool bToBeCompressed = bToBeEncrypted ? sal_True : pStream->IsToBeCompressed(); - pValue[PKG_MNFST_MEDIATYPE].Name = sMediaTypeProperty; - pValue[PKG_MNFST_MEDIATYPE].Value <<= pStream->GetMediaType( ); - pValue[PKG_MNFST_VERSION].Name = sVersionProperty; - pValue[PKG_MNFST_VERSION].Value <<= ::rtl::OUString(); // no version is stored for streams currently - pValue[PKG_MNFST_FULLPATH].Name = sFullPathProperty; - pValue[PKG_MNFST_FULLPATH].Value <<= pTempEntry->sPath; + aPropSet[PKG_MNFST_MEDIATYPE].Name = sMediaTypeProperty; + aPropSet[PKG_MNFST_MEDIATYPE].Value <<= pStream->GetMediaType( ); + aPropSet[PKG_MNFST_VERSION].Name = sVersionProperty; + aPropSet[PKG_MNFST_VERSION].Value <<= ::rtl::OUString(); // no version is stored for streams currently + aPropSet[PKG_MNFST_FULLPATH].Name = sFullPathProperty; + aPropSet[PKG_MNFST_FULLPATH].Value <<= pTempEntry->sPath; OSL_ENSURE( pStream->GetStreamMode() != PACKAGE_STREAM_NOTSET, "Unacceptable ZipPackageStream mode!" ); @@ -522,23 +525,22 @@ void ZipPackageFolder::saveContents(OUString &rPath, std::vector < Sequence < Pr // a magic header aPropSet.realloc(PKG_SIZE_ENCR_MNFST); - pValue = aPropSet.getArray(); - pValue[PKG_MNFST_INIVECTOR].Name = sInitialisationVectorProperty; - pValue[PKG_MNFST_INIVECTOR].Value <<= pStream->getInitialisationVector(); - pValue[PKG_MNFST_SALT].Name = sSaltProperty; - pValue[PKG_MNFST_SALT].Value <<= pStream->getSalt(); - pValue[PKG_MNFST_ITERATION].Name = sIterationCountProperty; - pValue[PKG_MNFST_ITERATION].Value <<= pStream->getIterationCount (); + aPropSet[PKG_MNFST_INIVECTOR].Name = sInitialisationVectorProperty; + aPropSet[PKG_MNFST_INIVECTOR].Value <<= pStream->getInitialisationVector(); + aPropSet[PKG_MNFST_SALT].Name = sSaltProperty; + aPropSet[PKG_MNFST_SALT].Value <<= pStream->getSalt(); + aPropSet[PKG_MNFST_ITERATION].Name = sIterationCountProperty; + aPropSet[PKG_MNFST_ITERATION].Value <<= pStream->getIterationCount (); // Need to store the uncompressed size in the manifest OSL_ENSURE( nOwnStreamOrigSize >= 0, "The stream size was not correctly initialized!\n" ); - pValue[PKG_MNFST_UCOMPSIZE].Name = sSizeProperty; - pValue[PKG_MNFST_UCOMPSIZE].Value <<= nOwnStreamOrigSize; + aPropSet[PKG_MNFST_UCOMPSIZE].Name = sSizeProperty; + aPropSet[PKG_MNFST_UCOMPSIZE].Value <<= nOwnStreamOrigSize; if ( bRawStream || bTransportOwnEncrStreamAsRaw ) { - pValue[PKG_MNFST_DIGEST].Name = sDigestProperty; - pValue[PKG_MNFST_DIGEST].Value <<= pStream->getDigest(); + aPropSet[PKG_MNFST_DIGEST].Name = sDigestProperty; + aPropSet[PKG_MNFST_DIGEST].Value <<= pStream->getDigest(); } } } @@ -655,8 +657,8 @@ void ZipPackageFolder::saveContents(OUString &rPath, std::vector < Sequence < Pr if ( bToBeEncrypted ) { - pValue[PKG_MNFST_DIGEST].Name = sDigestProperty; - pValue[PKG_MNFST_DIGEST].Value <<= pStream->getDigest(); + aPropSet[PKG_MNFST_DIGEST].Name = sDigestProperty; + aPropSet[PKG_MNFST_DIGEST].Value <<= pStream->getDigest(); pStream->SetIsEncrypted ( sal_True ); } } @@ -695,7 +697,8 @@ void ZipPackageFolder::saveContents(OUString &rPath, std::vector < Sequence < Pr } // folder can have a mediatype only in package format - if ( m_nFormat == embed::StorageFormats::PACKAGE || ( m_nFormat == embed::StorageFormats::OFOPXML && !rInfo.bFolder ) ) + if ( aPropSet.getLength() + && ( m_nFormat == embed::StorageFormats::PACKAGE || ( m_nFormat == embed::StorageFormats::OFOPXML && !rInfo.bFolder ) ) ) rManList.push_back( aPropSet ); } |