Mercurial > hg > forks > geeqie
changeset 2888:f89d0a76c45b
fix build against exiv2-0.27.x
fixes #654
author | Rasmus Thomsen <rasmus.thomsen@protonmail.com> |
---|---|
date | Wed, 02 Jan 2019 01:04:45 +0100 |
parents | b20a96b979a3 |
children | 627bd720b0a1 |
files | src/exiv2.cc |
diffstat | 1 files changed, 21 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/src/exiv2.cc Sat Nov 03 17:53:31 2018 +0000 +++ b/src/exiv2.cc Wed Jan 02 01:04:45 2019 +0100 @@ -22,17 +22,25 @@ #ifdef HAVE_EXIV2 -#include <exiv2/image.hpp> -#include <exiv2/exif.hpp> +// Don't include the <exiv2/version.hpp> file directly +// Early Exiv2 versions didn't have version.hpp and the macros. +#include <exiv2/exiv2.hpp> #include <iostream> #include <string> // 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 <sys/types.h> #include <sys/stat.h> @@ -40,27 +48,8 @@ #include <fcntl.h> #include <sys/mman.h> -#if !EXIV2_TEST_VERSION(0,17,90) -#include <exiv2/tiffparser.hpp> -#include <exiv2/tiffcomposite.hpp> -#include <exiv2/tiffvisitor.hpp> -#include <exiv2/tiffimage.hpp> -#include <exiv2/cr2image.hpp> -#include <exiv2/crwimage.hpp> -#if EXIV2_TEST_VERSION(0,16,0) -#include <exiv2/orfimage.hpp> -#endif -#if EXIV2_TEST_VERSION(0,13,0) -#include <exiv2/rafimage.hpp> -#endif -#include <exiv2/futils.hpp> -#else -#include <exiv2/preview.hpp> -#endif - -#if EXIV2_TEST_VERSION(0,17,0) -#include <exiv2/convert.hpp> -#include <exiv2/xmpsidecar.hpp> +#if EXIV2_TEST_VERSION(0,27,0) +#define EXV_PACKAGE "exiv2" #endif extern "C" { @@ -374,7 +363,11 @@ #endif Exiv2::Image *image = imageData_->image(); +#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 +387,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 } }