Hello community, here is the log from the commit of package libetonyek for openSUSE:Factory checked in at 2019-08-22 15:04:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libetonyek (Old) and /work/SRC/openSUSE:Factory/.libetonyek.new.7948 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libetonyek" Thu Aug 22 15:04:27 2019 rev:18 rq:724777 version:0.1.9 Changes: -------- --- /work/SRC/openSUSE:Factory/libetonyek/libetonyek.changes 2018-05-07 14:51:46.417606467 +0200 +++ /work/SRC/openSUSE:Factory/.libetonyek.new.7948/libetonyek.changes 2019-08-22 15:11:07.858447983 +0200 @@ -1,0 +2,6 @@ +Tue Aug 20 10:17:56 UTC 2019 - Tomáš Chvátal <tchva...@suse.com> + +- Update to 0.1.9: + * various small bugfixes and fuzzer fixes + +------------------------------------------------------------------- Old: ---- libetonyek-0.1.8.tar.xz New: ---- libetonyek-0.1.9.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libetonyek.spec ++++++ --- /var/tmp/diff_new_pack.oExn4D/_old 2019-08-22 15:11:08.466447826 +0200 +++ /var/tmp/diff_new_pack.oExn4D/_new 2019-08-22 15:11:08.470447824 +0200 @@ -1,7 +1,7 @@ # # spec file for package libetonyek # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,13 +12,13 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # %define libname libetonyek-0_1-1 Name: libetonyek -Version: 0.1.8 +Version: 0.1.9 Release: 0 Summary: Library for Apple Keynote presentations License: MPL-2.0 @@ -40,7 +40,7 @@ BuildRequires: pkgconfig(cppunit) BuildRequires: pkgconfig(librevenge-0.0) BuildRequires: pkgconfig(libxml-2.0) -BuildRequires: pkgconfig(mdds-1.2) +BuildRequires: pkgconfig(mdds-1.5) BuildRequires: pkgconfig(zlib) %if 0%{?suse_version} > 1325 BuildRequires: libboost_headers-devel @@ -94,6 +94,7 @@ autoreconf -fvi export CXXFLAGS="%{optflags} -fvisibility-inlines-hidden" %configure \ + --with-mdds="1.5" \ --disable-silent-rules \ --disable-werror \ --disable-static \ @@ -102,7 +103,6 @@ %install %make_install - find %{buildroot} -type f -name "*.la" -delete -print mkdir -p %{buildroot}%{_mandir}/man1 ++++++ libetonyek-0.1.8.tar.xz -> libetonyek-0.1.9.tar.xz ++++++ ++++ 4870 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/ChangeLog new/libetonyek-0.1.9/ChangeLog --- old/libetonyek-0.1.8/ChangeLog 2018-04-21 19:55:25.000000000 +0200 +++ new/libetonyek-0.1.9/ChangeLog 2018-12-29 09:17:23.000000000 +0100 @@ -1,3 +1,144 @@ +2018-12-29 David Tardon <dtar...@redhat.com> [a30d7c7f352a695ba04ed64d291ecec86ad32b1e] + + prepare for a release + + Change-Id: Ie9d8d7122d1b04b082e0b80c30a5f9c58199b9a6 + +2018-12-29 David Tardon <dtar...@redhat.com> [6579803ea0bc964cacb1891a98d44853198adfb1] + + check for mdds 1.2 by default + + 1.4 is still too new. + + Change-Id: Ifd15d0f3266f0f1abac3beaa2c79344671e20a23 + +2018-12-28 David Tardon <dtar...@redhat.com> [442bd243a55857d38026fdbf450696ebb95d939a] + + avoid assert on import of binary Numbers files + + Change-Id: I14bd097103e946b2dbb55d1c17104bab827178b8 + +2018-12-28 David Tardon <dtar...@redhat.com> [4386f0eb89aa0b479f258efe9b14580c88b7d47b] + + set correct package stream for iCloud Web Browser files + + Change-Id: I5cfafb8eb5ee262f40398453f2026dff9bee044a + +2018-12-28 David Tardon <dtar...@redhat.com> [f49d9dd6f836be3a1560f19b2981d3c5ef201b23] + + ofz#12250 avoid division by 0 + + Change-Id: Ic5b3a67cf65bd4e781a817540334b437c07c8ff0 + +2018-12-25 David Tardon <dtar...@redhat.com> [4b66055b121520f46f9eccd35d208e5a018787a1] + + combine call into a single line + + Change-Id: Idb962653bc72f15c84d711869d4149408151a095 + +2018-12-25 David Tardon <dtar...@redhat.com> [004179fc13c5cbb94d174c0c48e79fcb0f0fbe20] + + remove unneeded check + + Change-Id: Iee910a34ecfc1e01d602515c9b86d567dbc62c99 + +2018-12-25 David Tardon <dtar...@redhat.com> [dce663b768c4fe93afb4153af8e61c7eb67171aa] + + fix copypasta + + Change-Id: Idf54829d5eca5ed3e69c595adb8f8ff08b78cdb7 + +2018-12-25 David Tardon <dtar...@redhat.com> [c027c450f552f4876775531a5151c022f59c6dbf] + + reduce deps for detection test + + Change-Id: I094c3cb87a5c9e4fb00ebb992f0a2e2bc64e877c + +2018-12-25 David Tardon <dtar...@redhat.com> [97ae24ef3e96fee83945010022585e0f9893a1d0] + + package new test file + + Change-Id: I74b6f25b0fe6628e2f30972856bec6a751888c91 + +2018-12-25 David Tardon <dtar...@redhat.com> [93a9b0dab52fc219fd2094b8e18776d113cddb65] + + rename macro + + Change-Id: I86ff97fd63eec1fba96b1bbd481609272b69a944 + +2018-12-25 David Tardon <dtar...@redhat.com> [15a5e2936938f15d971766668bfa8210378ab9a5] + + drop unneeded macro definition + + Change-Id: I497bce3f7da4d5902dd10f9546c6edeec7ad9663 + +2018-12-25 David Tardon <dtar...@redhat.com> [c5b0907204aef19bba9113d01474977e528654a4] + + restructure test for visibility + + Change-Id: I14df8198232184493cae865e21e678597c1fbe55 + +2018-12-25 David Tardon <dtar...@redhat.com> [f53d4670d566da201955b89075f191602f0ba192] + + tdf#120707 handle binary docs with extra top level dir + + Change-Id: Ic27b6f74bc912069ca107d8441b9f9985bde3161 + +2018-12-24 David Tardon <dtar...@redhat.com> [dafc9ec9c162c0ec3823234bb2b2659f790d0b8f] + + split stream tests to a separate binary + + ... to avoid linking the core tests with librevenge-stream. + + Change-Id: I7d5ae9cf7df401b6fffd5cf670ba138d4a77ff94 + +2018-12-24 David Tardon <dtar...@redhat.com> [38ec24d6d30d22b440102a8dd4069cb5257bb5fe] + + add a stream impl. for handling subdirs + + Change-Id: Id6236ffe2125d525a2c764c8ebc7227b76f4f05e + +2018-12-24 David Tardon <dtar...@redhat.com> [bf27a4d9d0c0c6c61b7c0125ad1b113ac9cef7ea] + + move detection of binary file structure to a function + + Change-Id: Ia93dd8d73438870c6d1e4d0d76c89fb617177ccb + +2018-12-20 Caolán McNamara <caol...@redhat.com> [3e4c48e042cf4929f9b69cf443165c8f3c299109] + + forcepoint#77 null-deref + + Change-Id: I984f0e17a5a0e2edd431f0938c69b988a2212d09 + Reviewed-on: https://gerrit.libreoffice.org/65378 + Reviewed-by: Caolán McNamara <caol...@redhat.com> + Tested-by: Caolán McNamara <caol...@redhat.com> + +2018-08-30 Rene Engelhard <r...@rene-engelhard.de> [de0212a50489a2fcfd11db8c1eeba7e48996bba5] + + support mdds 1.4 + + +2018-05-05 David Tardon <dtar...@redhat.com> [935cb58a61e45f441bdea143317a7d0d52c7f944] + + WaE: unnecessary parentheses in declaration of ‘aligns’ + + Change-Id: Ic3cb38d071db8e3947c09a4b216b62d18e01b6aa + +2018-04-23 Caolán McNamara <caol...@redhat.com> [9b78187ac2ccca0158cc9cc0bcc0576b457a78d7] + + intial-creator->initial-creator + + Change-Id: I6fe5d0732edb97ac7ff6d527f48543cab1bb3f7b + Reviewed-on: https://gerrit.libreoffice.org/53337 + Reviewed-by: David Tardon <dtar...@redhat.com> + Tested-by: David Tardon <dtar...@redhat.com> + +2018-04-21 David Tardon <dtar...@redhat.com> [94ca8aa8052ce6abf0420b0ac0fb5b949fbbc4b3] + + bump version + + Change-Id: I0512bc0abcf5a23c1b99918495622a3d874e75d6 + 2018-04-21 David Tardon <dtar...@redhat.com> [4e979303c9cc4412ccd5788e399941a823f6ac3c] prepare for a release diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/NEWS new/libetonyek-0.1.9/NEWS --- old/libetonyek-0.1.8/NEWS 2018-04-21 19:49:50.000000000 +0200 +++ new/libetonyek-0.1.9/NEWS 2018-12-29 09:15:39.000000000 +0100 @@ -1,3 +1,11 @@ +libetonyek 0.1.9 + +- Fix spelling of property meta:initial-creator. +- Support files created via iCloud Web Browser. (tdf#120707) +- Remove unneeded check for additional glm headers, which was failing + with newest version(s) of glm. +- Fix a couple of issues detected by oss-fuzz and forcepoint. + libetonyek 0.1.8 - All formats: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/compile new/libetonyek-0.1.9/compile --- old/libetonyek-0.1.8/compile 2018-03-18 11:16:12.000000000 +0100 +++ new/libetonyek-0.1.9/compile 2018-12-24 15:10:44.000000000 +0100 @@ -1,9 +1,9 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2016-01-11.22; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2017 Free Software Foundation, Inc. +# Copyright (C) 1999-2018 Free Software Foundation, Inc. # Written by Tom Tromey <tro...@cygnus.com>. # # This program is free software; you can redistribute it and/or modify @@ -17,7 +17,7 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# along with this program. If not, see <https://www.gnu.org/licenses/>. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -340,7 +340,7 @@ # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/config.h.in new/libetonyek-0.1.9/config.h.in --- old/libetonyek-0.1.8/config.h.in 2018-03-18 14:53:10.000000000 +0100 +++ new/libetonyek-0.1.9/config.h.in 2018-12-29 09:17:15.000000000 +0100 @@ -1,5 +1,9 @@ /* config.h.in. Generated from configure.ac by autoheader. */ +/* Define to 1 if you have the <boost/algorithm/string/predicate.hpp> header + file. */ +#undef HAVE_BOOST_ALGORITHM_STRING_PREDICATE_HPP + /* Define to 1 if you have the <boost/any.hpp> header file. */ #undef HAVE_BOOST_ANY_HPP @@ -56,9 +60,15 @@ /* Define to 1 if the system has the `format' function attribute */ #undef HAVE_FUNC_ATTRIBUTE_FORMAT +/* Define to 1 if the system has the `visibility' function attribute */ +#undef HAVE_FUNC_ATTRIBUTE_VISIBILITY + /* Define to 1 if the system has the GNU-style `fallthrough' attribute */ #undef HAVE_GCC_ATTRIBUTE_FALLTHROUGH +/* Define to 1 if you have the <glm/glm.hpp> header file. */ +#undef HAVE_GLM_GLM_HPP + /* Define to 1 if you have the <inttypes.h> header file. */ #undef HAVE_INTTYPES_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/configure.ac new/libetonyek-0.1.9/configure.ac --- old/libetonyek-0.1.8/configure.ac 2018-03-18 14:51:31.000000000 +0100 +++ new/libetonyek-0.1.9/configure.ac 2018-12-29 09:15:33.000000000 +0100 @@ -7,7 +7,7 @@ # ==================== m4_define([libetonyek_version_major],[0]) m4_define([libetonyek_version_minor],[1]) -m4_define([libetonyek_version_micro],[8]) +m4_define([libetonyek_version_micro],[9]) m4_define([libetonyek_version],[libetonyek_version_major.libetonyek_version_minor.libetonyek_version_micro]) # ============= @@ -24,7 +24,7 @@ # Configure options # ================= AC_ARG_WITH([mdds], - AS_HELP_STRING([--with-mdds=1.2|1.0|0.x], [Specify which version of mdds to use (1.2 is the default)]), + AS_HELP_STRING([--with-mdds=1.4|1.2|1.0|0.x], [Specify which version of mdds to use (1.2 is the default)]), [], [with_mdds="1.2"]) # =========================== @@ -92,6 +92,7 @@ saved_CPPFLAGS="${CPPFLAGS}" CPPFLAGS="${BOOST_CFLAGS} ${CPPFLAGS}" AC_CHECK_HEADERS( + boost/algorithm/string/predicate.hpp \ boost/any.hpp \ boost/container/deque.hpp \ boost/cstdint.hpp \ @@ -118,14 +119,7 @@ # ================ saved_CPPFLAGS="${CPPFLAGS}" CPPFLAGS="${GLM_CFLAGS} ${CPPFLAGS}" -GLM_headers="glm/glm.hpp" -AS_IF([test "x$enable_tests" == "xyes"], [GLM_headers="$GLM_headers glm/gtx/io.hpp"], []) -AC_CHECK_HEADERS( - [$GLM_headers], - [], - [AC_MSG_ERROR([Required glm headers not found.])], - [] -) +AC_CHECK_HEADERS([glm/glm.hpp], [], [AC_MSG_ERROR([Required glm headers not found.])]) CPPFLAGS="${saved_CPPFLAGS}" AC_SUBST([GLM_CFLAGS]) @@ -227,16 +221,12 @@ AC_MSG_CHECKING([for -fvisibility=hidden compiler flag]) saved_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fvisibility=hidden" - AC_TRY_COMPILE([], [], - [ - AC_MSG_RESULT([yes]) - CXXFLAGS="$CXXFLAGS -DLIBETONYEK_VISIBILITY" - ], - [ - AC_MSG_RESULT([no]) - CXXFLAGS="$saved_CXXFLAGS" - ] - ) + AC_TRY_COMPILE([], [], [have_visibility=yes], [have_visibility=no]) + AC_MSG_RESULT([$have_visibility]) + CXXFLAGS="$saved_CXXFLAGS" + AX_GCC_FUNC_ATTRIBUTE([visibility]) + AM_CONDITIONAL([HAVE_VISIBILITY], + [test "$have_visibility" = "yes" && test "$ax_cv_have_func_attribute_visibility" = "yes"]) ] ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/missing new/libetonyek-0.1.9/missing --- old/libetonyek-0.1.8/missing 2018-03-18 11:16:12.000000000 +0100 +++ new/libetonyek-0.1.9/missing 2018-12-24 15:10:44.000000000 +0100 @@ -1,9 +1,9 @@ #! /bin/sh # Common wrapper for a few potentially missing GNU programs. -scriptversion=2016-01-11.22; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1996-2017 Free Software Foundation, Inc. +# Copyright (C) 1996-2018 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard <pin...@iro.umontreal.ca>, 1996. # This program is free software; you can redistribute it and/or modify @@ -17,7 +17,7 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# along with this program. If not, see <https://www.gnu.org/licenses/>. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -101,9 +101,9 @@ exit $st fi -perl_URL=http://www.perl.org/ -flex_URL=http://flex.sourceforge.net/ -gnu_software_URL=http://www.gnu.org/software +perl_URL=https://www.perl.org/ +flex_URL=https://github.com/westes/flex +gnu_software_URL=https://www.gnu.org/software program_details () { @@ -207,7 +207,7 @@ exit $st # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/src/lib/EtonyekDocument.cpp new/libetonyek-0.1.9/src/lib/EtonyekDocument.cpp --- old/libetonyek-0.1.8/src/lib/EtonyekDocument.cpp 2018-04-20 10:35:08.000000000 +0200 +++ new/libetonyek-0.1.9/src/lib/EtonyekDocument.cpp 2018-12-28 19:07:46.000000000 +0100 @@ -10,8 +10,10 @@ #include <libetonyek/libetonyek.h> #include <cassert> +#include <cstring> #include <memory> +#include <boost/algorithm/string/predicate.hpp> #include <boost/optional.hpp> #include <libxml/xmlreader.h> @@ -22,6 +24,7 @@ #include "IWASnappyStream.h" #include "IWORKPresentationRedirector.h" #include "IWORKSpreadsheetRedirector.h" +#include "IWORKSubDirStream.h" #include "IWORKTextRedirector.h" #include "IWORKTokenizer.h" #include "IWORKZlibStream.h" @@ -241,33 +244,90 @@ return RVNGInputStreamPtr_t(); } -bool detect(const RVNGInputStreamPtr_t &input, DetectionInfo &info) +bool detectBinary(RVNGInputStreamPtr_t input, DetectionInfo &info) { - if (input->isStructured()) - { + assert(input->isStructured()); + + if (input->existsSubStream("Metadata/DocumentIdentifier")) info.m_package = input; - if ((info.m_format == FORMAT_BINARY) || (info.m_format == FORMAT_UNKNOWN)) + if (input->existsSubStream("Index.zip")) + { + RVNGInputStreamPtr_t zipInput = getSubStream(input, "Index.zip"); + if (bool(zipInput)) + input = zipInput; + } + + const bool hasDocument = input->existsSubStream("Index/Document.iwa"); + + if (hasDocument) + { + info.m_format = FORMAT_BINARY; + info.m_fragments = input; + info.m_input = getUncompressedSubStream(input, "Index/Document.iwa", true); + } + + return hasDocument; +} + +RVNGInputStreamPtr_t queryTopDirStream(const RVNGInputStreamPtr_t &input) +{ + assert(input->isStructured()); + + string top; + + // find the common top level dir of all substream names, if there is one + for (unsigned i = 0; i < input->subStreamCount(); ++i) + { + const char *const path = input->subStreamName(i); + if (path) { - RVNGInputStreamPtr_t binaryInput(input); - const bool isPackage(binaryInput->existsSubStream("Metadata/DocumentIdentifier")); - if (binaryInput->existsSubStream("Index.zip")) + if (top.empty()) { - RVNGInputStreamPtr_t zipInput = getSubStream(binaryInput, "Index.zip"); - if (bool(zipInput)) - binaryInput = zipInput; + // initialize top dir + const char *const pos = std::strchr(path, '/'); + if (pos) + top.assign(path, pos - path); + else + top = path; + } + else + { + // check that the current path starts with top dir + if (!boost::starts_with(path, top)) + return RVNGInputStreamPtr_t(); + const char end = path[top.size()]; + if (end != '/' && end != '\0') + return RVNGInputStreamPtr_t(); } - info.m_fragments = binaryInput; - if (binaryInput->existsSubStream("Index/Document.iwa")) + } + } + + RVNGInputStreamPtr_t stream; + if (!top.empty()) + stream.reset(new IWORKSubDirStream(input, top)); + + return stream; +} + +bool detect(const RVNGInputStreamPtr_t &input, DetectionInfo &info) +{ + if (input->isStructured()) + { + if ((info.m_format == FORMAT_BINARY) || (info.m_format == FORMAT_UNKNOWN)) + { + if (!detectBinary(input, info)) { - if (!isPackage) - info.m_package.reset(); - info.m_format = FORMAT_BINARY; - info.m_input = getUncompressedSubStream(binaryInput, "Index/Document.iwa", true); + RVNGInputStreamPtr_t dir = queryTopDirStream(input); + if (dir) + detectBinary(dir, info); } } + if ((info.m_format == FORMAT_XML2) || (info.m_format == FORMAT_UNKNOWN)) { + info.m_package = input; + if ((info.m_type == EtonyekDocument::TYPE_KEYNOTE) || (info.m_type == EtonyekDocument::TYPE_UNKNOWN)) { if (input->existsSubStream("index.apxl")) @@ -301,6 +361,8 @@ if (info.m_format == FORMAT_XML1 || info.m_format == FORMAT_UNKNOWN) { + info.m_package = input; + if (input->existsSubStream("presentation.apxl")) { info.m_type = EtonyekDocument::TYPE_KEYNOTE; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/src/lib/IWAParser.cpp new/libetonyek-0.1.9/src/lib/IWAParser.cpp --- old/libetonyek-0.1.8/src/lib/IWAParser.cpp 2018-04-20 20:04:16.000000000 +0200 +++ new/libetonyek-0.1.9/src/lib/IWAParser.cpp 2018-12-28 19:07:46.000000000 +0100 @@ -998,7 +998,14 @@ if (get(type) == 1) path->appendMoveTo(get(coords).m_x, get(coords).m_y); else + { + if (path->empty()) + { + ETONYEK_DEBUG_MSG(("IWAParser::parsePath: missing prior MoveTo subsequent LineTo\n", get(type) == 1 ? 'M' : 'L')); + return false; + } path->appendLineTo(get(coords).m_x, get(coords).m_y); + } break; } case 4 : @@ -1676,7 +1683,7 @@ auto align=get(properties.uint32(8)); if (align<=2) { - const IWORKVerticalAlignment(aligns[])= + const IWORKVerticalAlignment aligns[] = { IWORK_VERTICAL_ALIGNMENT_TOP, IWORK_VERTICAL_ALIGNMENT_MIDDLE, IWORK_VERTICAL_ALIGNMENT_BOTTOM }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/src/lib/IWORKCollector.cpp new/libetonyek-0.1.9/src/lib/IWORKCollector.cpp --- old/libetonyek-0.1.8/src/lib/IWORKCollector.cpp 2018-04-21 12:40:43.000000000 +0200 +++ new/libetonyek-0.1.9/src/lib/IWORKCollector.cpp 2018-12-28 19:07:46.000000000 +0100 @@ -771,7 +771,7 @@ if (!m_metadata.m_title.empty()) props.insert("dc:subject", m_metadata.m_title.c_str()); if (!m_metadata.m_author.empty()) - props.insert("meta:intial-creator", m_metadata.m_author.c_str()); + props.insert("meta:initial-creator", m_metadata.m_author.c_str()); if (!m_metadata.m_keywords.empty()) props.insert("meta:keyword", m_metadata.m_keywords.c_str()); if (!m_metadata.m_comment.empty()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/src/lib/IWORKPath.cpp new/libetonyek-0.1.9/src/lib/IWORKPath.cpp --- old/libetonyek-0.1.8/src/lib/IWORKPath.cpp 2018-04-21 13:40:51.000000000 +0200 +++ new/libetonyek-0.1.9/src/lib/IWORKPath.cpp 2018-12-28 19:07:46.000000000 +0100 @@ -594,6 +594,11 @@ m_impl->m_closed = false; } +bool IWORKPath::empty() const +{ + return m_impl->m_path.empty(); +} + void IWORKPath::appendMoveTo(const double x, const double y) { if (!m_impl->m_path.empty() && m_impl->m_path.back().size()<=1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/src/lib/IWORKPath.h new/libetonyek-0.1.9/src/lib/IWORKPath.h --- old/libetonyek-0.1.8/src/lib/IWORKPath.h 2018-03-18 15:10:11.000000000 +0100 +++ new/libetonyek-0.1.9/src/lib/IWORKPath.h 2018-12-28 19:07:46.000000000 +0100 @@ -42,6 +42,7 @@ void swap(IWORKPath &other); void clear(); + bool empty() const; void appendMoveTo(double x, double y); void appendLineTo(double x, double y); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/src/lib/IWORKSpreadsheetRedirector.cpp new/libetonyek-0.1.9/src/lib/IWORKSpreadsheetRedirector.cpp --- old/libetonyek-0.1.8/src/lib/IWORKSpreadsheetRedirector.cpp 2015-05-30 08:31:59.000000000 +0200 +++ new/libetonyek-0.1.9/src/lib/IWORKSpreadsheetRedirector.cpp 2018-12-28 20:03:27.000000000 +0100 @@ -70,9 +70,9 @@ assert(0); } -void IWORKSpreadsheetRedirector::setStyle(const librevenge::RVNGPropertyList &/*propList*/) +void IWORKSpreadsheetRedirector::setStyle(const librevenge::RVNGPropertyList &propList) { - assert(0); + m_iface->defineGraphicStyle(propList); } void IWORKSpreadsheetRedirector::startLayer(const librevenge::RVNGPropertyList &/*propList*/) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/src/lib/IWORKSubDirStream.cpp new/libetonyek-0.1.9/src/lib/IWORKSubDirStream.cpp --- old/libetonyek-0.1.8/src/lib/IWORKSubDirStream.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/libetonyek-0.1.9/src/lib/IWORKSubDirStream.cpp 2018-12-28 19:07:46.000000000 +0100 @@ -0,0 +1,101 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* + * This file is part of the libetonyek project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "IWORKSubDirStream.h" + +#include <cassert> + +namespace libetonyek +{ + +namespace +{ + +std::string getDelimited(const std::string &path) +{ + if (path.empty() || path.back() == '/') + return path; + else + return path + '/'; +} + +} + +IWORKSubDirStream::IWORKSubDirStream(const RVNGInputStreamPtr_t &parent, const std::string &dir) + : m_parent(parent) + , m_dir(getDelimited(dir)) +{ + assert(bool(m_parent)); + assert(m_parent->isStructured()); +} + +IWORKSubDirStream::~IWORKSubDirStream() +{ +} + +bool IWORKSubDirStream::isStructured() +{ + return true; +} + +unsigned IWORKSubDirStream::subStreamCount() +{ + // TODO: implement me + return 0; +} + +const char *IWORKSubDirStream::subStreamName(unsigned id) +{ + // TODO: implement me + (void) id; + return nullptr; +} + +bool IWORKSubDirStream::existsSubStream(const char *name) +{ + const std::string path = m_dir + name; + return m_parent->existsSubStream(path.c_str()); +} + +librevenge::RVNGInputStream *IWORKSubDirStream::getSubStreamByName(const char *name) +{ + const std::string path = m_dir + name; + return m_parent->getSubStreamByName(path.c_str()); +} + +librevenge::RVNGInputStream *IWORKSubDirStream::getSubStreamById(unsigned id) +{ + // TODO: implement me + (void) id; + return nullptr; +} + +const unsigned char *IWORKSubDirStream::read(const unsigned long, unsigned long &) +{ + return nullptr; +} + +int IWORKSubDirStream::seek(long, const librevenge::RVNG_SEEK_TYPE) +{ + return 0; +} + +long IWORKSubDirStream::tell() +{ + return 0; +} + +bool IWORKSubDirStream::isEnd() +{ + return true; +} + +} + +/* vim:set shiftwidth=2 softtabstop=2 expandtab: */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/src/lib/IWORKSubDirStream.h new/libetonyek-0.1.9/src/lib/IWORKSubDirStream.h --- old/libetonyek-0.1.8/src/lib/IWORKSubDirStream.h 1970-01-01 01:00:00.000000000 +0100 +++ new/libetonyek-0.1.9/src/lib/IWORKSubDirStream.h 2018-12-28 19:07:46.000000000 +0100 @@ -0,0 +1,48 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* + * This file is part of the libetonyek project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef IWORKSUBDIRSTREAM_H_INCLUDED +#define IWORKSUBDIRSTREAM_H_INCLUDED + +#include <string> + +#include "libetonyek_utils.h" + +namespace libetonyek +{ + +class IWORKSubDirStream : public librevenge::RVNGInputStream +{ +public: + IWORKSubDirStream(const RVNGInputStreamPtr_t &parent, const std::string &dir); + ~IWORKSubDirStream() override; + + bool isStructured() override; + unsigned subStreamCount() override; + const char *subStreamName(unsigned id) override; + bool existsSubStream(const char *) override; + + librevenge::RVNGInputStream *getSubStreamByName(const char *name) override; + librevenge::RVNGInputStream *getSubStreamById(unsigned id) override; + + const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead) override; + int seek(long offset, librevenge::RVNG_SEEK_TYPE seekType) override; + long tell() override; + bool isEnd() override; + +private: + const RVNGInputStreamPtr_t m_parent; + const std::string m_dir; +}; + +} + +#endif // IWORKSUBDIRSTREAM_H_INCLUDED + +/* vim:set shiftwidth=2 softtabstop=2 expandtab: */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/src/lib/Makefile.am new/libetonyek-0.1.9/src/lib/Makefile.am --- old/libetonyek-0.1.8/src/lib/Makefile.am 2018-03-18 15:10:09.000000000 +0100 +++ new/libetonyek-0.1.9/src/lib/Makefile.am 2018-12-28 19:07:46.000000000 +0100 @@ -23,6 +23,12 @@ $(ZLIB_CFLAGS) \ $(DEBUG_CXXFLAGS) +if HAVE_VISIBILITY +AM_CXXFLAGS += \ + -DLIBETONYEK_VISIBILITY \ + -fvisibility=hidden +endif + libetonyek_@ETONYEK_MAJOR_VERSION@_@ETONYEK_MINOR_VERSION@_la_LIBADD = libetonyek_internal.la $(REVENGE_LIBS) $(LANGTAG_LIBS) $(XML_LIBS) $(ZLIB_LIBS) @LIBETONYEK_WIN32_RESOURCE@ libetonyek_@ETONYEK_MAJOR_VERSION@_@ETONYEK_MINOR_VERSION@_la_DEPENDENCIES = libetonyek_internal.la @LIBETONYEK_WIN32_RESOURCE@ libetonyek_@ETONYEK_MAJOR_VERSION@_@ETONYEK_MINOR_VERSION@_la_LDFLAGS = $(version_info) -export-dynamic -no-undefined @@ -96,6 +102,8 @@ IWORKStyle_fwd.h \ IWORKStylesheet.cpp \ IWORKStylesheet.h \ + IWORKSubDirStream.cpp \ + IWORKSubDirStream.h \ IWORKTable.cpp \ IWORKTable.h \ IWORKTableRecorder.cpp \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/src/lib/libetonyek.rc new/libetonyek-0.1.9/src/lib/libetonyek.rc --- old/libetonyek-0.1.8/src/lib/libetonyek.rc 2018-03-18 16:16:49.000000000 +0100 +++ new/libetonyek-0.1.9/src/lib/libetonyek.rc 2018-12-29 09:17:13.000000000 +0100 @@ -1,8 +1,8 @@ #include <winver.h> VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,1,8,BUILDNUMBER - PRODUCTVERSION 0,1,8,0 + FILEVERSION 0,1,9,BUILDNUMBER + PRODUCTVERSION 0,1,9,0 FILEFLAGSMASK 0 FILEFLAGS 0 FILEOS VOS__WINDOWS32 @@ -15,12 +15,12 @@ BEGIN VALUE "CompanyName", "The libetonyek developer community" VALUE "FileDescription", "libetonyek" - VALUE "FileVersion", "0.1.8.BUILDNUMBER" + VALUE "FileVersion", "0.1.9.BUILDNUMBER" VALUE "InternalName", "libetonyek-0.0" VALUE "LegalCopyright", "Copyright (C) 2013 David Tardon, other contributors" VALUE "OriginalFilename", "libetonyek-0.0.dll" VALUE "ProductName", "libetonyek" - VALUE "ProductVersion", "0.1.8" + VALUE "ProductVersion", "0.1.9" END END BLOCK "VarFileInfo" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/src/lib/libetonyek_utils.cpp new/libetonyek-0.1.9/src/lib/libetonyek_utils.cpp --- old/libetonyek-0.1.8/src/lib/libetonyek_utils.cpp 2018-03-18 15:10:10.000000000 +0100 +++ new/libetonyek-0.1.9/src/lib/libetonyek_utils.cpp 2018-12-28 19:07:46.000000000 +0100 @@ -299,7 +299,7 @@ const double x = stroke.m_pattern.m_values[0]; const double y = stroke.m_pattern.m_values[1]; // checkme: maybe we can use <sf:stroke ... sf:cap|butt ...> - if (((x / y) < 0.01) || ((y / x) < 0.01)) // arbitrarily picked constant + if (x != 0 && y != 0 && (((x / y) < 0.01) || ((y / x) < 0.01))) // arbitrarily picked constant border.append(" dotted"); else border.append(" dashed"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/src/test/EtonyekDocumentTest.cpp new/libetonyek-0.1.9/src/test/EtonyekDocumentTest.cpp --- old/libetonyek-0.1.8/src/test/EtonyekDocumentTest.cpp 2015-11-14 12:27:24.000000000 +0100 +++ new/libetonyek-0.1.9/src/test/EtonyekDocumentTest.cpp 2018-12-28 19:07:46.000000000 +0100 @@ -141,6 +141,7 @@ assertSupportedPackage("pages5-package.pages", EXCELLENT, type); assertSupportedFile("pages5.zip", SUPPORTED_PART, type); assertSupportedFile("pages5-file.pages", EXCELLENT, type); + assertSupportedFile("pages5-extra-dir.pages", EXCELLENT, type); } void EtonyekDocumentTest::testUnsupported() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/src/test/IWORKSubDirStreamTest.cpp new/libetonyek-0.1.9/src/test/IWORKSubDirStreamTest.cpp --- old/libetonyek-0.1.8/src/test/IWORKSubDirStreamTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/libetonyek-0.1.9/src/test/IWORKSubDirStreamTest.cpp 2018-12-28 19:07:46.000000000 +0100 @@ -0,0 +1,121 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* + * This file is part of the libetonyek project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <string> + +#include <cppunit/TestFixture.h> +#include <cppunit/extensions/HelperMacros.h> + +#include <libetonyek/libetonyek.h> + +#include <librevenge-stream/librevenge-stream.h> + +#include "IWORKSubDirStream.h" +#include "libetonyek_utils.h" + +#if !defined ETONYEK_STREAMS_TEST_DIR +#error ETONYEK_STREAMS_TEST_DIR not defined, cannot test +#endif + +namespace test +{ + +using libetonyek::getLength; +using libetonyek::IWORKSubDirStream; +using libetonyek::RVNGInputStreamPtr_t; + +class IWASubDirStreamTest : public CPPUNIT_NS::TestFixture +{ +public: + IWASubDirStreamTest(); + + virtual void setUp(); + virtual void tearDown(); + +private: + CPPUNIT_TEST_SUITE(IWASubDirStreamTest); + CPPUNIT_TEST(testSimple); + CPPUNIT_TEST(testDelimited); + CPPUNIT_TEST(testPassThrough); + CPPUNIT_TEST_SUITE_END(); + +private: + void testSimple(); + void testDelimited(); + void testPassThrough(); + +private: + RVNGInputStreamPtr_t m_stream; +}; + +IWASubDirStreamTest::IWASubDirStreamTest() + : m_stream() +{ +} + +void IWASubDirStreamTest::setUp() +{ + m_stream.reset(new librevenge::RVNGFileStream(ETONYEK_STREAMS_TEST_DIR "/unsupported.zip")); +} + +void IWASubDirStreamTest::tearDown() +{ + m_stream.reset(); +} + +void IWASubDirStreamTest::testSimple() +{ + RVNGInputStreamPtr_t stream{new IWORKSubDirStream(m_stream, "Index")}; + + CPPUNIT_ASSERT(stream->isStructured()); + + CPPUNIT_ASSERT(stream->existsSubStream("ViewState.iwa")); + + RVNGInputStreamPtr_t subStream(stream->getSubStreamByName("ViewState.iwa")); + CPPUNIT_ASSERT(bool(subStream)); + RVNGInputStreamPtr_t origSubStream(m_stream->getSubStreamByName("Index/ViewState.iwa")); + CPPUNIT_ASSERT(bool(origSubStream)); + CPPUNIT_ASSERT_EQUAL(getLength(origSubStream), getLength(subStream)); +} + +void IWASubDirStreamTest::testDelimited() +{ + RVNGInputStreamPtr_t stream{new IWORKSubDirStream(m_stream, "Index/")}; + + CPPUNIT_ASSERT(stream->isStructured()); + + CPPUNIT_ASSERT(stream->existsSubStream("ViewState.iwa")); + + RVNGInputStreamPtr_t subStream(stream->getSubStreamByName("ViewState.iwa")); + CPPUNIT_ASSERT(bool(subStream)); + RVNGInputStreamPtr_t origSubStream(m_stream->getSubStreamByName("Index/ViewState.iwa")); + CPPUNIT_ASSERT(bool(origSubStream)); + CPPUNIT_ASSERT_EQUAL(getLength(origSubStream), getLength(subStream)); +} + +void IWASubDirStreamTest::testPassThrough() +{ + RVNGInputStreamPtr_t stream{new IWORKSubDirStream(m_stream, "")}; + + CPPUNIT_ASSERT(stream->isStructured()); + + CPPUNIT_ASSERT(stream->existsSubStream("Index/ViewState.iwa")); + + RVNGInputStreamPtr_t subStream(stream->getSubStreamByName("Index/ViewState.iwa")); + CPPUNIT_ASSERT(bool(subStream)); + RVNGInputStreamPtr_t origSubStream(m_stream->getSubStreamByName("Index/ViewState.iwa")); + CPPUNIT_ASSERT(bool(origSubStream)); + CPPUNIT_ASSERT_EQUAL(getLength(origSubStream), getLength(subStream)); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(IWASubDirStreamTest); + +} + +/* vim:set shiftwidth=2 softtabstop=2 expandtab: */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libetonyek-0.1.8/src/test/Makefile.am new/libetonyek-0.1.9/src/test/Makefile.am --- old/libetonyek-0.1.8/src/test/Makefile.am 2018-03-18 11:25:00.000000000 +0100 +++ new/libetonyek-0.1.9/src/test/Makefile.am 2018-12-28 19:07:46.000000000 +0100 @@ -1,4 +1,4 @@ -tests = test detection +tests = core detection streams check_PROGRAMS = $(tests) check_LIBRARIES = libtest_driver.a @@ -7,7 +7,7 @@ libtest_driver_a_SOURCES = \ test.cpp -test_CPPFLAGS = \ +core_CPPFLAGS = \ -I$(top_srcdir)/inc \ -I$(top_srcdir)/src/lib \ $(REVENGE_CFLAGS) \ @@ -15,11 +15,11 @@ $(XML_CFLAGS) \ $(GLM_CFLAGS) \ $(MDDS_CFLAGS) \ - $(LANGTAG_LIBS) \ + $(LANGTAG_CFLAGS) \ $(DEBUG_CXXFLAGS) -test_LDFLAGS = -L$(top_builddir)/src/lib -test_LDADD = \ +core_LDFLAGS = -L$(top_builddir)/src/lib +core_LDADD = \ libtest_driver.a \ $(top_builddir)/src/lib/libetonyek_internal.la \ $(REVENGE_LIBS) \ @@ -27,11 +27,10 @@ $(LANGTAG_LIBS) \ $(XML_LIBS) -test_SOURCES = \ +core_SOURCES = \ IWAFieldTest.cpp \ IWAMessageTest.cpp \ IWAReaderTest.cpp \ - IWASnappyStreamTest.cpp \ IWORKChainedTokenizerTest.cpp \ IWORKFormulaTest.cpp \ IWORKPathTest.cpp \ @@ -46,16 +45,42 @@ TestProperties.h if WITH_LIBLANGTAG -test_SOURCES += \ +core_SOURCES += \ IWORKLanguageManagerTest.cpp endif +streams_CPPFLAGS = \ + -DETONYEK_STREAMS_TEST_DIR=\"$(top_srcdir)/src/test/data\" \ + -I$(top_srcdir)/inc \ + -I$(top_srcdir)/src/lib \ + $(REVENGE_CFLAGS) \ + $(REVENGE_STREAM_CFLAGS) \ + $(CPPUNIT_CFLAGS) \ + $(XML_CFLAGS) \ + $(GLM_CFLAGS) \ + $(MDDS_CFLAGS) \ + $(LANGTAG_CFLAGS) \ + $(DEBUG_CXXFLAGS) + +streams_LDFLAGS = -L$(top_builddir)/src/lib +streams_LDADD = \ + libtest_driver.a \ + $(top_builddir)/src/lib/libetonyek_internal.la \ + $(REVENGE_LIBS) \ + $(REVENGE_STREAM_LIBS) \ + $(CPPUNIT_LIBS) \ + $(LANGTAG_LIBS) \ + $(XML_LIBS) + +streams_SOURCES = \ + IWASnappyStreamTest.cpp \ + IWORKSubDirStreamTest.cpp + detection_CPPFLAGS = \ -DETONYEK_DETECTION_TEST_DIR=\"$(top_srcdir)/src/test/data\" \ -I$(top_srcdir)/inc \ $(REVENGE_STREAM_CFLAGS) \ $(CPPUNIT_CFLAGS) \ - $(XML_CFLAGS) \ $(DEBUG_CXXFLAGS) detection_LDFLAGS = -L$(top_builddir)/src/lib @@ -63,8 +88,7 @@ libtest_driver.a \ $(top_builddir)/src/lib/libetonyek-@ETONYEK_MAJOR_VERSION@.@ETONYEK_MINOR_VERSION@.la \ $(REVENGE_STREAM_LIBS) \ - $(CPPUNIT_LIBS) \ - $(XML_LIBS) + $(CPPUNIT_LIBS) detection_SOURCES = \ EtonyekDocumentTest.cpp @@ -90,6 +114,7 @@ data/pages4-package.pages \ data/pages4.xml \ data/pages4.xml.gz \ + data/pages5-extra-dir.pages \ data/pages5-file.pages \ data/pages5-package.pages \ data/pages5.zip \ Binary files old/libetonyek-0.1.8/src/test/data/pages5-extra-dir.pages and new/libetonyek-0.1.9/src/test/data/pages5-extra-dir.pages differ