head 1.2; access; symbols pkgsrc-2024Q1:1.1.0.6 pkgsrc-2024Q1-base:1.1 pkgsrc-2023Q4:1.1.0.4 pkgsrc-2023Q4-base:1.1 pkgsrc-2023Q3:1.1.0.2 pkgsrc-2023Q3-base:1.1; locks; strict; comment @// @; 1.2 date 2024.04.14.17.42.09; author adam; state dead; branches; next 1.1; commitid SDA1G0ZwAMb4z86F; 1.1 date 2023.07.01.22.14.58; author wiz; state Exp; branches; next ; commitid PMIOHB3dPVlEk9vE; desc @@ 1.2 log @gexiv2: updated to 0.14.2 gexiv2 0.14.2 - 24 Jul 2023 (stable) * Make compatible with exiv2 0.28 or later * Fix double free if creation of meta-data fails * Fix floating point compare in tests @ text @$NetBSD: patch-gexiv2_gexiv2-metadata-xmp.cpp,v 1.1 2023/07/01 22:14:58 wiz Exp $ Fix build with exiv2 0.28.0. https://gitlab.gnome.org/GNOME/gexiv2/-/commit/06adc8fb70cb8c77c0cd364195d8251811106ef8 --- gexiv2/gexiv2-metadata-xmp.cpp.orig 2023-05-06 08:50:03.000000000 +0000 +++ gexiv2/gexiv2-metadata-xmp.cpp @@@@ -8,6 +8,8 @@@@ * SPDX-License-Identifier: GPL-2.0-or-later */ +#include + #include "gexiv2-metadata-private.h" #include "gexiv2-metadata.h" @@@@ -48,7 +50,7 @@@@ gchar *gexiv2_metadata_try_generate_xmp_ return g_strdup(packet.c_str()); } } catch (Exiv2::Error& e) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e.code()), e.what()); } return nullptr; @@@@ -79,7 +81,7 @@@@ gchar *gexiv2_metadata_try_get_xmp_packe try { return g_strdup(self->priv->image->xmpPacket().c_str()); } catch (Exiv2::Error& e) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e.code()), e.what()); } return NULL; @@@@ -187,7 +189,7 @@@@ gchar* gexiv2_metadata_get_xmp_tag_strin if (it != xmp_data.end()) return g_strdup (it->toString ().c_str ()); } catch (Exiv2::Error& e) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e.code()), e.what()); } return nullptr; @@@@ -214,7 +216,7 @@@@ gchar* gexiv2_metadata_get_xmp_tag_inter return g_strdup (os.str ().c_str ()); } } catch (Exiv2::Error& e) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e.code()), e.what()); } return nullptr; @@@@ -257,7 +259,7 @@@@ gboolean gexiv2_metadata_try_set_xmp_tag xmp_data.add(Exiv2::XmpKey(tag), &tv); return TRUE; } catch (Exiv2::Error& e) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e.code()), e.what()); } return FALSE; @@@@ -294,7 +296,7 @@@@ gboolean gexiv2_metadata_set_xmp_tag_str return TRUE; } catch (Exiv2::Error& e) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e.code()), e.what()); } return FALSE; @@@@ -313,11 +315,16 @@@@ glong gexiv2_metadata_get_xmp_tag_long ( Exiv2::XmpData::iterator it = xmp_data.findKey(Exiv2::XmpKey(tag)); while (it != xmp_data.end() && it->count() == 0) it++; - + +#ifdef EXIV2_XMPDATUM_HAS_TO_LONG if (it != xmp_data.end()) return it->toLong (); +#else + if (it != xmp_data.end()) + return static_cast(it->toInt64()); +#endif } catch (Exiv2::Error& e) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e.code()), e.what()); } return 0; @@@@ -334,7 +341,7 @@@@ gboolean gexiv2_metadata_set_xmp_tag_lon return TRUE; } catch (Exiv2::Error& e) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e.code()), e.what()); } return FALSE; @@@@ -414,7 +421,7 @@@@ gchar** gexiv2_metadata_get_xmp_tag_mult if (array) { g_strfreev(array); } - g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e.code()), e.what()); } array = g_new(gchar*, 1); @@@@ -450,7 +457,7 @@@@ gchar** gexiv2_metadata_get_xmp_tag_mult return array; } } catch (Exiv2::Error& e) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e.code()), e.what()); } gchar **array = g_new (gchar*, 1); @@@@ -488,7 +495,7 @@@@ gboolean gexiv2_metadata_set_xmp_tag_mul return TRUE; } catch (Exiv2::Error& e) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e.code()), e.what()); } return FALSE; @@@@ -501,7 +508,7 @@@@ const gchar* gexiv2_metadata_get_xmp_tag try { return Exiv2::XmpProperties::propertyTitle(Exiv2::XmpKey(tag)); } catch (Exiv2::Error& e) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e.code()), e.what()); } return NULL; @@@@ -514,7 +521,7 @@@@ const gchar* gexiv2_metadata_get_xmp_tag try { return Exiv2::XmpProperties::propertyDesc(Exiv2::XmpKey(tag)); } catch (Exiv2::Error& e) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e.code()), e.what()); } return NULL; @@@@ -527,7 +534,7 @@@@ const gchar* gexiv2_metadata_get_xmp_tag try { return Exiv2::TypeInfo::typeName(Exiv2::XmpProperties::propertyType(Exiv2::XmpKey(tag))); } catch (Exiv2::Error& e) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e.code()), e.what()); } return NULL; @@@@ -569,7 +576,7 @@@@ gboolean gexiv2_metadata_xmp_tag_support return TRUE; } } catch (Exiv2::Error& e) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e.code()), e.what()); } return FALSE; } @@@@ -597,7 +604,7 @@@@ GBytes* gexiv2_metadata_get_xmp_tag_raw } } } catch (Exiv2::Error& e) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e.code()), e.what()); } return nullptr; @@@@ -622,15 +629,21 @@@@ gboolean gexiv2_metadata_try_register_xm g_return_val_if_fail(prefix != nullptr, FALSE); g_return_val_if_fail(error == nullptr || *error == nullptr, FALSE); +#if defined(EXIV2_HAS_ANY_ERROR) + using Exiv2ErrorProxy = Exiv2::AnyError; +#else + using Exiv2ErrorProxy = Exiv2::Error; +#endif + try { Exiv2::XmpProperties::ns(prefix); - } catch (Exiv2::AnyError& e1) { + } catch (Exiv2ErrorProxy& e1) { // No namespace, OK to register try { Exiv2::XmpProperties::registerNs(name, prefix); return TRUE; - } catch (Exiv2::AnyError& e2) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e2.code(), e2.what()); + } catch (Exiv2ErrorProxy& e2) { + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e2.code()), e2.what()); } } @@@@ -670,7 +683,7 @@@@ gboolean gexiv2_metadata_try_unregister_ } } } catch (Exiv2::Error& e2) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e2.code(), e2.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e2.code()), e2.what()); } return FALSE; } @@@@ -692,7 +705,7 @@@@ void gexiv2_metadata_try_unregister_all_ try { Exiv2::XmpProperties::unregisterNs(); } catch (Exiv2::Error& e) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e.code()), e.what()); } } @@@@ -739,7 +752,7 @@@@ char* gexiv2_metadata_try_get_xmp_namesp result = g_strdup(info.c_str()); } catch (Exiv2::Error& e) { - g_set_error_literal(error, g_quark_from_string("GExiv2"), e.code(), e.what()); + g_set_error_literal(error, g_quark_from_string("GExiv2"), static_cast(e.code()), e.what()); } g_clear_pointer(&list, g_strfreev); @ 1.1 log @gexiv2: fix build with exiv2 0.28.0 using upstream patches. @ text @d1 1 a1 1 $NetBSD$ @