From 13859e2ec3a1afc74f109cfffdf0de39030cde86 Mon Sep 17 00:00:00 2001 From: Rasmus Thomsen Date: Wed, 2 Jan 2019 01:04:45 +0100 Subject: [PATCH] fix build against exiv2-0.27.x fixes #654 --- src/exiv2.cc | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/exiv2.cc b/src/exiv2.cc index b3c80657..f40b725e 100644 --- a/src/exiv2.cc +++ b/src/exiv2.cc @@ -22,17 +22,27 @@ #ifdef HAVE_EXIV2 +// Don't include the file directly +// Early Exiv2 versions didn't have version.hpp and the macros. +#include #include #include #include #include // EXIV2_TEST_VERSION is defined in Exiv2 0.15 and newer. +#ifdef EXIV2_VERSION #ifndef EXIV2_TEST_VERSION -# define EXIV2_TEST_VERSION(major,minor,patch) \ +#define EXIV2_TEST_VERSION(major,minor,patch) \ ( EXIV2_VERSION >= EXIV2_MAKE_VERSION(major,minor,patch) ) #endif +#else +#define EXIV2_TEST_VERSION(major,minor,patch) (false) +#endif +#if EXIV2_TEST_VERSION(0,27,0) +#define HAVE_EXIV2_ERROR_CODE +#endif #include #include @@ -40,6 +50,10 @@ #include #include +#if EXIV2_TEST_VERSION(0,27,0) +#define EXV_PACKAGE "exiv2" +#endif + #if !EXIV2_TEST_VERSION(0,17,90) #include #include @@ -374,7 +388,11 @@ #endif Exiv2::Image *image = imageData_->image(); - if (!image) Exiv2::Error(21); +#ifdef HAVE_EXIV2_ERROR_CODE + if (!image) throw Exiv2::Error(Exiv2::ErrorCode::kerInputDataReadFailed); +#else + if (!image) throw Exiv2::Error(21); +#endif image->setExifData(exifData_); image->setIptcData(iptcData_); #if EXIV2_TEST_VERSION(0,16,0) @@ -394,8 +412,12 @@ sidecar->setXmpData(xmpData_); sidecar->writeMetadata(); #else +#ifdef HAVE_EXIV2_ERROR_CODE + throw Exiv2::Error(Exiv2::ErrorCode::kerNotAnImage, "xmp"); +#else throw Exiv2::Error(3, "xmp"); #endif +#endif } }