msodumper/docrecord.py | 45 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-)
New commits: commit 3d44b9bd4d980508cac74bcb36eb4bf2d2f24b31 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Fri Dec 4 17:04:32 2015 +0100 docrecord: dump PropertyBag diff --git a/msodumper/docrecord.py b/msodumper/docrecord.py index 6468346..bf315e1 100644 --- a/msodumper/docrecord.py +++ b/msodumper/docrecord.py @@ -4209,6 +4209,42 @@ class PropertyBagStore(DOCDirStream): self.stringTable.append(string) print '</stringTable>' print '</propBagStore>' + self.parent.pos = self.pos + + +class Property(DOCDirStream): + """Specified by [MS-OSHARED] 2.3.4.4, specifies the indexes into the string + table entries of the stringTable field.""" + def __init__(self, parent, index): + DOCDirStream.__init__(self, parent.bytes) + self.parent = parent + self.pos = parent.pos + self.index = index + + def dump(self): + print '<property type="Property" offset="%s" index="%s">' % (self.pos, self.index) + self.printAndSet("keyIndex", self.readuInt32(), hexdump=False) + self.printAndSet("valueIndex", self.readuInt32(), hexdump=False) + print '</property>' + self.parent.pos = self.pos + + +class PropertyBag(DOCDirStream): + """Specified by [MS-OSHARED] 2.3.4.3, specifies the smart tag data.""" + def __init__(self, parent): + DOCDirStream.__init__(self, parent.bytes) + self.parent = parent + self.pos = parent.pos + + def dump(self): + print '<propBag type="PropertyBag" offset="%s">' % self.pos + self.printAndSet("id", self.readuInt16()) + self.printAndSet("cProp", self.readuInt16()) + self.printAndSet("cbUnknown", self.readuInt16()) + for i in range(self.cProp): + Property(self, i).dump() + print '</propBag>' + self.parent.pos = self.pos class SmartTagData(DOCDirStream): @@ -4223,6 +4259,9 @@ class SmartTagData(DOCDirStream): 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() print '</smartTagData>' commit f1c33abd03aa5bbc9098ebe9c62248ef5e77ae69 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Fri Dec 4 15:49:59 2015 +0100 docrecord: fix dumping multiple FACTOIDINFO in SttbfBkmkFactoid diff --git a/msodumper/docrecord.py b/msodumper/docrecord.py index ca54445..6468346 100644 --- a/msodumper/docrecord.py +++ b/msodumper/docrecord.py @@ -4318,11 +4318,11 @@ class SttbfBkmkFactoid(DOCDirStream): self.printAndSet("cData", self.readuInt16()) self.printAndSet("cbExtra", self.readuInt16()) assert self.cbExtra == 0 - self.printAndSet("cchData", self.readuInt16()) - assert self.cchData == 0x6 for i in range(self.cData): + self.printAndSet("cchData", self.readuInt16()) + assert self.cchData == 0x6 FACTOIDINFO(self).dump() - assert self.pos == self.mainStream.fcSttbfBkmk + self.size + assert self.pos == self.mainStream.fcSttbfBkmkFactoid + self.size print '</sttbfBkmkFactoid>' # vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits