msodumper/vsdstream.py | 62 ------------------------------------------------- vsd-dump.py | 2 - 2 files changed, 1 insertion(+), 63 deletions(-)
New commits: commit eb13528d71d8fc8cb191c41236fd5206635c6cc0 Author: Miklos Vajna <[email protected]> Date: Mon Dec 1 15:00:42 2014 +0100 vsd: clean up gsf bits The root entry is important for VSD, and gsf hides that. diff --git a/msodumper/vsdstream.py b/msodumper/vsdstream.py index d2403a3..4c7cd67 100644 --- a/msodumper/vsdstream.py +++ b/msodumper/vsdstream.py @@ -55,68 +55,8 @@ class VSDFile: return "native" -class GsfVSDFile(VSDFile): - """Same as VSDFile, but uses gsf to read the OLE streams.""" - def __init__(self, chars, params, gsf): - self.gsf = gsf - VSDFile.__init__(self, chars, params) - - def disableStderr(self): - nil = os.open(os.devnull, os.O_WRONLY) - self.savedStderr = os.dup(2) - os.dup2(nil, 2) - - def enableStderr(self): - os.dup2(self.savedStderr, 2) - - def init(self): - self.streams = {} - self.gsf.gsf_init() - gsfInput = self.gsf.gsf_input_memory_new(self.chars, len(self.chars), False) - self.disableStderr() - gsfInfile = self.gsf.gsf_infile_msole_new(gsfInput, None) - self.enableStderr() - if not gsfInfile: - self.error = "gsf_infile_msole_new() failed" - return - for i in range(self.gsf.gsf_infile_num_children(gsfInfile)): - child = self.gsf.gsf_infile_child_by_index(gsfInfile, i) - childName = ctypes.string_at(self.gsf.gsf_infile_name_by_index(gsfInfile, i)) - childSize = self.gsf.gsf_input_size(child) - childData = "" - while True: - bufSize = 1024 - pos = self.gsf.gsf_input_tell(child) - if pos == childSize: - break - elif pos + bufSize > childSize: - bufSize = childSize - pos - childData += ctypes.string_at(self.gsf.gsf_input_read(child, bufSize, None), bufSize) - self.streams[childName] = childData - self.gsf.gsf_shutdown() - - def getDirectoryNames(self): - return self.streams.keys() - - def getDirectoryStreamByName(self, name): - return self.getStreamFromBytes(name, self.streams[name]) - - def getName(self): - return "gsf" - - def createVSDFile(chars, params): - hasGsf = True - try: - gsf = ctypes.cdll.LoadLibrary('libgsf-1.so') - gsf.gsf_input_read.restype = ctypes.c_void_p - except: - hasGsf = False - - if hasGsf: - return GsfVSDFile(chars, params, gsf) - else: - return VSDFile(chars, params) + return VSDFile(chars, params) PIDDSI = { diff --git a/vsd-dump.py b/vsd-dump.py index 9d56f8f..cb18e8d 100755 --- a/vsd-dump.py +++ b/vsd-dump.py @@ -26,8 +26,6 @@ class VSDDumper: if strm.error: print '<error what="%s"/>' % strm.error for dirname in dirnames: - if len(dirname) == 0 or dirname in ['Root Entry']: - continue strm.getDirectoryStreamByName(dirname).dump() print '</streams>' _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
