From c5aeca430288057a721688975173ed764860d8b8 Mon Sep 17 00:00:00 2001
From: Rosemary <rosemaryseb8@gmail.com>
Date: Thu, 27 Aug 2015 13:39:37 +0530
Subject: Write _VBA_PROJECT stream to a binary file

The stream is written according to the MS-OVBA specification.

Conflicts:
	oox/source/ole/vbaexport.cxx

Change-Id: Icc63c988435d9b3bed8fdd499b80a17713f3794f
---
 oox/source/ole/vbaexport.cxx | 12 ++++++++++++
 1 file changed, 12 insertions(+)

(limited to 'oox/source/ole/vbaexport.cxx')

diff --git a/oox/source/ole/vbaexport.cxx b/oox/source/ole/vbaexport.cxx
index c52c1b6243e1..d1ff3c7587cd 100644
--- a/oox/source/ole/vbaexport.cxx
+++ b/oox/source/ole/vbaexport.cxx
@@ -609,6 +609,14 @@ void exportDirStream(SvStream& rStrm)
     aCompression.write();
 }
 
+void exportVBAProjectStream(SvStream& rStrm)
+{
+    rStrm.WriteUInt16(0x61CC); // Reserved1
+    rStrm.WriteUInt16(0xFFFF); // Version
+    rStrm.WriteUInt8(0x00); // Reserved2
+    rStrm.WriteUInt16(0x0000); // Undefined
+}
+
 }
 
 void VbaExport::exportVBA(SotStorage* pRootStorage)
@@ -616,9 +624,12 @@ void VbaExport::exportVBA(SotStorage* pRootStorage)
     // start here with the VBA export
     SotStorage* pVBAStream = pRootStorage->OpenSotStorage("VBA", STREAM_READWRITE);
     SotStorageStream* pDirStream = pVBAStream->OpenSotStream("dir", STREAM_READWRITE);
+    SotStorageStream* pVBAProjectStream = pVBAStream->OpenSotStream("_VBA_PROJECT", STREAM_READWRITE);
 
     // export
     exportDirStream(*pDirStream);
+    exportVBAProjectStream(*pVBAProjectStream);
+
 
     css::uno::Reference<css::container::XNameContainer> xNameContainer = getBasicLibrary();
     css::uno::Sequence<OUString> aElementNames = xNameContainer->getElementNames();
@@ -631,6 +642,7 @@ void VbaExport::exportVBA(SotStorage* pRootStorage)
         css::script::ModuleInfo aModuleInfo = xModuleInfo->getModuleInfo(aElementNames[i]);
         SAL_DEBUG(aModuleInfo.ModuleType);
     }
+    pVBAProjectStream->Commit();
     pDirStream->Commit();
     pVBAStream->Commit();
     pRootStorage->Commit();
-- 
cgit