summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2015-12-04 17:12:02 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2015-12-04 17:14:51 +0100
commitdedeea77ee779636b8a396649c1dd9f9a78c8618 (patch)
tree2d5bc3d845bb0738b7e4eb80cbb988281abcab80
parent3d44b9bd4d980508cac74bcb36eb4bf2d2f24b31 (diff)
docrecord: dump the whole propBag array in SmartTagData
-rw-r--r--msodumper/docrecord.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/msodumper/docrecord.py b/msodumper/docrecord.py
index bf315e1..9108dca 100644
--- a/msodumper/docrecord.py
+++ b/msodumper/docrecord.py
@@ -4231,13 +4231,14 @@ class Property(DOCDirStream):
class PropertyBag(DOCDirStream):
"""Specified by [MS-OSHARED] 2.3.4.3, specifies the smart tag data."""
- def __init__(self, parent):
+ def __init__(self, parent, index):
DOCDirStream.__init__(self, parent.bytes)
self.parent = parent
self.pos = parent.pos
+ self.index = index
def dump(self):
- print '<propBag type="PropertyBag" offset="%s">' % self.pos
+ print '<propBag type="PropertyBag" offset="%s" index="%s">' % (self.pos, self.index)
self.printAndSet("id", self.readuInt16())
self.printAndSet("cProp", self.readuInt16())
self.printAndSet("cbUnknown", self.readuInt16())
@@ -4256,12 +4257,15 @@ class SmartTagData(DOCDirStream):
self.size = mainStream.lcbFactoidData
def dump(self):
+ posOrig = self.pos
print '<smartTagData type="SmartTagData" offset="%d" size="%d bytes">' % (self.pos, self.size)
self.propBagStore = PropertyBagStore(self)
self.propBagStore.dump()
- # TODO this is an array in fact
- self.propBag = PropertyBag(self)
- self.propBag.dump()
+ i = 0
+ while self.pos < posOrig + self.size:
+ self.propBag = PropertyBag(self, i)
+ self.propBag.dump()
+ i += 1
print '</smartTagData>'