Hello community, here is the log from the commit of package poppler for openSUSE:Factory checked in at 2016-07-14 09:42:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/poppler (Old) and /work/SRC/openSUSE:Factory/.poppler.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "poppler" Changes: -------- --- /work/SRC/openSUSE:Factory/poppler/poppler-qt.changes 2016-05-25 21:22:11.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.poppler.new/poppler-qt.changes 2016-07-14 09:42:09.000000000 +0200 @@ -1,0 +2,29 @@ +Sun Jun 19 15:15:27 UTC 2016 - [email protected] + +- Qt 5.7 needs gnu++11 standard, export the appropriate flag in + spec when compiler doesn't enforce it by default. + +------------------------------------------------------------------- +Sat Jun 18 12:46:35 UTC 2016 - [email protected] + +- Update to version 0.45.0: + + core: + - SplashOutputDev: Fix iccTransform + splashModeXBGR8. + - Fix memory leaks. + - Fix crash in broken files (fdo#95567, fdo#96027). + - Emulate some non portable glibc functions when not + available. + + utils: + - pdftohtml: Fix crash in broken files (fdo#95563). + - pdfinfo: + . Convert dates to local time zone. + . Add -isodates for printing dates in ISO-8601 format. + . Fix memory leaks. + + glib: Return date in UTC instead of local time (fdo#94173). + + cpp: Switched from detail::convert_date() to core's + dateStringToTime(). +- Bump soname following upstream changes. +- Drop poppler-Fix-mem-leak-SplashgouraudTriangleShadedFill.patch: + Fix upstream. + +------------------------------------------------------------------- poppler-qt5.changes: same change poppler.changes: same change Old: ---- poppler-0.44.0.tar.xz poppler-Fix-mem-leak-SplashgouraudTriangleShadedFill.patch New: ---- poppler-0.45.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ poppler-qt.spec ++++++ --- /var/tmp/diff_new_pack.hKQo7o/_old 2016-07-14 09:42:10.000000000 +0200 +++ /var/tmp/diff_new_pack.hKQo7o/_new 2016-07-14 09:42:10.000000000 +0200 @@ -21,11 +21,11 @@ Name: poppler-qt %define _name poppler -Version: 0.44.0 +Version: 0.45.0 Release: 0 # Actual version of poppler-data: %define poppler_data_version 0.4.6 -%define poppler_soname 61 +%define poppler_soname 62 %define poppler_cpp_soname 0 %define poppler_glib_soname 8 %define poppler_qt4_soname 4 @@ -38,8 +38,6 @@ Group: System/Libraries Source: http://poppler.freedesktop.org/%{_name}-%{version}.tar.xz Source99: baselibs.conf -# PATCH-FIX-UPSTREAM poppler-Fix-mem-leak-SplashgouraudTriangleShadedFill.patch [email protected] -- Fix memory leak in Splash::gouraudTriangleShadedFill -Patch0: poppler-Fix-mem-leak-SplashgouraudTriangleShadedFill.patch BuildRequires: gcc-c++ BuildRequires: gobject-introspection-devel BuildRequires: libjpeg-devel @@ -228,12 +226,15 @@ %prep %setup -q -n poppler-%{version} -%patch0 -p1 %build %if %build_qt5 export MOCQT5='%{_libqt5_bindir}/moc' export MOCQT52='%{_libqt5_bindir}/moc' +# We need c++11 enforced on older compilers only (< gcc 6) +if [ $(gcc -dumpversion | awk -F. '{print $1}') -lt 6 ]; then +export CXXFLAGS="$CXXFLAGS $RPM_OPT_FLAGS -std=gnu++11" +fi %endif %configure\ --enable-xpdf-headers\ poppler-qt5.spec: same change ++++++ poppler.spec ++++++ --- /var/tmp/diff_new_pack.hKQo7o/_old 2016-07-14 09:42:10.000000000 +0200 +++ /var/tmp/diff_new_pack.hKQo7o/_new 2016-07-14 09:42:10.000000000 +0200 @@ -21,11 +21,11 @@ Name: poppler %define _name poppler -Version: 0.44.0 +Version: 0.45.0 Release: 0 # Actual version of poppler-data: %define poppler_data_version 0.4.6 -%define poppler_soname 61 +%define poppler_soname 62 %define poppler_cpp_soname 0 %define poppler_glib_soname 8 %define poppler_qt4_soname 4 @@ -38,8 +38,6 @@ Group: System/Libraries Source: http://poppler.freedesktop.org/%{_name}-%{version}.tar.xz Source99: baselibs.conf -# PATCH-FIX-UPSTREAM poppler-Fix-mem-leak-SplashgouraudTriangleShadedFill.patch [email protected] -- Fix memory leak in Splash::gouraudTriangleShadedFill -Patch0: poppler-Fix-mem-leak-SplashgouraudTriangleShadedFill.patch BuildRequires: gcc-c++ BuildRequires: gobject-introspection-devel BuildRequires: libjpeg-devel @@ -228,12 +226,15 @@ %prep %setup -q -n poppler-%{version} -%patch0 -p1 %build %if %build_qt5 export MOCQT5='%{_libqt5_bindir}/moc' export MOCQT52='%{_libqt5_bindir}/moc' +# We need c++11 enforced on older compilers only (< gcc 6) +if [ $(gcc -dumpversion | awk -F. '{print $1}') -lt 6 ]; then +export CXXFLAGS="$CXXFLAGS $RPM_OPT_FLAGS -std=gnu++11" +fi %endif %configure\ --enable-xpdf-headers\ ++++++ poppler-0.44.0.tar.xz -> poppler-0.45.0.tar.xz ++++++ ++++ 1689 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/poppler-0.44.0/CMakeLists.txt new/poppler-0.45.0/CMakeLists.txt --- old/poppler-0.44.0/CMakeLists.txt 2016-05-21 18:56:26.000000000 +0200 +++ new/poppler-0.45.0/CMakeLists.txt 2016-06-17 00:12:16.000000000 +0200 @@ -22,7 +22,7 @@ endif() set(POPPLER_MAJOR_VERSION "0") -set(POPPLER_MINOR_VERSION "44") +set(POPPLER_MINOR_VERSION "45") set(POPPLER_MICRO_VERSION "0") set(POPPLER_VERSION "${POPPLER_MAJOR_VERSION}.${POPPLER_MINOR_VERSION}.${POPPLER_MICRO_VERSION}") @@ -325,6 +325,7 @@ goo/ImgWriter.cc goo/gstrtod.cc goo/grandom.cc + goo/glibc.cc fofi/FoFiBase.cc fofi/FoFiEncodings.cc fofi/FoFiTrueType.cc @@ -501,7 +502,7 @@ else(MSVC) add_library(poppler SHARED ${poppler_SRCS}) endif(MSVC) -set_target_properties(poppler PROPERTIES VERSION 61.0.0 SOVERSION 61) +set_target_properties(poppler PROPERTIES VERSION 62.0.0 SOVERSION 62) target_link_libraries(poppler LINK_PRIVATE ${poppler_LIBS}) install(TARGETS poppler RUNTIME DESTINATION bin LIBRARY DESTINATION lib${LIB_SUFFIX} ARCHIVE DESTINATION lib${LIB_SUFFIX}) 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/poppler-0.44.0/ChangeLog new/poppler-0.45.0/ChangeLog --- old/poppler-0.44.0/ChangeLog 2016-05-21 19:11:03.000000000 +0200 +++ new/poppler-0.45.0/ChangeLog 2016-06-17 00:19:47.000000000 +0200 @@ -1,3 +1,288 @@ +commit dfbb98327cbbc173a63f5db36b6606a93e5166aa +Author: Albert Astals Cid <[email protected]> +Date: Fri Jun 17 00:04:25 2016 +0200 + + Poppler 0.45 + + CMakeLists.txt | 4 ++-- + NEWS | 19 +++++++++++++++++++ + configure.ac | 2 +- + cpp/Doxyfile | 2 +- + poppler/Makefile.am | 2 +- + qt4/src/Doxyfile | 2 +- + qt5/src/Doxyfile | 2 +- + 7 files changed, 26 insertions(+), 7 deletions(-) + +commit 3829958339b332d7ddf005d5ab98dd0ad3c8b3c6 +Author: Albert Astals Cid <[email protected]> +Date: Thu Jun 16 23:58:07 2016 +0200 + + Add (C) + + poppler/DateInfo.cc | 1 + + poppler/DateInfo.h | 1 + + poppler/Form.cc | 2 +- + utils/pdfinfo.cc | 2 +- + 4 files changed, 4 insertions(+), 2 deletions(-) + +commit 4c7e057b0315ed37bd47e304ca191191244b2963 +Author: Albert Astals Cid <[email protected]> +Date: Fri Jun 17 00:11:50 2016 +0200 + + dist glibc.h + + we don't install it, but we need it for building + + goo/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit 5ee67050c400daa7bc0b0a4f5dddf21be18be124 +Author: Adrian Johnson <[email protected]> +Date: Tue Jun 14 07:32:35 2016 +0930 + + Fix windows compile + + utils/pdfinfo.cc | 1 + + 1 file changed, 1 insertion(+) + +commit df0779031d6ae0180024f92602bc2a680cf73dd5 +Author: Jakub Kucharski <[email protected]> +Date: Thu May 19 16:11:04 2016 +0200 + + cpp: switched from detail::convert_date() to core's dateStringToTime() + + cpp/poppler-document.cpp | 4 +++- + cpp/poppler-embedded-file.cpp | 6 ++++-- + cpp/poppler-global.cpp | 6 +++++- + cpp/poppler-private.cpp | 25 +------------------------ + cpp/poppler-private.h | 3 +-- + 5 files changed, 14 insertions(+), 30 deletions(-) + +commit ff24d677c6078c3dfb54c35541369d908314bcdb +Author: Adrian Johnson <[email protected]> +Date: Wed Feb 24 20:57:37 2016 +1030 + + pdfinfo: add -isodates for printing dates in ISO-8601 format + + utils/pdfinfo.1 | 3 +++ + utils/pdfinfo.cc | 36 +++++++++++++++++++++++++++++++++++- + 2 files changed, 38 insertions(+), 1 deletion(-) + +commit dd08f24f5e52c56546dfda70be483dc29e03c2e6 +Author: Adrian Johnson <[email protected]> +Date: Wed Feb 24 21:10:08 2016 +1030 + + pdfinfo: convert dates to local time zone + + utils/pdfinfo.cc | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +commit e4690ee1be027dd7028e86ea6732a3f4f2680ef7 +Author: Adrian Johnson <[email protected]> +Date: Tue Feb 23 21:01:49 2016 +1030 + + glib: return date in UTC instead of local time + + Bug 94173 + + ConfigureChecks.cmake | 1 + + config.h.cmake | 3 +++ + configure.ac | 1 + + glib/poppler-date.cc | 33 +++++++------------------------- + goo/glibc.cc | 24 ++++++++++++++++++++++++ + goo/glibc.h | 4 ++++ + poppler/DateInfo.cc | 52 + +++++++++++++++++++++++++++++---------------------- + poppler/DateInfo.h | 6 +++++- + poppler/Form.cc | 2 +- + 9 files changed, 76 insertions(+), 50 deletions(-) + +commit 7936af2eeb8f84993acabd1b306da50d49256b31 +Author: Adrian Johnson <[email protected]> +Date: Tue Feb 23 20:52:30 2016 +1030 + + Emulate some non portable glibc functions when not available + + CMakeLists.txt | 1 + + cpp/tests/poppler-dump.cpp | 5 +---- + glib/demo/utils.c | 6 ------ + goo/Makefile.am | 3 ++- + goo/glibc.cc | 34 ++++++++++++++++++++++++++++++++++ + goo/glibc.h | 33 +++++++++++++++++++++++++++++++++ + poppler/DateInfo.cc | 7 ++----- + 7 files changed, 73 insertions(+), 16 deletions(-) + +commit 4d799cdf9b9039b003de7d3baf05d858bc507a5a +Author: Albert Astals Cid <[email protected]> +Date: Thu Jun 2 00:22:05 2016 +0200 + + pdfinfo: Fix another leak + + Again not crucial in pdfinfo itself but nice to be clean so that if it + the leak check fails is because the core is doing something bad + + utils/JSInfo.cc | 13 ++++++++----- + utils/JSInfo.h | 3 ++- + 2 files changed, 10 insertions(+), 6 deletions(-) + +commit 4daee8a8ce40aeb658964a5902ae104549f7af75 +Author: Albert Astals Cid <[email protected]> +Date: Wed Jun 1 18:37:57 2016 +0200 + + Fix memory leak when failing to parse thumbs or actions + + poppler/Page.cc | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit bc6eb28776feaa302ad93e315798cad02c1e2a54 +Author: Albert Astals Cid <[email protected]> +Date: Wed Jun 1 18:36:17 2016 +0200 + + pdfinto: Fix memory leak + + It's not very critial that pdfinfo does not leak, but it's nice + to have no leaks so one can run ASAN over a file and see if something + is wrong or not + + utils/pdfinfo.cc | 1 + + 1 file changed, 1 insertion(+) + +commit 66617b256acfcd98f727bf11b7d7e92bcbd16de0 +Author: Albert Astals Cid <[email protected]> +Date: Wed Jun 1 18:35:50 2016 +0200 + + Point ucs4 to null when len is 0 + + Makes it easier for the caller than can always just free the passed + pointer + + poppler/UTF.cc | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 0d70a57c7ad8a53e2462560a47b6ea5eba73d6c5 +Author: Albert Astals Cid <[email protected]> +Date: Wed Jun 1 18:34:32 2016 +0200 + + Add docu to the get*Action methods + + Since unfortunately their behaviour is different in what you have + to do with the pointer given + + poppler/Annot.h | 12 ++++++------ + poppler/Form.h | 6 +++--- + 2 files changed, 9 insertions(+), 9 deletions(-) + +commit 3db727f9546779a8896fc30a6669751d726ab86c +Author: Albert Astals Cid <[email protected]> +Date: Wed Jun 1 18:32:45 2016 +0200 + + Fix memory leak in RichMedia parsing + + poppler/Annot.cc | 1 + + 1 file changed, 1 insertion(+) + +commit 8ace48fb07b81cab6ae68dc23d173e7441ad6d2e +Author: Albert Astals Cid <[email protected]> +Date: Sun May 29 11:45:55 2016 +0200 + + SplashOutputDev: Fix iccTransform + splashModeXBGR8 + + poppler/SplashOutputDev.cc | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 46039c2ef5b666d5ee85e7f6fc6a74a5a9e69526 +Author: Albert Astals Cid <[email protected]> +Date: Fri May 27 11:06:01 2016 +0200 + + Add braces to make it more clear to which if the else applies + + poppler/UnicodeTypeTable.cc | 21 ++++++++++++--------- + 1 file changed, 12 insertions(+), 9 deletions(-) + +commit 2d72a8bfc87c9bdcea6b617ebd4b3a3684e174e8 +Author: Albert Astals Cid <[email protected]> +Date: Thu May 26 17:59:21 2016 +0200 + + Initialize nConfigurations and nAssets + + poppler/Annot.cc | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 4e49b3af7d6f731b9da20a9d6e5aa54578f08d3f +Author: Albert Astals Cid <[email protected]> +Date: Thu May 26 17:34:56 2016 +0200 + + Fix memory leak on error on JBIG2Stream::readHalftoneRegionSeg + + poppler/JBIG2Stream.cc | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 5f51939eea5b98dcef115d18baec3179701d0292 +Author: Albert Astals Cid <[email protected]> +Date: Tue May 24 23:34:48 2016 +0200 + + Fix stack overflow + + Bug #96027 + + poppler/Stream.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c820826377d79438ecaf90e9b2106a8451585add +Author: Albert Astals Cid <[email protected]> +Date: Tue May 24 00:00:57 2016 +0200 + + Fix (C) year + + utils/HtmlOutputDev.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9ce8dd7fbd132b5f423dc3bf10fa87b973390d0b +Author: Albert Astals Cid <[email protected]> +Date: Mon May 23 23:59:40 2016 +0200 + + Fix stack overflow on broken file + + Bug #95567 + + poppler/Stream.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 37fb37e368c659832fc1a1dfd499c42340b62f38 +Author: Vincent Le Garrec <[email protected]> +Date: Mon May 23 23:18:40 2016 +0200 + + pdftohtml: Fix crash on broken file + + Bug #95563 + + utils/HtmlOutputDev.cc | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 1d0251c8ab48e2e1a4873d84b4bc573b3ae2a98d +Author: Albert Astals Cid <[email protected]> +Date: Sat May 21 20:02:26 2016 +0200 + + Fix memory leak in Splash::gouraudTriangleShadedFill + + splash/Splash.cc | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit eb20f8cc2c0dea281ae44336a8fac8cc86a99895 +Author: Albert Astals Cid <[email protected]> +Date: Sat May 21 19:19:43 2016 +0200 + + 0.44 + + CMakeLists.txt | 4 ++-- + NEWS | 16 ++++++++++++++++ + configure.ac | 2 +- + cpp/Doxyfile | 2 +- + poppler/Makefile.am | 2 +- + qt4/src/Doxyfile | 2 +- + qt5/src/Doxyfile | 2 +- + 7 files changed, 23 insertions(+), 7 deletions(-) + commit 58f56a7af99b477f39e57aed74443b6851afe15f Author: Thomas Freitag <[email protected]> Date: Sat May 21 18:25:22 2016 +0200 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/poppler-0.44.0/ConfigureChecks.cmake new/poppler-0.45.0/ConfigureChecks.cmake --- old/poppler-0.44.0/ConfigureChecks.cmake 2014-02-09 16:10:30.000000000 +0100 +++ new/poppler-0.45.0/ConfigureChecks.cmake 2016-06-09 20:09:35.000000000 +0200 @@ -30,6 +30,7 @@ check_function_exists(pread64 HAVE_PREAD64) check_function_exists(lseek64 HAVE_LSEEK64) check_function_exists(gmtime_r HAVE_GMTIME_R) +check_function_exists(timegm HAVE_TIMEGM) check_function_exists(gettimeofday HAVE_GETTIMEOFDAY) check_function_exists(localtime_r HAVE_LOCALTIME_R) check_function_exists(popen HAVE_POPEN) 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/poppler-0.44.0/NEWS new/poppler-0.45.0/NEWS --- old/poppler-0.44.0/NEWS 2016-05-21 18:56:48.000000000 +0200 +++ new/poppler-0.45.0/NEWS 2016-06-17 00:12:16.000000000 +0200 @@ -1,3 +1,22 @@ +Release 0.45.0 + core: + * SplashOutputDev: Fix iccTransform + splashModeXBGR8 + * Fix memory leaks + * Fix crash in broken files. Bug #95567. Bug #96027 + * Emulate some non portable glibc functions when not available + + utils: + * pdftohtml: Fix crash in broken files. Bug #95563 + * pdfinfo: convert dates to local time zone + * pdfinfo: add -isodates for printing dates in ISO-8601 format + * pdfinfo: Fix memory leaks + + glib: + * return date in UTC instead of local time. Bug #94173 + + cpp: + * switched from detail::convert_date() to core's dateStringToTime() + Release 0.44.0 core: * Fix Compile in 32bit linux. Bug #95492 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/poppler-0.44.0/config.h.cmake new/poppler-0.45.0/config.h.cmake --- old/poppler-0.44.0/config.h.cmake 2016-05-02 00:08:02.000000000 +0200 +++ new/poppler-0.45.0/config.h.cmake 2016-06-09 20:09:35.000000000 +0200 @@ -64,6 +64,9 @@ /* Defines if gmtime_r is available on your system */ #cmakedefine HAVE_GMTIME_R 1 +/* Defines if timegm is available on your system */ +#cmakedefine HAVE_TIMEGM 1 + /* Define if you have the iconv() function and it works. */ #cmakedefine HAVE_ICONV 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/poppler-0.44.0/config.h.in new/poppler-0.45.0/config.h.in --- old/poppler-0.44.0/config.h.in 2016-05-21 18:59:43.000000000 +0200 +++ new/poppler-0.45.0/config.h.in 2016-06-17 00:19:44.000000000 +0200 @@ -150,6 +150,9 @@ /* Define to 1 if you have the <tiffio.h> header file. */ #undef HAVE_TIFFIO_H +/* Defines if timegm is available on your system */ +#undef HAVE_TIMEGM + /* Define to 1 if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_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/poppler-0.44.0/configure.ac new/poppler-0.45.0/configure.ac --- old/poppler-0.44.0/configure.ac 2016-05-21 18:55:49.000000000 +0200 +++ new/poppler-0.45.0/configure.ac 2016-06-17 00:12:16.000000000 +0200 @@ -1,5 +1,5 @@ m4_define([poppler_version_major],[0]) -m4_define([poppler_version_minor],[44]) +m4_define([poppler_version_minor],[45]) m4_define([poppler_version_micro],[0]) m4_define([poppler_version],[poppler_version_major.poppler_version_minor.poppler_version_micro]) @@ -178,6 +178,7 @@ AC_CHECK_DECL(gettimeofday, [AC_CHECK_FUNC(gettimeofday, AC_DEFINE(HAVE_GETTIMEOFDAY, 1, [Defines if gettimeofday is available on your system]))],[],[#include <sys/time.h>]) AC_CHECK_FUNC(localtime_r, AC_DEFINE(HAVE_LOCALTIME_R, 1, [Defines if localtime_r is available on your system])) AC_CHECK_FUNC(gmtime_r, AC_DEFINE(HAVE_GMTIME_R, 1, [Defines if gmtime_r is available on your system])) +AC_CHECK_FUNC(timegm, AC_DEFINE(HAVE_TIMEGM, 1, [Defines if timegm is available on your system])) AC_CHECK_FUNC(rand_r, AC_DEFINE(HAVE_RAND_R, 1, [Defines if rand_r is available on your system])) dnl ##### Check for extra libraries needed by X. (LynxOS needs this.) 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/poppler-0.44.0/cpp/poppler-document.cpp new/poppler-0.45.0/cpp/poppler-document.cpp --- old/poppler-0.44.0/cpp/poppler-document.cpp 2014-02-09 16:10:30.000000000 +0100 +++ new/poppler-0.45.0/cpp/poppler-document.cpp 2016-06-09 20:09:35.000000000 +0200 @@ -1,5 +1,6 @@ /* * Copyright (C) 2009-2011, Pino Toscano <[email protected]> + * Copyright (C) 2016 Jakub Kucharski <[email protected]> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,6 +28,7 @@ #include "poppler-toc-private.h" #include "Catalog.h" +#include "DateInfo.h" #include "ErrorCodes.h" #include "GlobalParams.h" #include "Outline.h" @@ -379,7 +381,7 @@ Object obj; time_type result = time_type(-1); if (info_dict->lookup(PSTR(key.c_str()), &obj)->isString()) { - result = detail::convert_date(obj.getString()->getCString()); + result = dateStringToTime(obj.getString()); } obj.free(); info.free(); 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/poppler-0.44.0/cpp/poppler-embedded-file.cpp new/poppler-0.45.0/cpp/poppler-embedded-file.cpp --- old/poppler-0.44.0/cpp/poppler-embedded-file.cpp 2014-02-09 16:10:30.000000000 +0100 +++ new/poppler-0.45.0/cpp/poppler-embedded-file.cpp 2016-06-09 20:09:35.000000000 +0200 @@ -1,5 +1,6 @@ /* * Copyright (C) 2009-2011, Pino Toscano <[email protected]> + * Copyright (C) 2016 Jakub Kucharski <[email protected]> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,6 +26,7 @@ #include "Stream.h" #include "Catalog.h" #include "FileSpec.h" +#include "DateInfo.h" using namespace poppler; @@ -107,7 +109,7 @@ time_type embedded_file::modification_date() const { GooString *goo = d->file_spec->getEmbeddedFile()->modDate(); - return goo ? detail::convert_date(goo->getCString()) : time_type(-1); + return goo ? dateStringToTime(goo) : time_type(-1); } /** @@ -117,7 +119,7 @@ time_type embedded_file::creation_date() const { GooString *goo = d->file_spec->getEmbeddedFile()->createDate(); - return goo ? detail::convert_date(goo->getCString()) : time_type(-1); + return goo ? dateStringToTime(goo) : time_type(-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/poppler-0.44.0/cpp/poppler-global.cpp new/poppler-0.45.0/cpp/poppler-global.cpp --- old/poppler-0.44.0/cpp/poppler-global.cpp 2016-05-02 00:08:03.000000000 +0200 +++ new/poppler-0.45.0/cpp/poppler-global.cpp 2016-06-09 20:09:35.000000000 +0200 @@ -3,6 +3,7 @@ * Copyright (C) 2010, Hib Eris <[email protected]> * Copyright (C) 2014, 2015 Hans-Peter Deifel <[email protected]> * Copyright (C) 2015, Tamas Szekeres <[email protected]> + * Copyright (C) 2016 Jakub Kucharski <[email protected]> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,6 +24,8 @@ #include "poppler-private.h" +#include "DateInfo.h" + #include <algorithm> #include <cerrno> @@ -315,7 +318,8 @@ */ time_type poppler::convert_date(const std::string &date) { - return detail::convert_date(date.c_str()); + GooString gooDateStr(date.c_str()); + return dateStringToTime(&gooDateStr); } std::ostream& poppler::operator<<(std::ostream& stream, const byte_array &array) 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/poppler-0.44.0/cpp/poppler-private.cpp new/poppler-0.45.0/cpp/poppler-private.cpp --- old/poppler-0.44.0/cpp/poppler-private.cpp 2014-12-14 14:58:49.000000000 +0100 +++ new/poppler-0.45.0/cpp/poppler-private.cpp 2016-06-09 20:09:35.000000000 +0200 @@ -2,6 +2,7 @@ * Copyright (C) 2009-2010, Pino Toscano <[email protected]> * Copyright (C) 2013 Adrian Johnson <[email protected]> * Copyright (C) 2014, Hans-Peter Deifel <[email protected]> + * Copyright (C) 2016 Jakub Kucharski <[email protected]> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,7 +21,6 @@ #include "poppler-private.h" -#include "DateInfo.h" #include "GooString.h" #include "Page.h" @@ -115,26 +115,3 @@ GooString *goo = new GooString(&ba[0]); return goo; } - -time_type detail::convert_date(const char *date) -{ - int year, mon, day, hour, min, sec, tzHours, tzMins; - char tz; - - if (!parseDateString(date, &year, &mon, &day, &hour, &min, &sec, - &tz, &tzHours, &tzMins)) { - return time_type(-1); - } - - struct tm time; - time.tm_sec = sec; - time.tm_min = min; - time.tm_hour = hour; - time.tm_mday = day; - time.tm_mon = mon - 1; - time.tm_year = year - 1900; - time.tm_wday = -1; - time.tm_yday = -1; - time.tm_isdst = -1; - return mktime(&time); -} 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/poppler-0.44.0/cpp/poppler-private.h new/poppler-0.45.0/cpp/poppler-private.h --- old/poppler-0.44.0/cpp/poppler-private.h 2014-12-14 14:58:54.000000000 +0100 +++ new/poppler-0.45.0/cpp/poppler-private.h 2016-06-09 20:09:35.000000000 +0200 @@ -2,6 +2,7 @@ * Copyright (C) 2009, Pino Toscano <[email protected]> * Copyright (C) 2013 Adrian Johnson <[email protected]> * Copyright (C) 2014, Hans-Peter Deifel <[email protected]> + * Copyright (C) 2016 Jakub Kucharski <[email protected]> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -50,8 +51,6 @@ ustring unicode_to_ustring(const Unicode *u, int length); GooString* ustring_to_unicode_GooString(const ustring &str); -time_type convert_date(const char *date); - } template <typename ConstIterator> 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/poppler-0.44.0/cpp/poppler-version.h new/poppler-0.45.0/cpp/poppler-version.h --- old/poppler-0.44.0/cpp/poppler-version.h 2016-05-21 18:59:43.000000000 +0200 +++ new/poppler-0.45.0/cpp/poppler-version.h 2016-06-17 00:19:43.000000000 +0200 @@ -21,9 +21,9 @@ #include "poppler-global.h" -#define POPPLER_VERSION "0.44.0" +#define POPPLER_VERSION "0.45.0" #define POPPLER_VERSION_MAJOR 0 -#define POPPLER_VERSION_MINOR 44 +#define POPPLER_VERSION_MINOR 45 #define POPPLER_VERSION_MICRO 0 namespace poppler 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/poppler-0.44.0/cpp/tests/poppler-dump.cpp new/poppler-0.45.0/cpp/tests/poppler-dump.cpp --- old/poppler-0.44.0/cpp/tests/poppler-dump.cpp 2016-02-25 13:17:50.000000000 +0100 +++ new/poppler-0.45.0/cpp/tests/poppler-dump.cpp 2016-06-09 20:09:35.000000000 +0200 @@ -16,6 +16,7 @@ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ +#include <goo/glibc.h> #include <poppler-document.h> #include <poppler-embedded-file.h> #include <poppler-font.h> @@ -94,13 +95,9 @@ static std::string out_date(std::time_t date) { if (date != std::time_t(-1)) { -#ifdef HAVE_GMTIME_R struct tm time; gmtime_r(&date, &time); struct tm *t = &time; -#else - struct tm *t = gmtime(&date); -#endif char buf[32]; strftime(buf, sizeof(buf) - 1, "%d/%m/%Y %H:%M:%S", t); return std::string(buf); 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/poppler-0.44.0/glib/demo/utils.c new/poppler-0.45.0/glib/demo/utils.c --- old/poppler-0.44.0/glib/demo/utils.c 2016-05-02 00:08:03.000000000 +0200 +++ new/poppler-0.45.0/glib/demo/utils.c 2016-06-09 20:09:35.000000000 +0200 @@ -484,15 +484,9 @@ char s[256]; const char *fmt_hack = "%c"; size_t len; -#ifdef HAVE_LOCALTIME_R struct tm t; if (time == 0 || !localtime_r (&time, &t)) return NULL; len = strftime (s, sizeof (s), fmt_hack, &t); -#else - struct tm *t; - if (time == 0 || !(t = localtime (&time)) ) return NULL; - len = strftime (s, sizeof (s), fmt_hack, t); -#endif if (len == 0 || s[0] == '\0') return NULL; 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/poppler-0.44.0/glib/poppler-date.cc new/poppler-0.45.0/glib/poppler-date.cc --- old/poppler-0.44.0/glib/poppler-date.cc 2014-02-09 16:10:30.000000000 +0100 +++ new/poppler-0.45.0/glib/poppler-date.cc 2016-06-09 20:09:35.000000000 +0200 @@ -17,6 +17,7 @@ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ +#include <goo/glibc.h> #include <DateInfo.h> #include "poppler-date.h" @@ -37,32 +38,12 @@ poppler_date_parse (const gchar *date, time_t *timet) { - gint year, mon, day, hour, min, sec, tz_hour, tz_minute; - gchar tz; - struct tm time; - time_t retval; - - /* See PDF Reference 1.3, Section 3.8.2 for PDF Date representation */ - // TODO do something with the timezone information - if (!parseDateString (date, &year, &mon, &day, &hour, &min, &sec, &tz, &tz_hour, &tz_minute)) + time_t t; + GooString dateString(date); + t = dateStringToTime(&dateString); + if (t == (time_t)-1) return FALSE; - - time.tm_year = year - 1900; - time.tm_mon = mon - 1; - time.tm_mday = day; - time.tm_hour = hour; - time.tm_min = min; - time.tm_sec = sec; - time.tm_wday = -1; - time.tm_yday = -1; - time.tm_isdst = -1; /* 0 = DST off, 1 = DST on, -1 = don't know */ - - /* compute tm_wday and tm_yday and check date */ - retval = mktime (&time); - if (retval == (time_t) - 1) - return FALSE; - - *timet = retval; - return TRUE; + *timet = t; + return TRUE; } 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/poppler-0.44.0/glib/reference/html/index.html new/poppler-0.45.0/glib/reference/html/index.html --- old/poppler-0.44.0/glib/reference/html/index.html 2016-05-21 19:11:04.000000000 +0200 +++ new/poppler-0.45.0/glib/reference/html/index.html 2016-06-17 00:19:58.000000000 +0200 @@ -15,7 +15,7 @@ <div> <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">Poppler Reference Manual</p></th></tr></table></div> <div><p class="releaseinfo"> - for Poppler 0.44.0 + for Poppler 0.45.0 </p></div> </div> 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/poppler-0.44.0/glib/reference/html/poppler-Version-and-Features-Information.html new/poppler-0.45.0/glib/reference/html/poppler-Version-and-Features-Information.html --- old/poppler-0.44.0/glib/reference/html/poppler-Version-and-Features-Information.html 2016-05-21 19:11:04.000000000 +0200 +++ new/poppler-0.45.0/glib/reference/html/poppler-Version-and-Features-Information.html 2016-06-17 00:19:58.000000000 +0200 @@ -189,7 +189,7 @@ <hr> <div class="refsect2"> <a name="POPPLER-MINOR-VERSION:CAPS"></a><h3>POPPLER_MINOR_VERSION</h3> -<pre class="programlisting">#define POPPLER_MINOR_VERSION (44) +<pre class="programlisting">#define POPPLER_MINOR_VERSION (45) </pre> <p>The major version number of the poppler header files (e.g. in poppler version 0.1.2 this is 1.)</p> 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/poppler-0.44.0/glib/reference/version.xml new/poppler-0.45.0/glib/reference/version.xml --- old/poppler-0.44.0/glib/reference/version.xml 2016-05-21 18:59:43.000000000 +0200 +++ new/poppler-0.45.0/glib/reference/version.xml 2016-06-17 00:19:43.000000000 +0200 @@ -1 +1 @@ -0.44.0 +0.45.0 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/poppler-0.44.0/goo/Makefile.am new/poppler-0.45.0/goo/Makefile.am --- old/poppler-0.44.0/goo/Makefile.am 2016-02-25 13:17:50.000000000 +0100 +++ new/poppler-0.45.0/goo/Makefile.am 2016-06-17 00:12:16.000000000 +0200 @@ -40,7 +40,8 @@ ImgWriter.cc \ gtypes_p.h \ gstrtod.cc \ - grandom.cc + grandom.cc \ + glibc.cc if BUILD_LIBJPEG libjpeg_includes = $(LIBJPEG_CFLAGS) @@ -64,3 +65,5 @@ $(libtiff_includes) \ $(libjpeg2000_includes) \ $(libpng_includes) + +EXTRA_DIST = glibc.h \ No newline at end of file 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/poppler-0.44.0/goo/glibc.cc new/poppler-0.45.0/goo/glibc.cc --- old/poppler-0.44.0/goo/glibc.cc 1970-01-01 01:00:00.000000000 +0100 +++ new/poppler-0.45.0/goo/glibc.cc 2016-06-09 20:09:35.000000000 +0200 @@ -0,0 +1,58 @@ +//======================================================================== +// +// glibc.h +// +// Emulate various non-portable glibc functions. +// +// This file is licensed under the GPLv2 or later +// +// Copyright (C) 2016 Adrian Johnson <[email protected]> +// +//======================================================================== + +#include "glibc.h" + +#ifndef HAVE_GMTIME_R +struct tm *gmtime_r(const time_t *timep, struct tm *result) +{ + struct tm *gt; + gt = gmtime(timep); + if (gt) + *result = *gt; + return gt; +} +#endif + +#ifndef HAVE_LOCALTIME_R +struct tm *localtime_r(const time_t *timep, struct tm *result) +{ + struct tm *lt; + lt = localtime(timep); + *result = *lt; + return lt; +} +#endif + +#ifndef HAVE_TIMEGM +// Get offset of local time from UTC in seconds. DST is ignored. +static time_t getLocalTimeZoneOffset() +{ + time_t utc, local; + struct tm tm_utc; + time (&utc); + gmtime_r(&utc, &tm_utc); + local = mktime(&tm_utc); + return difftime(utc, local); +} + +time_t timegm(struct tm *tm) +{ + tm->tm_isdst = 0; + time_t t = mktime(tm); + if (t == -1) + return t; + + t += getLocalTimeZoneOffset(); + return t; +} +#endif 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/poppler-0.44.0/goo/glibc.h new/poppler-0.45.0/goo/glibc.h --- old/poppler-0.44.0/goo/glibc.h 1970-01-01 01:00:00.000000000 +0100 +++ new/poppler-0.45.0/goo/glibc.h 2016-06-09 20:09:35.000000000 +0200 @@ -0,0 +1,37 @@ +//======================================================================== +// +// glibc.h +// +// Emulate various non-portable glibc functions. +// +// This file is licensed under the GPLv2 or later +// +// Copyright (C) 2016 Adrian Johnson <[email protected]> +// +//======================================================================== + +#ifndef GLIBC_H +#define GLIBC_H + +#include "config.h" + +#include <time.h> + +extern "C" { + +#ifndef HAVE_GMTIME_R +struct tm *gmtime_r(const time_t *timep, struct tm *result); +#endif + +#ifndef HAVE_LOCALTIME_R +struct tm *localtime_r(const time_t *timep, struct tm *result); +#endif + +#ifndef HAVE_TIMEGM +time_t timegm(struct tm *tm); +#endif + +}; + +#endif // GLIBC_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/poppler-0.44.0/poppler/Annot.cc new/poppler-0.45.0/poppler/Annot.cc --- old/poppler-0.44.0/poppler/Annot.cc 2016-05-02 00:08:03.000000000 +0200 +++ new/poppler-0.45.0/poppler/Annot.cc 2016-06-01 18:32:40.000000000 +0200 @@ -15,7 +15,7 @@ // // Copyright (C) 2006 Scott Turner <[email protected]> // Copyright (C) 2007, 2008 Julien Rebetez <[email protected]> -// Copyright (C) 2007-2013, 2015 Albert Astals Cid <[email protected]> +// Copyright (C) 2007-2013, 2015, 2016 Albert Astals Cid <[email protected]> // Copyright (C) 2007-2013 Carlos Garcia Campos <[email protected]> // Copyright (C) 2007, 2008 Iñigo Martínez <[email protected]> // Copyright (C) 2007 Jeff Muizelaar <[email protected]> @@ -6849,6 +6849,7 @@ obj2.free(); } } else { + nConfigurations = 0; configurations = NULL; } obj1.free(); @@ -6879,6 +6880,7 @@ obj2.free(); } else { + nAssets = 0; assets = NULL; } obj1.free(); @@ -7064,6 +7066,7 @@ } else { params = NULL; } + obj1.free(); } AnnotRichMedia::Instance::~Instance() 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/poppler-0.44.0/poppler/Annot.h new/poppler-0.45.0/poppler/Annot.h --- old/poppler-0.44.0/poppler/Annot.h 2016-05-02 00:08:03.000000000 +0200 +++ new/poppler-0.45.0/poppler/Annot.h 2016-06-01 18:34:00.000000000 +0200 @@ -21,7 +21,7 @@ // Copyright (C) 2008 Hugo Mercier <[email protected]> // Copyright (C) 2008 Pino Toscano <[email protected]> // Copyright (C) 2008 Tomas Are Haavet <[email protected]> -// Copyright (C) 2009-2011, 2013 Albert Astals Cid <[email protected]> +// Copyright (C) 2009-2011, 2013, 2016 Albert Astals Cid <[email protected]> // Copyright (C) 2012, 2013 Fabio D'Urso <[email protected]> // Copyright (C) 2012, 2015 Tobias Koenig <[email protected]> // Copyright (C) 2013 Thomas Freitag <[email protected]> @@ -847,8 +847,8 @@ GooString* getTitle() { return title; } AnnotAppearanceCharacs *getAppearCharacs() { return appearCharacs; } - LinkAction* getAction() { return action; } - LinkAction *getAdditionalAction(AdditionalActionsType type); + LinkAction* getAction() { return action; } // The caller should now delete the result + LinkAction *getAdditionalAction(AdditionalActionsType type); // The caller should delete the result private: void initialize(PDFDoc *docA, Dict *dict); @@ -1322,9 +1322,9 @@ AnnotWidgetHighlightMode getMode() { return mode; } AnnotAppearanceCharacs *getAppearCharacs() { return appearCharacs; } - LinkAction *getAction() { return action; } - LinkAction *getAdditionalAction(AdditionalActionsType type); - LinkAction *getFormAdditionalAction(FormAdditionalActionsType type); + LinkAction *getAction() { return action; } // The caller should not delete the result + LinkAction *getAdditionalAction(AdditionalActionsType type); // The caller should delete the result + LinkAction *getFormAdditionalAction(FormAdditionalActionsType type); // The caller should delete the result Dict *getParent() { return parent; } private: 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/poppler-0.44.0/poppler/DateInfo.cc new/poppler-0.45.0/poppler/DateInfo.cc --- old/poppler-0.44.0/poppler/DateInfo.cc 2016-05-02 00:08:03.000000000 +0200 +++ new/poppler-0.45.0/poppler/DateInfo.cc 2016-06-17 00:12:16.000000000 +0200 @@ -6,6 +6,7 @@ // Copyright (C) 2009 Carlos Garcia Campos <[email protected]> // Copyright (C) 2015 André Guerreiro <[email protected]> // Copyright (C) 2015 André Esser <[email protected]> +// Copyright (C) 2016 Adrian Johnson <[email protected]> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -22,6 +23,7 @@ #include <config.h> +#include "glibc.h" #include "DateInfo.h" #include <stdio.h> @@ -74,20 +76,16 @@ return gFalse; } - +// Convert time to PDF date string GooString *timeToDateString(time_t *timet) { GooString *dateString; char s[5]; struct tm *gt; size_t len; time_t timep = timet ? *timet : time(NULL); - -#ifdef HAVE_GMTIME_R struct tm t; + gt = gmtime_r (&timep, &t); -#else - gt = gmtime (&timep); -#endif dateString = new GooString ("D:"); @@ -118,27 +116,35 @@ return dateString; } -time_t pdfTimeToInteger(GooString *time_str) -{ +// Convert PDF date string to time. Returns -1 if conversion fails. +time_t dateStringToTime(GooString *dateString) { int year, mon, day, hour, min, sec, tz_hour, tz_minute; char tz; - struct tm time_struct; + struct tm tm; + time_t time; - if (!parseDateString (time_str->getCString(), &year, - &mon, &day, &hour, &min, &sec, &tz, &tz_hour, &tz_minute)) - return 0; - - time_struct.tm_year = year - 1900; - time_struct.tm_mon = mon - 1; - time_struct.tm_mday = day; - time_struct.tm_hour = hour; - time_struct.tm_min = min; - time_struct.tm_sec = sec; - time_struct.tm_wday = -1; - time_struct.tm_yday = -1; - time_struct.tm_isdst = -1; + if (!parseDateString (dateString->getCString(), &year, &mon, &day, &hour, &min, &sec, &tz, &tz_hour, &tz_minute)) + return -1; - time_t unix_time = mktime(&time_struct); + tm.tm_year = year - 1900; + tm.tm_mon = mon - 1; + tm.tm_mday = day; + tm.tm_hour = hour; + tm.tm_min = min; + tm.tm_sec = sec; + tm.tm_wday = -1; + tm.tm_yday = -1; + tm.tm_isdst = -1; /* 0 = DST off, 1 = DST on, -1 = don't know */ + + /* compute tm_wday and tm_yday and check date */ + time = timegm (&tm); + if (time == (time_t)-1) + return time; + + time_t offset = (tz_hour*60 + tz_minute)*60; + if (tz == '-') + offset *= -1; + time -= offset; - return unix_time; + return time; } 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/poppler-0.44.0/poppler/DateInfo.h new/poppler-0.45.0/poppler/DateInfo.h --- old/poppler-0.44.0/poppler/DateInfo.h 2016-05-02 00:08:03.000000000 +0200 +++ new/poppler-0.45.0/poppler/DateInfo.h 2016-06-17 00:12:16.000000000 +0200 @@ -6,6 +6,7 @@ // Copyright (C) 2009 Carlos Garcia Campos <[email protected]> // Copyright (C) 2015 André Guerreiro <[email protected]> // Copyright (C) 2015 André Esser <[email protected]> +// Copyright (C) 2016 Adrian Johnson <[email protected]> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -33,6 +34,10 @@ * If timet is NULL, current time is used. */ GooString *timeToDateString(time_t *timet); -time_t pdfTimeToInteger(GooString *time_str); + +/* Convert PDF date string to time. + * Returns -1 if conversion fails. + */ +time_t dateStringToTime(GooString *dateString); #endif 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/poppler-0.44.0/poppler/Form.cc new/poppler-0.45.0/poppler/Form.cc --- old/poppler-0.44.0/poppler/Form.cc 2016-05-02 00:08:03.000000000 +0200 +++ new/poppler-0.45.0/poppler/Form.cc 2016-06-17 00:12:16.000000000 +0200 @@ -7,7 +7,7 @@ // Copyright 2006-2008 Julien Rebetez <[email protected]> // Copyright 2007-2012, 2015, 2016 Albert Astals Cid <[email protected]> // Copyright 2007-2008, 2011 Carlos Garcia Campos <[email protected]> -// Copyright 2007, 2013 Adrian Johnson <[email protected]> +// Copyright 2007, 2013, 2016 Adrian Johnson <[email protected]> // Copyright 2007 Iñigo Martínez <[email protected]> // Copyright 2008, 2011 Pino Toscano <[email protected]> // Copyright 2008 Michael Vrable <[email protected]> @@ -1421,7 +1421,7 @@ sig_dict.dictLookup("M", &time_of_signing); if (time_of_signing.isString()) { GooString *time_str = time_of_signing.getString(); - signature_info->setSigningTime(pdfTimeToInteger(time_str)); // Put this information directly in SignatureInfo object + signature_info->setSigningTime(dateStringToTime(time_str)); // Put this information directly in SignatureInfo object time_of_signing.free(); } 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/poppler-0.44.0/poppler/Form.h new/poppler-0.45.0/poppler/Form.h --- old/poppler-0.44.0/poppler/Form.h 2016-05-02 00:08:03.000000000 +0200 +++ new/poppler-0.45.0/poppler/Form.h 2016-06-01 18:34:09.000000000 +0200 @@ -6,7 +6,7 @@ // // Copyright 2006 Julien Rebetez <[email protected]> // Copyright 2007, 2008, 2011 Carlos Garcia Campos <[email protected]> -// Copyright 2007-2010, 2012, 2015 Albert Astals Cid <[email protected]> +// Copyright 2007-2010, 2012, 2015, 2016 Albert Astals Cid <[email protected]> // Copyright 2010 Mark Riedesel <[email protected]> // Copyright 2011 Pino Toscano <[email protected]> // Copyright 2012 Fabio D'Urso <[email protected]> @@ -106,8 +106,8 @@ bool isReadOnly() const; - LinkAction *getActivationAction(); - LinkAction *getAdditionalAction(Annot::FormAdditionalActionsType type); + LinkAction *getActivationAction(); // The caller should not delete the result + LinkAction *getAdditionalAction(Annot::FormAdditionalActionsType type); // The caller should delete the result // return the unique ID corresponding to pageNum/fieldNum static int encodeID (unsigned pageNum, unsigned fieldNum); 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/poppler-0.44.0/poppler/JBIG2Stream.cc new/poppler-0.45.0/poppler/JBIG2Stream.cc --- old/poppler-0.44.0/poppler/JBIG2Stream.cc 2016-05-02 00:08:03.000000000 +0200 +++ new/poppler-0.45.0/poppler/JBIG2Stream.cc 2016-05-26 17:34:48.000000000 +0200 @@ -15,7 +15,7 @@ // // Copyright (C) 2006 Raj Kumar <[email protected]> // Copyright (C) 2006 Paul Walmsley <[email protected]> -// Copyright (C) 2006-2010, 2012, 2014, 2015 Albert Astals Cid <[email protected]> +// Copyright (C) 2006-2010, 2012, 2014-2016 Albert Astals Cid <[email protected]> // Copyright (C) 2009 David Benjamin <[email protected]> // Copyright (C) 2011 Edward Jiang <[email protected]> // Copyright (C) 2012 William Bader <[email protected]> @@ -2770,6 +2770,9 @@ if (!(enableSkip && skipBitmap->getPixel(n, m))) { patternBitmap = patternDict->getBitmap(grayImg[i]); if (unlikely(patternBitmap == NULL)) { + delete skipBitmap; + delete bitmap; + gfree(grayImg); error(errSyntaxError, curStr->getPos(), "Bad pattern bitmap"); return; } 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/poppler-0.44.0/poppler/Makefile.am new/poppler-0.45.0/poppler/Makefile.am --- old/poppler-0.44.0/poppler/Makefile.am 2016-05-21 18:56:39.000000000 +0200 +++ new/poppler-0.45.0/poppler/Makefile.am 2016-06-17 00:12:16.000000000 +0200 @@ -327,7 +327,7 @@ $(win32_libs) libpoppler_la_LDFLAGS = \ - -version-info 61:0:0 \ + -version-info 62:0:0 \ @create_shared_lib@ \ @auto_import_flags@ 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/poppler-0.44.0/poppler/Page.cc new/poppler-0.45.0/poppler/Page.cc --- old/poppler-0.44.0/poppler/Page.cc 2016-05-02 00:08:03.000000000 +0200 +++ new/poppler-0.45.0/poppler/Page.cc 2016-06-01 18:37:51.000000000 +0200 @@ -15,7 +15,7 @@ // // Copyright (C) 2005 Kristian Høgsberg <[email protected]> // Copyright (C) 2005 Jeff Muizelaar <[email protected]> -// Copyright (C) 2005-2013 Albert Astals Cid <[email protected]> +// Copyright (C) 2005-2013, 2016 Albert Astals Cid <[email protected]> // Copyright (C) 2006-2008 Pino Toscano <[email protected]> // Copyright (C) 2006 Nickolay V. Shmyrev <[email protected]> // Copyright (C) 2006 Scott Turner <[email protected]> @@ -325,6 +325,7 @@ if (!(thumb.isStream() || thumb.isNull() || thumb.isRef())) { error(errSyntaxError, -1, "Page thumb object (page {0:d}) is wrong type ({1:s})", num, thumb.getTypeName()); + thumb.free(); thumb.initNull(); } @@ -333,6 +334,7 @@ if (!(actions.isDict() || actions.isNull())) { error(errSyntaxError, -1, "Page additional action object (page {0:d}) is wrong type ({1:s})", num, actions.getTypeName()); + actions.free(); actions.initNull(); } 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/poppler-0.44.0/poppler/SplashOutputDev.cc new/poppler-0.45.0/poppler/SplashOutputDev.cc --- old/poppler-0.44.0/poppler/SplashOutputDev.cc 2016-05-04 01:32:39.000000000 +0200 +++ new/poppler-0.45.0/poppler/SplashOutputDev.cc 2016-05-31 18:40:39.000000000 +0200 @@ -3278,17 +3278,17 @@ Guchar *q; Guchar *b = p; int x; - for (x = 0, q = rgbxLine; x < bitmap->getWidth(); ++x, ++b) { - *q++ = *b++; - *q++ = *b++; - *q++ = *b++; + for (x = 0, q = rgbxLine; x < bitmap->getWidth(); ++x, b+=4) { + *q++ = b[2]; + *q++ = b[1]; + *q++ = b[0]; } imgData->colorMap->getRGBLine(rgbxLine, colorLine, bitmap->getWidth()); b = p; - for (x = 0, q = colorLine; x < bitmap->getWidth(); ++x, ++b) { - *b++ = *q++; - *b++ = *q++; - *b++ = *q++; + for (x = 0, q = colorLine; x < bitmap->getWidth(); ++x, b+=4) { + b[2] = *q++; + b[1] = *q++; + b[0] = *q++; } break; } 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/poppler-0.44.0/poppler/Stream.cc new/poppler-0.45.0/poppler/Stream.cc --- old/poppler-0.44.0/poppler/Stream.cc 2016-05-02 00:08:03.000000000 +0200 +++ new/poppler-0.45.0/poppler/Stream.cc 2016-05-31 18:40:39.000000000 +0200 @@ -14,7 +14,7 @@ // under GPL version 2 or later // // Copyright (C) 2005 Jeff Muizelaar <[email protected]> -// Copyright (C) 2006-2010, 2012-2014 Albert Astals Cid <[email protected]> +// Copyright (C) 2006-2010, 2012-2014, 2016 Albert Astals Cid <[email protected]> // Copyright (C) 2007 Krzysztof Kowalczyk <[email protected]> // Copyright (C) 2008 Julien Rebetez <[email protected]> // Copyright (C) 2009 Carlos Garcia Campos <[email protected]> @@ -178,12 +178,12 @@ dict->dictLookup("Filter", &obj, recursion); if (obj.isNull()) { obj.free(); - dict->dictLookup("F", &obj); + dict->dictLookup("F", &obj, recursion); } dict->dictLookup("DecodeParms", ¶ms, recursion); if (params.isNull()) { params.free(); - dict->dictLookup("DP", ¶ms); + dict->dictLookup("DP", ¶ms, recursion); } if (obj.isName()) { str = makeFilter(obj.getName(), str, ¶ms, recursion, dict); 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/poppler-0.44.0/poppler/UTF.cc new/poppler-0.45.0/poppler/UTF.cc --- old/poppler-0.44.0/poppler/UTF.cc 2014-02-09 16:10:33.000000000 +0100 +++ new/poppler-0.45.0/poppler/UTF.cc 2016-06-01 18:35:35.000000000 +0200 @@ -16,6 +16,7 @@ // Copyright (C) 2008 Koji Otani <[email protected]> // Copyright (C) 2012 Adrian Johnson <[email protected]> // Copyright (C) 2012 Hib Eris <[email protected]> +// Copyright (C) 2016 Albert Astals Cid <[email protected]> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -89,8 +90,10 @@ len = textStr->getLength(); s = textStr->getCString(); - if (len == 0) + if (len == 0) { + *ucs4 = 0; return 0; + } if (textStr->hasUnicodeMarker()) { Unicode *utf16; 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/poppler-0.44.0/poppler/UnicodeTypeTable.cc new/poppler-0.45.0/poppler/UnicodeTypeTable.cc --- old/poppler-0.44.0/poppler/UnicodeTypeTable.cc 2016-05-02 00:08:03.000000000 +0200 +++ new/poppler-0.45.0/poppler/UnicodeTypeTable.cc 2016-05-27 11:00:09.000000000 +0200 @@ -15,7 +15,7 @@ // // Copyright (C) 2006, 2007 Ed Catmur <[email protected]> // Copyright (C) 2007 Jeff Muizelaar <[email protected]> -// Copyright (C) 2008 Albert Astals Cid <[email protected]> +// Copyright (C) 2008, 2016 Albert Astals Cid <[email protected]> // Copyright (C) 2012 Adrian Johnson <[email protected]> // Copyright (C) 2016 Khaled Hosny <[email protected]> // @@ -1028,16 +1028,19 @@ int midpoint = (start + end) / 2; if (u == decomp_table[midpoint].character) { int offset = decomp_table[midpoint].offset; - if (offset == -1) + if (offset == -1) { break; - else { + } else { int length = decomp_table[midpoint].length, i; - if (buf) - for (i = 0; i < length; ++i) - if (unicodeTypeR(u) && reverseRTL) - buf[i] = decomp_expansion[offset + length - i - 1]; - else - buf[i] = decomp_expansion[offset + i]; + if (buf) { + for (i = 0; i < length; ++i) { + if (unicodeTypeR(u) && reverseRTL) { + buf[i] = decomp_expansion[offset + length - i - 1]; + } else { + buf[i] = decomp_expansion[offset + i]; + } + } + } return length; } } else if (midpoint == start) 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/poppler-0.44.0/splash/Splash.cc new/poppler-0.45.0/splash/Splash.cc --- old/poppler-0.44.0/splash/Splash.cc 2016-05-17 01:00:14.000000000 +0200 +++ new/poppler-0.45.0/splash/Splash.cc 2016-05-29 01:02:50.000000000 +0200 @@ -11,7 +11,7 @@ // All changes made under the Poppler project to this file are licensed // under GPL version 2 or later // -// Copyright (C) 2005-2015 Albert Astals Cid <[email protected]> +// Copyright (C) 2005-2016 Albert Astals Cid <[email protected]> // Copyright (C) 2005 Marco Pesenti Gritti <[email protected]> // Copyright (C) 2010-2016 Thomas Freitag <[email protected]> // Copyright (C) 2010 Christian Feuersänger <[email protected]> @@ -5768,6 +5768,9 @@ } } } else { + if (!bDirectBlit) { + delete blitTarget; + } return gFalse; } 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/poppler-0.44.0/utils/HtmlOutputDev.cc new/poppler-0.45.0/utils/HtmlOutputDev.cc --- old/poppler-0.44.0/utils/HtmlOutputDev.cc 2015-11-15 22:05:22.000000000 +0100 +++ new/poppler-0.45.0/utils/HtmlOutputDev.cc 2016-05-24 00:00:55.000000000 +0200 @@ -38,6 +38,7 @@ // Copyright (C) 2013 Julien Nabet <[email protected]> // Copyright (C) 2013 Johannes Brandstätter <[email protected]> // Copyright (C) 2014 Fabio D'Urso <[email protected]> +// Copyright (C) 2016 Vincent Le Garrec <[email protected]> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -1392,6 +1393,13 @@ // Convert into a PNG row p = imgStr->getLine(); + if (!p) { + error(errIO, -1, "Failed to read PNG. '{0:t}' will be incorrect", fName); + delete writer; + delete imgStr; + fclose(f1); + return; + } for (int x = 0; x < width; x++) { colorMap->getRGB(p, &rgb); // Write the RGB pixels into the row 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/poppler-0.44.0/utils/JSInfo.cc new/poppler-0.45.0/utils/JSInfo.cc --- old/poppler-0.44.0/utils/JSInfo.cc 2014-02-09 16:10:35.000000000 +0100 +++ new/poppler-0.45.0/utils/JSInfo.cc 2016-06-02 00:21:59.000000000 +0200 @@ -5,6 +5,7 @@ // This file is licensed under the GPLv2 or later // // Copyright (C) 2013 Adrian Johnson <[email protected]> +// Copyright (C) 2016 Albert Astals Cid <[email protected]> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -47,7 +48,7 @@ } } -void JSInfo::scanLinkAction(LinkAction *link, const char *action) { +void JSInfo::scanLinkAction(LinkAction *link, const char *action, bool deleteLink) { if (!link) return; @@ -78,6 +79,8 @@ } } } + if (deleteLink) + delete link; } void JSInfo::scanJS(int nPages) { @@ -134,7 +137,7 @@ for (int j = 0; j < field->getNumWidgets(); j++) { FormWidget *widget = field->getWidget(j); scanLinkAction(widget->getActivationAction(), - "Field Activated"); + "Field Activated", false); scanLinkAction(widget->getAdditionalAction(Annot::actionFieldModified), "Field Modified"); scanLinkAction(widget->getAdditionalAction(Annot::actionFormatField), @@ -171,11 +174,11 @@ for (int i = 0; i < annots->getNumAnnots(); ++i) { if (annots->getAnnot(i)->getType() == Annot::typeLink) { AnnotLink *annot = static_cast<AnnotLink *>(annots->getAnnot(i)); - scanLinkAction(annot->getAction(), "Link Annotation Activated"); + scanLinkAction(annot->getAction(), "Link Annotation Activated", false); } else if (annots->getAnnot(i)->getType() == Annot::typeScreen) { AnnotScreen *annot = static_cast<AnnotScreen *>(annots->getAnnot(i)); scanLinkAction(annot->getAction(), - "Screen Annotation Activated"); + "Screen Annotation Activated", false); scanLinkAction(annot->getAdditionalAction(Annot::actionCursorEntering), "Screen Annotation Cursor Enter"); scanLinkAction(annot->getAdditionalAction(Annot::actionCursorLeaving), @@ -200,7 +203,7 @@ } else if (annots->getAnnot(i)->getType() == Annot::typeWidget) { AnnotWidget *annot = static_cast<AnnotWidget *>(annots->getAnnot(i)); scanLinkAction(annot->getAction(), - "Widget Annotation Activated"); + "Widget Annotation Activated", false); scanLinkAction(annot->getAdditionalAction(Annot::actionCursorEntering), "Widget Annotation Cursor Enter"); scanLinkAction(annot->getAdditionalAction(Annot::actionCursorLeaving), 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/poppler-0.44.0/utils/JSInfo.h new/poppler-0.45.0/utils/JSInfo.h --- old/poppler-0.44.0/utils/JSInfo.h 2015-11-15 22:05:22.000000000 +0100 +++ new/poppler-0.45.0/utils/JSInfo.h 2016-06-02 00:21:59.000000000 +0200 @@ -5,6 +5,7 @@ // This file is licensed under the GPLv2 or later // // Copyright (C) 2013 Adrian Johnson <[email protected]> +// Copyright (C) 2016 Albert Astals Cid <[email protected]> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -52,7 +53,7 @@ UnicodeMap *uniMap; void scan(int nPages); - void scanLinkAction(LinkAction *link, const char *action); + void scanLinkAction(LinkAction *link, const char *action, bool deleteLink = true); void printJS(GooString *js); }; 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/poppler-0.44.0/utils/pdfinfo.1 new/poppler-0.45.0/utils/pdfinfo.1 --- old/poppler-0.44.0/utils/pdfinfo.1 2016-05-02 00:08:04.000000000 +0200 +++ new/poppler-0.45.0/utils/pdfinfo.1 2016-06-09 20:09:35.000000000 +0200 @@ -105,6 +105,9 @@ (Implies .BR \-struct .) .TP +.B \-isodates +Prints dates in ISO-8601 format (including the time zone). +.TP .B \-rawdates Prints the raw (undecoded) date strings, directly from the PDF file. .TP 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/poppler-0.44.0/utils/pdfinfo.cc new/poppler-0.45.0/utils/pdfinfo.cc --- old/poppler-0.44.0/utils/pdfinfo.cc 2016-05-02 00:08:04.000000000 +0200 +++ new/poppler-0.45.0/utils/pdfinfo.cc 2016-06-17 00:12:16.000000000 +0200 @@ -18,7 +18,7 @@ // Copyright (C) 2007-2010, 2012 Albert Astals Cid <[email protected]> // Copyright (C) 2010 Hib Eris <[email protected]> // Copyright (C) 2011 Vittal Aithal <[email protected]> -// Copyright (C) 2012, 2013 Adrian Johnson <[email protected]> +// Copyright (C) 2012, 2013, 2016 Adrian Johnson <[email protected]> // Copyright (C) 2012 Fabio D'Urso <[email protected]> // Copyright (C) 2013 Adrian Perez de Castro <[email protected]> // Copyright (C) 2013 Suzuki Toshiya <[email protected]> @@ -40,6 +40,7 @@ #include "printencodings.h" #include "goo/GooString.h" #include "goo/gfile.h" +#include "goo/glibc.h" #include "goo/gmem.h" #include "GlobalParams.h" #include "Object.h" @@ -63,6 +64,7 @@ static void printInfoString(Dict *infoDict, const char *key, const char *text, UnicodeMap *uMap); static void printInfoDate(Dict *infoDict, const char *key, const char *text); +static void printISODate(Dict *infoDict, const char *key, const char *text); static void printBox(const char *text, PDFRectangle *box); static void printStruct(const StructElement *element, unsigned indent = 0); static void printIndent(unsigned level); @@ -72,6 +74,7 @@ static GBool printBoxes = gFalse; static GBool printMetadata = gFalse; static GBool printJS = gFalse; +static GBool isoDates = gFalse; static GBool rawDates = gFalse; static char textEncName[128] = ""; static char ownerPassword[33] = "\001"; @@ -97,6 +100,8 @@ "print the logical document structure (for tagged files)"}, {"-struct-text", argFlag, &printStructureText, 0, "print text contents along with document structure (for tagged files)"}, + {"-isodates", argFlag, &isoDates, 0, + "print the dates in ISO-8601 format"}, {"-rawdates", argFlag, &rawDates, 0, "print the undecoded date strings directly from the PDF file"}, {"-enc", argString, textEncName, sizeof(textEncName), @@ -238,7 +243,10 @@ printInfoString(info.getDict(), "Author", "Author: ", uMap); printInfoString(info.getDict(), "Creator", "Creator: ", uMap); printInfoString(info.getDict(), "Producer", "Producer: ", uMap); - if (rawDates) { + if (isoDates) { + printISODate(info.getDict(), "CreationDate", "CreationDate: "); + printISODate(info.getDict(), "ModDate", "ModDate: "); + } else if (rawDates) { printInfoString(info.getDict(), "CreationDate", "CreationDate: ", uMap); printInfoString(info.getDict(), "ModDate", "ModDate: ", @@ -458,6 +466,7 @@ n = uMap->mapUnicode(u[i], buf, sizeof(buf)); fwrite(buf, 1, n, stdout); } + gfree(u); fputc('\n', stdout); } obj.free(); @@ -469,6 +478,7 @@ int year, mon, day, hour, min, sec, tz_hour, tz_minute; char tz; struct tm tmStruct; + time_t time; char buf[256]; if (infoDict->lookup(key, &obj)->isString()) { @@ -486,14 +496,47 @@ tmStruct.tm_yday = -1; tmStruct.tm_isdst = -1; // compute the tm_wday and tm_yday fields - if (mktime(&tmStruct) != (time_t)-1 && - strftime(buf, sizeof(buf), "%c", &tmStruct)) { + time = timegm(&tmStruct); + if (time != (time_t)-1) { + int offset = (tz_hour*60 + tz_minute)*60; + if (tz == '-') + offset *= -1; + time -= offset; + localtime_r(&time, &tmStruct); + strftime(buf, sizeof(buf), "%c %Z", &tmStruct); fputs(buf, stdout); } else { fputs(s, stdout); } } else { fputs(s, stdout); + } + fputc('\n', stdout); + } + obj.free(); +} + +void printISODate(Dict *infoDict, const char *key, const char *text) +{ + Object obj; + char *s; + int year, mon, day, hour, min, sec, tz_hour, tz_minute; + char tz; + + if (infoDict->lookup(key, &obj)->isString()) { + fputs(text, stdout); + s = obj.getString()->getCString(); + if ( parseDateString( s, &year, &mon, &day, &hour, &min, &sec, &tz, &tz_hour, &tz_minute ) ) { + fprintf(stdout, "%04d-%02d-%02dT%02d:%02d:%02d", year, mon, day, hour, min, sec); + if (tz_hour == 0 && tz_minute == 0) { + fprintf(stdout, "Z"); + } else { + fprintf(stdout, "%c%02d", tz, tz_hour); + if (tz_minute) + fprintf(stdout, ":%02d", tz_minute); + } + } else { + fputs(s, stdout); } fputc('\n', stdout); }
