Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package exempi for openSUSE:Factory checked 
in at 2022-12-07 17:34:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/exempi (Old)
 and      /work/SRC/openSUSE:Factory/.exempi.new.1835 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "exempi"

Wed Dec  7 17:34:23 2022 rev:38 rq:1040590 version:2.6.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/exempi/exempi.changes    2022-05-12 
22:57:41.532581861 +0200
+++ /work/SRC/openSUSE:Factory/.exempi.new.1835/exempi.changes  2022-12-07 
17:35:25.260688942 +0100
@@ -1,0 +2,15 @@
+Sun Dec  4 21:11:10 UTC 2022 - Dirk Müller <dmuel...@suse.com>
+
+- update to 2.6.2:
+  - Update XMPCore to Adobe XMP SDK v2022.06
+    - Build system fixes that don't matter.
+  - Fix a typo in an ID3 genre string
+  - Build XMP_SDK with some fatal warnings:
+    - -Werror=missing-field-initializers
+    - -Werror=misleading-indentation
+    - -Werror=class-memaccess
+  - Remove (deprecated) boost_test_minimal
+  - Remove old .sym file (Daniel Kolesa)
+  - Added --enable-samples (default = yes) (Fabrice Fontaine)
+
+-------------------------------------------------------------------

Old:
----
  exempi-2.6.1.tar.bz2
  exempi-2.6.1.tar.bz2.asc

New:
----
  exempi-2.6.2.tar.bz2
  exempi-2.6.2.tar.bz2.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ exempi.spec ++++++
--- /var/tmp/diff_new_pack.agStGn/_old  2022-12-07 17:35:27.184699476 +0100
+++ /var/tmp/diff_new_pack.agStGn/_new  2022-12-07 17:35:27.192699520 +0100
@@ -18,7 +18,7 @@
 
 %define sonum 8
 Name:           exempi
-Version:        2.6.1
+Version:        2.6.2
 Release:        0
 Summary:        XMP support library
 License:        BSD-3-Clause
@@ -29,10 +29,10 @@
 Source2:        %{name}.keyring
 Source3:        baselibs.conf
 BuildRequires:  gcc-c++
+BuildRequires:  libboost_test-devel
 BuildRequires:  libexpat-devel
 BuildRequires:  pkgconfig
 BuildRequires:  zlib-devel
-BuildRequires:  libboost_test-devel
 
 %description
 Exempi is a library for XMP parsing and I/O. XMP is a kind of

++++++ exempi-2.6.1.tar.bz2 -> exempi-2.6.2.tar.bz2 ++++++
++++ 14731 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/exempi-2.6.1/Makefile.am new/exempi-2.6.2/Makefile.am
--- old/exempi-2.6.1/Makefile.am        2022-02-13 16:00:19.000000000 +0100
+++ new/exempi-2.6.2/Makefile.am        2022-06-25 23:47:32.000000000 +0200
@@ -36,8 +36,12 @@
 
 ACLOCAL_AMFLAGS = -I m4
 
-SUBDIRS = third-party source XMPCore XMPFiles samples exempi
+SUBDIRS = third-party source XMPCore XMPFiles exempi
 DIST_SUBDIRS = build third-party source XMPCore XMPFiles XMPFilesPlugins 
samples exempi public
 
+if ENABLE_SAMPLES
+SUBDIRS += samples
+endif
+
 EXTRA_DIST = autogen.sh ORIGINSTORY.md CODE_OF_CONDUCT.md CONTRIBUTING.md \
        README-Adobe.md README.md
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/exempi-2.6.1/NEWS new/exempi-2.6.2/NEWS
--- old/exempi-2.6.1/NEWS       2022-02-13 16:01:39.000000000 +0100
+++ new/exempi-2.6.2/NEWS       2022-06-25 23:45:03.000000000 +0200
@@ -1,4 +1,22 @@
-2.6.1 -
+2.6.2 - 2022/06/25
+
+- Update XMPCore to Adobe XMP SDK v2022.06
+  - Build system fixes that don't matter.
+- Fix a typo in an ID3 genre string
+  https://gitlab.freedesktop.org/libopenraw/exempi/-/merge_requests/4
+- Build XMP_SDK with some fatal warnings:
+  - -Werror=missing-field-initializers
+  - -Werror=misleading-indentation
+  - -Werror=class-memaccess
+- Remove (deprecated) boost_test_minimal
+  https://gitlab.freedesktop.org/libopenraw/exempi/-/issues/24
+- CI: require "bionic" on Travis CI.
+- Remove old .sym file (Daniel Kolesa)
+  https://gitlab.freedesktop.org/libopenraw/exempi/-/issues/17
+- Added --enable-samples (default = yes) (Fabrice Fontaine)
+  https://gitlab.freedesktop.org/libopenraw/exempi/-/merge_requests/6
+
+2.6.1 - 2022/02/13
 
 - Bug #26: Addressed missing README.md and others from tarball.
   https://gitlab.freedesktop.org/libopenraw/exempi/-/issues/26
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/exempi-2.6.1/XMPCore/source/ParseRDF.cpp 
new/exempi-2.6.2/XMPCore/source/ParseRDF.cpp
--- old/exempi-2.6.1/XMPCore/source/ParseRDF.cpp        2021-11-18 
04:53:53.000000000 +0100
+++ new/exempi-2.6.2/XMPCore/source/ParseRDF.cpp        2022-06-25 
23:43:18.000000000 +0200
@@ -386,7 +386,7 @@
        if ( name.size() <= 5 ) return false;
        if ( strncmp ( name.c_str(), "rdf:_", 5 ) != 0 ) return false;
        for ( size_t i = 5; i < name.size(); ++i ) {
-               if ( (name[i] < '0') | (name[i] > '9') ) return false;
+               if ( (name[i] < '0') || (name[i] > '9') ) return false;
        }
        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/exempi-2.6.1/XMPCore/source/XMPUtils.cpp 
new/exempi-2.6.2/XMPCore/source/XMPUtils.cpp
--- old/exempi-2.6.1/XMPCore/source/XMPUtils.cpp        2021-11-18 
04:53:53.000000000 +0100
+++ new/exempi-2.6.2/XMPCore/source/XMPUtils.cpp        2022-06-25 
23:43:18.000000000 +0200
@@ -2479,7 +2479,9 @@
        XMP_Int32 temp;
 
        XMP_Assert ( sizeof(*binValue) == sizeof(XMP_DateTime) );
-       (void) memset ( binValue, 0, sizeof(*binValue) );       // AUDIT: Safe, 
using sizeof destination.
+       // (Exempi) UNSAFE. You don't memset a C++ object.
+       *binValue = XMP_DateTime();
+       //(void) memset ( binValue, 0, sizeof(*binValue) );     // AUDIT: Safe, 
using sizeof destination.
 
        size_t strSize = strlen ( strValue );
        bool timeOnly = ( (strValue[0] == 'T') ||
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/exempi-2.6.1/XMPFiles/source/FileHandlers/MPEG4_Handler.cpp 
new/exempi-2.6.2/XMPFiles/source/FileHandlers/MPEG4_Handler.cpp
--- old/exempi-2.6.1/XMPFiles/source/FileHandlers/MPEG4_Handler.cpp     
2021-11-18 04:53:53.000000000 +0100
+++ new/exempi-2.6.2/XMPFiles/source/FileHandlers/MPEG4_Handler.cpp     
2022-06-25 23:43:18.000000000 +0200
@@ -350,7 +350,9 @@
 
 static void SecondsToXMPDate ( XMP_Uns64 isoSeconds, XMP_DateTime * xmpDate )
 {
-       memset ( xmpDate, 0, sizeof(XMP_DateTime) );    // AUDIT: Using 
sizeof(XMP_DateTime) is safe.
+       // (Exempi) UNSAFE. You don't memset a C++ object.
+       *xmpDate = XMP_DateTime();
+       // memset ( xmpDate, 0, sizeof(XMP_DateTime) ); // AUDIT: Using 
sizeof(XMP_DateTime) is safe.
 
        XMP_Int32 days = (XMP_Int32) (isoSeconds / 86400);
        isoSeconds -= ((XMP_Uns64)days * 86400);
@@ -1886,8 +1888,10 @@
        ISOMedia::BoxInfo prevBox, lastBox;
        XMP_Uns8 buffer [16];   // Enough to create an extended header.
 
-       memset ( &prevBox, 0, sizeof(prevBox) );        // AUDIT: Using 
sizeof(prevBox) is safe.
-       memset ( &lastBox, 0, sizeof(lastBox) );        // AUDIT: Using 
sizeof(lastBox) is safe.
+       // (Exempi) UNSAFE. You don't memset a C++ object.
+       // (Exempi) Here the constructor is already called.
+       //memset ( &prevBox, 0, sizeof(prevBox) );      // AUDIT: Using 
sizeof(prevBox) is safe.
+       //memset ( &lastBox, 0, sizeof(lastBox) );      // AUDIT: Using 
sizeof(lastBox) is safe.
        prevPos = lastPos = nextPos = 0;
        while ( nextPos != fileSize ) {
                if ( checkAbort && abortProc(abortArg) ) {
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/exempi-2.6.1/XMPFiles/source/FileHandlers/P2_Handler.cpp 
new/exempi-2.6.2/XMPFiles/source/FileHandlers/P2_Handler.cpp
--- old/exempi-2.6.1/XMPFiles/source/FileHandlers/P2_Handler.cpp        
2021-11-18 04:53:53.000000000 +0100
+++ new/exempi-2.6.2/XMPFiles/source/FileHandlers/P2_Handler.cpp        
2022-06-25 23:43:18.000000000 +0200
@@ -158,7 +158,7 @@
                if ( gpName != "CONTENTS" ) return false;
                if ( ! CheckContentFolderName ( parentName ) ) return false;
 
-               if ( (parentName == "AUDIO") | (parentName == "VOICE") ) {
+               if ( (parentName == "AUDIO") || (parentName == "VOICE") ) {
                        if ( clipName.size() < 3 ) return false;
                        clipName.erase ( clipName.size() - 2 );
                }
@@ -232,7 +232,7 @@
                XIO::SplitLeafName ( &pseudoPath, &parentName );        // 
Remove the 2 intermediate folder levels.
                XIO::SplitLeafName ( &pseudoPath, &ignored );
 
-               if ( (parentName == "AUDIO") | (parentName == "VOICE") ) {
+               if ( (parentName == "AUDIO") || (parentName == "VOICE") ) {
                        if ( clipName.size() >= 3 ) clipName.erase ( 
clipName.size() - 2 );
                }
                
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/exempi-2.6.1/XMPFiles/source/FileHandlers/Scanner_Handler.cpp 
new/exempi-2.6.2/XMPFiles/source/FileHandlers/Scanner_Handler.cpp
--- old/exempi-2.6.1/XMPFiles/source/FileHandlers/Scanner_Handler.cpp   
2021-11-18 04:53:53.000000000 +0100
+++ new/exempi-2.6.2/XMPFiles/source/FileHandlers/Scanner_Handler.cpp   
2022-06-25 23:43:18.000000000 +0200
@@ -164,7 +164,8 @@
                        if ( ! beLenient ) return -1;
                        if ( main == -1 ) {
                                main = pkt;
-                               memset ( &latestTime, 0, sizeof(latestTime) );
+                               // (Exempi) Unsafe, constructor is already 
called
+                               //memset ( &latestTime, 0, sizeof(latestTime) );
                        }
 
                } else if ( main == -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/exempi-2.6.1/XMPFiles/source/FormatSupport/AIFF/AIFFReconcile.cpp 
new/exempi-2.6.2/XMPFiles/source/FormatSupport/AIFF/AIFFReconcile.cpp
--- old/exempi-2.6.1/XMPFiles/source/FormatSupport/AIFF/AIFFReconcile.cpp       
2021-11-18 04:53:53.000000000 +0100
+++ new/exempi-2.6.2/XMPFiles/source/FormatSupport/AIFF/AIFFReconcile.cpp       
2022-06-25 23:43:18.000000000 +0200
@@ -27,7 +27,7 @@
        { kXMP_NS_DC,   "creator",                      AIFFMetadata::kAuthor,  
        kNativeType_StrUTF8,    kXMPType_Array,         true,   false,          
kExport_Always },       // dc:creator <-> FORM:AIFF/AUTH
        { kXMP_NS_DC,   "rights",                       
AIFFMetadata::kCopyright,       kNativeType_StrUTF8,    kXMPType_Localized,     
true,   false,          kExport_Always },       // dc:rights <-> FORM:AIFF/(c)
        { kXMP_NS_DM,   "logComment",           AIFFMetadata::kAnnotation,      
kNativeType_StrUTF8,    kXMPType_Simple,        true,   false,          
kExport_Always },       // xmpDM:logComment <-> FORM:AIFF/ANNO
-       { NULL }
+       { NULL, nullptr, 0, kNativeType_Str, kXMPType_Simple, false, false, 
kExport_Never }
 };
 
 XMP_Bool AIFFReconcile::importToXMP( SXMPMeta& outXMP, const MetadataSet& 
inMetaData )
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/exempi-2.6.1/XMPFiles/source/FormatSupport/ASF_Support.cpp 
new/exempi-2.6.2/XMPFiles/source/FormatSupport/ASF_Support.cpp
--- old/exempi-2.6.1/XMPFiles/source/FormatSupport/ASF_Support.cpp      
2021-11-18 04:53:53.000000000 +0100
+++ new/exempi-2.6.2/XMPFiles/source/FormatSupport/ASF_Support.cpp      
2022-06-25 23:43:18.000000000 +0200
@@ -1396,7 +1396,8 @@
        // A little more simple code converts this to an XMP date string:
 
        XMP_DateTime date;
-       memset ( &date, 0, sizeof ( date ) );
+       // (Exempi) Unsafe to memset, constructor called
+       // memset ( &date, 0, sizeof ( date ) );
 
        date.year = 1601;       // The MS date origin.
        date.month = 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/exempi-2.6.1/XMPFiles/source/FormatSupport/ID3_Support.cpp 
new/exempi-2.6.2/XMPFiles/source/FormatSupport/ID3_Support.cpp
--- old/exempi-2.6.1/XMPFiles/source/FormatSupport/ID3_Support.cpp      
2021-11-18 04:53:53.000000000 +0100
+++ new/exempi-2.6.2/XMPFiles/source/FormatSupport/ID3_Support.cpp      
2022-06-25 23:43:18.000000000 +0200
@@ -126,7 +126,7 @@
        {  "64", "Native American" },
        {  "65", "Cabaret" },
        {  "66", "New Wave" },
-       {  "67", "Psychadelic" },
+       {  "67", "Psychedelic" },
        {  "68", "Rave" },
        {  "69", "Showtunes" },
        {  "70", "Trailer" },
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/exempi-2.6.1/XMPFiles/source/FormatSupport/ISOBaseMedia_Support.cpp 
new/exempi-2.6.2/XMPFiles/source/FormatSupport/ISOBaseMedia_Support.cpp
--- old/exempi-2.6.1/XMPFiles/source/FormatSupport/ISOBaseMedia_Support.cpp     
2021-11-18 04:53:54.000000000 +0100
+++ new/exempi-2.6.2/XMPFiles/source/FormatSupport/ISOBaseMedia_Support.cpp     
2022-06-25 23:43:18.000000000 +0200
@@ -251,7 +251,11 @@
 {
        XMP_Assert(parentRef != 0);
        const BoxNode & parent = *((BoxNode*)parentRef);
-       if (info != 0) memset(info, 0, sizeof(BoxInfo));
+       if (info != 0) {
+               // (Exempi) Unsafe to memset()
+               *info = BoxInfo();
+               //memset(info, 0, sizeof(BoxInfo));
+       }
 
        if (childIndex >= parent.children.size()) return 0;
 
@@ -269,7 +273,11 @@
 {
        XMP_Assert(parentRef != 0);
        const BoxNode & parent = *((BoxNode*)parentRef);
-       if (info != 0) memset(info, 0, sizeof(BoxInfo));
+       if (info != 0) {
+               // (Exempi) Unsafe to memset()
+               *info = BoxInfo();
+               //memset(info, 0, sizeof(BoxInfo));
+       }
        if (parent.children.empty()) return 0;
 
        size_t i = 0, limit = parent.children.size();
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/exempi-2.6.1/XMPFiles/source/FormatSupport/META_Support.cpp 
new/exempi-2.6.2/XMPFiles/source/FormatSupport/META_Support.cpp
--- old/exempi-2.6.1/XMPFiles/source/FormatSupport/META_Support.cpp     
2021-11-18 04:53:54.000000000 +0100
+++ new/exempi-2.6.2/XMPFiles/source/FormatSupport/META_Support.cpp     
2022-06-25 23:43:18.000000000 +0200
@@ -114,7 +114,11 @@
 {
        size_t pathLen = strlen(boxPath);
        XMP_Assert((pathLen >= 4) && XMP_LitNMatch(boxPath, "meta", 4));
-       if (info != 0) memset(info, 0, sizeof(BoxInfo));
+       if (info != 0) {
+               // (Exempi) Unsafe to memset
+               *info = BoxInfo();
+               //memset(info, 0, sizeof(BoxInfo));
+       }
 
        const char * pathPtr = boxPath + 5;     // Skip the "meta/" portion.
        const char * pathEnd = boxPath + pathLen;
@@ -150,9 +154,9 @@
        else
                subtreeSize = 8;
 
-       if (node.boxType == ISOMedia::k_uuid)
+       if (node.boxType == ISOMedia::k_uuid) {
                subtreeSize += 16;                              // id of uuid 
is 16 bytes long
-       
+       }
 
                for (size_t i = 0, limit = node.children.size(); i < limit; 
++i) {
 
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/exempi-2.6.1/XMPFiles/source/FormatSupport/MOOV_Support.cpp 
new/exempi-2.6.2/XMPFiles/source/FormatSupport/MOOV_Support.cpp
--- old/exempi-2.6.1/XMPFiles/source/FormatSupport/MOOV_Support.cpp     
2021-11-18 04:53:54.000000000 +0100
+++ new/exempi-2.6.2/XMPFiles/source/FormatSupport/MOOV_Support.cpp     
2022-06-25 23:43:18.000000000 +0200
@@ -44,7 +44,11 @@
 {
        size_t pathLen = strlen(boxPath);
        XMP_Assert ( (pathLen >= 4) && XMP_LitNMatch ( boxPath, "moov", 4 ) );
-       if ( info != 0 ) memset ( info, 0, sizeof(BoxInfo) );
+       if ( info != 0 ) {
+               // (Exempi) Unsafe to memset
+               *info = BoxInfo();
+               //memset ( info, 0, sizeof(BoxInfo) );
+       }
        
        const char * pathPtr = boxPath + 5;     // Skip the "moov/" portion.
        const char * pathEnd = boxPath + pathLen;
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/exempi-2.6.1/XMPFiles/source/FormatSupport/RIFF.hpp 
new/exempi-2.6.2/XMPFiles/source/FormatSupport/RIFF.hpp
--- old/exempi-2.6.1/XMPFiles/source/FormatSupport/RIFF.hpp     2021-11-18 
04:53:54.000000000 +0100
+++ new/exempi-2.6.2/XMPFiles/source/FormatSupport/RIFF.hpp     2022-06-25 
23:43:18.000000000 +0200
@@ -160,7 +160,7 @@
                //{ kPropChunkISRC, to be decided,      "" ,            
prop_SIMPLE },
                //{ kPropChunkITCH, to be decided,      "" ,            
prop_SIMPLE },
 
-               { 0, 0, 0 }     // sentinel
+               { 0, 0, 0, prop_SIMPLE }        // sentinel
        };
 
        static Mapping listTdatProps[] = {
@@ -169,7 +169,7 @@
                { kPropChunk_tc_A, kXMP_NS_DM,  "altTimecode"   , 
prop_TIMEVALUE },   // special: must end up in dm:timeValue child
                { kPropChunk_rn_O, kXMP_NS_DM,  "tapeName"              , 
prop_SIMPLE  },
                { kPropChunk_rn_A, kXMP_NS_DM,  "altTapeName"   , prop_SIMPLE  
},
-               { 0, 0, 0 }     // sentinel
+               { 0, 0, 0, prop_SIMPLE }        // sentinel
        };
 
        // 
=================================================================================================
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/exempi-2.6.1/XMPFiles/source/FormatSupport/ReconcileIPTC.cpp 
new/exempi-2.6.2/XMPFiles/source/FormatSupport/ReconcileIPTC.cpp
--- old/exempi-2.6.1/XMPFiles/source/FormatSupport/ReconcileIPTC.cpp    
2021-11-18 04:53:54.000000000 +0100
+++ new/exempi-2.6.2/XMPFiles/source/FormatSupport/ReconcileIPTC.cpp    
2022-06-25 23:43:18.000000000 +0200
@@ -197,7 +197,8 @@
 
        size_t chPos, digits;
        XMP_DateTime xmpDate;
-       memset ( &xmpDate, 0, sizeof(xmpDate) );
+       // (Exempi) unsafe. Constructor is already called
+       //memset ( &xmpDate, 0, sizeof(xmpDate) );
 
        chPos = 0;
        for ( digits = 0; digits < 4; ++digits, ++chPos ) {
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/exempi-2.6.1/XMPFiles/source/FormatSupport/ReconcileTIFF.cpp 
new/exempi-2.6.2/XMPFiles/source/FormatSupport/ReconcileTIFF.cpp
--- old/exempi-2.6.1/XMPFiles/source/FormatSupport/ReconcileTIFF.cpp    
2021-11-18 04:53:54.000000000 +0100
+++ new/exempi-2.6.2/XMPFiles/source/FormatSupport/ReconcileTIFF.cpp    
2022-06-25 23:43:18.000000000 +0200
@@ -98,7 +98,7 @@
        { /*   305 */ kTIFF_Software,                  kTIFF_ASCIIType,       
kAnyCount, kExport_Always,     kXMP_NS_TIFF,  "Software" },       // Has alias 
to xmp:CreatorTool.
        { /*   315 */ kTIFF_Artist,                    kTIFF_ASCIIType,       
kAnyCount, kExport_Always,     "", "" },  // ! Has a special mapping.
        { /* 33432 */ kTIFF_Copyright,                 kTIFF_ASCIIType,       
kAnyCount, kExport_Always,     "", "" },  // ! Has a special mapping.
-       { 0xFFFF, 0, 0, 0 }     // ! Must end with sentinel.
+       { 0xFFFF, 0, 0, 0, nullptr, nullptr }   // ! Must end with sentinel.
 };
 
 static const TIFF_MappingToXMP sExifIFDMappings[] = {
@@ -175,7 +175,7 @@
        { /* 41995 */ kTIFF_DeviceSettingDescription,  kTIFF_UndefinedType,   
kAnyCount, kExport_InjectOnly, "", "" },  // ! Has a special mapping.
        { /* 41996 */ kTIFF_SubjectDistanceRange,      kTIFF_ShortType,       
1,         kExport_InjectOnly, kXMP_NS_EXIF,  "SubjectDistanceRange" },
 
-       { 0xFFFF, 0, 0, 0 }     // ! Must end with sentinel.
+       { 0xFFFF, 0, 0, 0, 0, nullptr } // ! Must end with sentinel.
 };
 
 static const TIFF_MappingToXMP sGPSInfoIFDMappings[] = {
@@ -206,7 +206,7 @@
        { /*    28 */ kTIFF_GPSAreaInformation,        kTIFF_UndefinedType,   
kAnyCount, kExport_InjectOnly, "", "" },  // ! Has a special mapping.
        { /*    30 */ kTIFF_GPSDifferential,           kTIFF_ShortType,       
1,         kExport_InjectOnly, kXMP_NS_EXIF,  "GPSDifferential" },
        { /*    31 */ kTIFF_GPSHPositioningError,      kTIFF_RationalType,    
1,         kExport_InjectOnly, kXMP_NS_ExifEX, "GPSHPositioningError" },
-       { 0xFFFF, 0, 0, 0 }     // ! Must end with sentinel.
+       { 0xFFFF, 0, 0, 0, 0, nullptr } // ! Must end with sentinel.
 };
 
 // 
=================================================================================================
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/exempi-2.6.1/XMPFiles/source/FormatSupport/WAVE/WAVEBehavior.cpp 
new/exempi-2.6.2/XMPFiles/source/FormatSupport/WAVE/WAVEBehavior.cpp
--- old/exempi-2.6.1/XMPFiles/source/FormatSupport/WAVE/WAVEBehavior.cpp        
2022-02-13 00:39:28.000000000 +0100
+++ new/exempi-2.6.2/XMPFiles/source/FormatSupport/WAVE/WAVEBehavior.cpp        
2022-06-25 23:43:18.000000000 +0200
@@ -599,13 +599,16 @@
                const XMP_Uns8* data;
                XMP_Uns64 size = ds64Chunk.getData(&data);
 
-               memset( &ds64, 0, kMinimumDS64ChunkSize);
+               // (Exempi) Unsafe for memset
+               ds64 = WAVEBehavior::DS64();
+               // memset( &ds64, 0, kMinimumDS64ChunkSize);
 
                //
                // copy fix input data into RF64 block (except chunk size table)
                // Safe as fixed size matches size of struct that is #pragma 
packed(1)
                //
-               memcpy( &ds64, data, kMinimumDS64ChunkSize );
+               ds64.From(data, kMinimumDS64ChunkSize);
+               // memcpy( &ds64, data, kMinimumDS64ChunkSize );
 
                // If there is more data but the table length is <= 0 then this 
is not a valid ds64 chunk
                if (size > kMinimumDS64ChunkSize && ds64.tableLength > 0 && 
((size - kMinimumDS64ChunkSize) >= (ds64.tableLength * sizeof(ChunkSize64))))
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/exempi-2.6.1/XMPFiles/source/FormatSupport/WAVE/WAVEBehavior.h 
new/exempi-2.6.2/XMPFiles/source/FormatSupport/WAVE/WAVEBehavior.h
--- old/exempi-2.6.1/XMPFiles/source/FormatSupport/WAVE/WAVEBehavior.h  
2021-11-18 04:53:54.000000000 +0100
+++ new/exempi-2.6.2/XMPFiles/source/FormatSupport/WAVE/WAVEBehavior.h  
2022-06-25 23:43:18.000000000 +0200
@@ -44,6 +44,17 @@
                XMP_Uns32 id;
                // Ctor
                ChunkSize64(): size(0), id(0) {}
+               // (Exempi) we need a from buffer
+               constexpr static size_t dataSize() {
+                       return sizeof(size) + sizeof(id);
+               }
+               // (Exempi) This code is not endian neutreal
+               size_t From(const XMP_Uns8* data) {
+                       size = *(const XMP_Uns64*)data;
+                       data += sizeof(size);
+                       id = *(const XMP_Uns32*)data;
+                       return dataSize();
+               }
        };
 
        struct DS64
@@ -58,6 +69,47 @@
 
                // ctor
                DS64(): riffSize(0), dataSize(0), sampleCount(0), 
tableLength(0), trailingBytes(0) {}
+               // (Exempi) we need a from buffer
+               constexpr static size_t preludeSize() {
+                       return sizeof(riffSize) + sizeof(dataSize) + 
sizeof(sampleCount)
+                               + sizeof(tableLength);
+               }
+               // (Exempi) This code is not endian neutreal
+               size_t From(const XMP_Uns8* data, size_t s) {
+                       size_t copied = 0;
+                       if (s < preludeSize()) {
+                               return copied;
+                       }
+                       riffSize = *(const XMP_Uns64*)data;
+                       data += sizeof(riffSize);
+                       dataSize = *(const XMP_Uns64*)data;
+                       data += sizeof(dataSize);
+                       sampleCount = *(const XMP_Uns64*)data;
+                       data += sizeof(sampleCount);
+                       tableLength = *(const XMP_Uns32*)data;
+                       data += sizeof(tableLength);
+                       copied += preludeSize();
+
+                       if (s - copied >= sizeof(trailingBytes)) {
+                                trailingBytes = *(const XMP_Uns32*)data;
+                                data += sizeof(trailingBytes);
+                                copied += sizeof(trailingBytes);
+
+                                size_t idx = 0;
+                                table.resize((s - copied) / 
ChunkSize64::dataSize());
+                                while (s - copied) {
+                                        if (s - copied >= 
ChunkSize64::dataSize()) {
+                                                size_t b = 
table[idx].From(data);
+                                                data += b;
+                                                copied += b;
+                                        }
+                                        else {
+                                                break;
+                                        }
+                                }
+                       }
+                       return copied;
+               }
        };
 #if SUNOS_SPARC || SUNOS_X86
 #pragma pack (  )
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/exempi-2.6.1/XMPFiles/source/FormatSupport/WAVE/WAVEReconcile.cpp 
new/exempi-2.6.2/XMPFiles/source/FormatSupport/WAVE/WAVEReconcile.cpp
--- old/exempi-2.6.1/XMPFiles/source/FormatSupport/WAVE/WAVEReconcile.cpp       
2021-11-18 04:53:54.000000000 +0100
+++ new/exempi-2.6.2/XMPFiles/source/FormatSupport/WAVE/WAVEReconcile.cpp       
2022-06-25 23:43:18.000000000 +0200
@@ -57,7 +57,7 @@
        { kXMP_NS_BWF,  kBWF_version,                           
BEXTMetadata::kVersion,                         kNativeType_Uns16,              
        kXMPType_Simple,        false,  false,          kExport_Never },        
// bext:version <-> BEXT:version
        // special case: bext:umid <-> BEXT:UMID
        { kXMP_NS_BWF,  kBWF_codingHistory,                     
BEXTMetadata::kCodingHistory,           kNativeType_StrLocal,           
kXMPType_Simple,        false,  false,          kExport_Always },       // 
bext:codingHistory <-> BEXT:codingHistory
-       { NULL }
+       { NULL, nullptr, 0, kNativeType_Str, kXMPType_Simple,   false,  false, 
kExport_Never }
 };
 
 static const char * kDM_shotNumber = "shotNumber";
@@ -102,7 +102,7 @@
        // special case for startTimeCode // xmpDM:startTimecode <-> 
iXML:TIMECODE_RATE, iXML:TIMECODE_FLAG and bext:timeReference.
        { kXMP_NS_BWF,  kBWF_timeStampSampleRate,       
iXMLMetadata::kTimeStampSampleRate,             kNativeType_Uns64,              
        kXMPType_Simple,        false,  false,          kExport_NoDelete },     
// bext::timeStampSampleRate <-> iXML
        // special case for TRACK_LIST // ixml:Track_List <-> ixml:trackList
-       { NULL }
+       { NULL, nullptr, 0, kNativeType_Str, kXMPType_Simple, false, false, 
kExport_Never }
 };
 
 static const MetadataPropertyInfo kINFOProperties[] =
@@ -129,7 +129,7 @@
        { kXMP_NS_RIFFINFO,     "source",                       
INFOMetadata::kSource,                  kNativeType_StrUTF8,            
kXMPType_Simple,        true,   false,          kExport_Always },               
// riffinfo:source  <-> ISRC
        { kXMP_NS_RIFFINFO,     "technician",           
INFOMetadata::kTechnican,               kNativeType_StrUTF8,            
kXMPType_Simple,        true,   false,          kExport_Always },               
// riffinfo:technician <-> ITCH
 
-       { NULL }
+       { NULL, nullptr, 0, kNativeType_Str, kXMPType_Simple, false, false, 
kExport_Never }
 };
 
 static const MetadataPropertyInfo kDISPProperties[] =
@@ -137,7 +137,7 @@
 //       XMP NS                XMP Property Name               Native Metadata 
Identifier              Datatype                                        
Datatype                        Delete  Priority        ExportPolicy
        { kXMP_NS_DC,   "title",                                
DISPMetadata::kTitle,                   kNativeType_StrUTF8,            
kXMPType_Localized,     false,  true,           kExport_Always },               
// dc:title <-> DISP
        // Special case: DISP will overwrite LIST/INFO:INAM in dc:title if 
existing
-       { NULL }
+       { NULL, nullptr, 0, kNativeType_Str, kXMPType_Simple, false, false, 
kExport_Never }
 };
 
 static const MetadataPropertyInfo kCartProperties[] =
@@ -162,7 +162,7 @@
        { kXMP_NS_AEScart,      "TagText",                              
CartMetadata::kTagText,                         kNativeType_StrLocal,           
kXMPType_Simple,        true,   false,          kExport_Always },
        { kXMP_NS_AEScart,      "LevelReference",               
CartMetadata::kLevelReference,          kNativeType_Int32,                      
kXMPType_Simple,        true,   false,          kExport_Always },
        // Special case Post Timer
-       { NULL }
+       { NULL, nullptr, 0, kNativeType_Str, kXMPType_Simple, false, false, 
kExport_Never }
 };
 
 // cr8r is not yet required for WAVE
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/exempi-2.6.1/build/GNUmakefile.in new/exempi-2.6.2/build/GNUmakefile.in
--- old/exempi-2.6.1/build/GNUmakefile.in       2022-02-13 06:34:25.000000000 
+0100
+++ new/exempi-2.6.2/build/GNUmakefile.in       2022-06-25 23:45:26.000000000 
+0200
@@ -1,7 +1,7 @@
-# GNUmakefile.in generated by automake 1.16.2 from GNUmakefile.am.
+# GNUmakefile.in generated by automake 1.16.5 from GNUmakefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -131,7 +131,6 @@
        $(top_srcdir)/m4/ax_check_compile_flag.m4 \
        $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
        $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \
-       $(top_srcdir)/m4/ax_ld_check_flag.m4 \
        $(top_srcdir)/m4/ax_require_defined.m4 \
        $(top_srcdir)/m4/ax_tls.m4 $(top_srcdir)/m4/boost.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
@@ -181,8 +180,6 @@
   unique=`for i in $$list; do \
     if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
   done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
 am__DIST_COMMON = $(srcdir)/GNUmakefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -202,8 +199,9 @@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
-CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
@@ -219,6 +217,7 @@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
+ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 EXEMPI_AGE = @EXEMPI_AGE@
 EXEMPI_CURRENT = @EXEMPI_CURRENT@
@@ -417,7 +416,6 @@
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
 distdir: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) distdir-am
 
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/exempi-2.6.1/configure.ac new/exempi-2.6.2/configure.ac
--- old/exempi-2.6.1/configure.ac       2022-02-13 06:34:02.000000000 +0100
+++ new/exempi-2.6.2/configure.ac       2022-06-25 23:43:18.000000000 +0200
@@ -8,7 +8,7 @@
 dnl the same distribution terms as the rest of that program.
 
 AC_PREREQ(2.50)
-AC_INIT(exempi,2.6.1)
+AC_INIT(exempi,2.6.2)
 AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects])
 AM_MAINTAINER_MODE
 m4_ifndef([AM_SILENT_RULES], [m4_define([AM_SILENT_RULES],[])])
@@ -69,7 +69,8 @@
 dnl 2.5.2 is the revision 8.0.2
 dnl 2.6.0 is the revision 9.1.0
 dnl 2.6.1 is the revision 9.1.1
-AC_SUBST([EXEMPI_REVISION], [1])
+dnl 2.6.2 is the revision 9.1.2
+AC_SUBST([EXEMPI_REVISION], [2])
 AC_SUBST([EXEMPI_AGE],      [1])
 AC_SUBST([EXEMPI_CURRENT],  [9])
 AC_SUBST([EXEMPI_CURRENT_MIN],
@@ -157,20 +158,13 @@
 fi
 dnl end TLS
 
-dnl check LD Flags
-dnl we need a valid symfile. Make one.
-cat >> _ac_foo.sym << _ACEOF
-foo
-_ACEOF
-AX_LD_CHECK_FLAG([-Wl,--retain-symbols-file=_ac_foo.sym],[],[],[
-dnl success
-cv_support_symfile=yes
-],[
-dnl fail
-cv_support_symfile=no
-])
-rm -f _ac_foo.sym
-AM_CONDITIONAL(HAVE_SYMBOLS_FILE, test x$cv_support_symfile = "xyes")
+
+AC_ARG_ENABLE(samples,
+              AC_HELP_STRING([--enable-samples=yes|no],
+                            [enable the samples. (default is yes)]),
+              enable_samples=$enableval,
+              enable_samples=yes)
+AM_CONDITIONAL([ENABLE_SAMPLES], [test x"$enable_samples" = xyes])
 
 
 AC_ARG_ENABLE(unittest,
@@ -179,7 +173,7 @@
               ENABLE_UNITTEST=$enableval,
               ENABLE_UNITTEST=yes)
 if test x$ENABLE_UNITTEST = xyes ; then
-   BOOST_REQUIRE([1.48.0])
+   BOOST_REQUIRE([1.60.0])
    BOOST_TEST([mt-s])
 else
    ENABLE_UNITTEST=no
@@ -239,13 +233,17 @@
    -Wexceptions \
    -Wheader-guard \
    -Wformat \
+   -Werror=bitwise-instead-of-logical \
+   -Werror=class-memaccess \
 dnl   -Wformat-nonliteral \
    -Wformat-security \
    -Wlogical-not-parentheses \
-   -Wmisleading-indentation \
+   -Werror=misleading-indentation \
    -Wmissing-noreturn \
+   -Werror=missing-field-initializers \
    -Woverloaded-virtual \
    -Wpointer-arith \
+   -Wgnu-array-member-paren-init \
 dnl   -Wredundant-decls \
    -Wpointer-bool-conversion \
    -Wshadow \
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/exempi-2.6.1/exempi/Makefile.am new/exempi-2.6.2/exempi/Makefile.am
--- old/exempi-2.6.1/exempi/Makefile.am 2021-11-18 04:52:14.000000000 +0100
+++ new/exempi-2.6.2/exempi/Makefile.am 2022-06-25 23:43:18.000000000 +0200
@@ -69,14 +69,8 @@
 
 libexempi_la_LDFLAGS = -version-info @EXEMPI_VERSION_INFO@
 
-if HAVE_SYMBOLS_FILE
-libexempi_la_LDFLAGS += -Wl,--retain-symbols-file=$(srcdir)/libexempi.sym
-endif
-
 dist_man1_MANS = exempi.1
 
-EXTRA_DIST = libexempi.sym
-
 ### tests
 
 AUTOMAKE_OPTIONS = parallel-tests
@@ -105,7 +99,7 @@
 
 noinst_HEADERS = tests/utils.h
 
-EXTRA_DIST += $(check_DATA) $(check_SCRIPTS)
+EXTRA_DIST = $(check_DATA) $(check_SCRIPTS)
 CLEANFILES = test.jpg test.webp
 
 AM_CXXFLAGS = @BOOST_CPPFLAGS@
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/exempi-2.6.1/exempi/libexempi.sym new/exempi-2.6.2/exempi/libexempi.sym
--- old/exempi-2.6.1/exempi/libexempi.sym       2020-06-24 17:27:53.000000000 
+0200
+++ new/exempi-2.6.2/exempi/libexempi.sym       1970-01-01 01:00:00.000000000 
+0100
@@ -1,67 +0,0 @@
-xmp_append_array_item
-xmp_copy
-xmp_delete_localized_text
-xmp_delete_property
-xmp_files_can_put_xmp
-xmp_files_close
-xmp_files_free
-xmp_files_get_new_xmp
-xmp_files_get_xmp
-xmp_files_new
-xmp_files_open
-xmp_files_open_new
-xmp_files_put_xmp
-xmp_free
-xmp_get_array_item
-xmp_get_error
-xmp_get_localized_text
-xmp_get_property
-xmp_get_property_bool
-xmp_get_property_date
-xmp_get_property_float
-xmp_get_property_int32
-xmp_get_property_int64
-xmp_has_property
-xmp_init
-xmp_iterator_free
-xmp_iterator_new
-xmp_iterator_next
-xmp_iterator_skip
-xmp_namespace_prefix
-xmp_new
-xmp_new_empty
-xmp_parse
-xmp_prefix_namespace_uri
-xmp_register_namespace
-xmp_serialize
-xmp_serialize_and_format
-xmp_set_array_item
-xmp_set_localized_text
-xmp_set_property
-xmp_set_property_bool
-xmp_set_property_date
-xmp_set_property_float
-xmp_set_property_int32
-xmp_set_property_int64
-xmp_string_cstr
-xmp_string_free
-xmp_string_new
-xmp_terminate
-NS_CAMERA_RAW_SAVED_SETTINGS
-NS_CAMERA_RAW_SETTINGS
-NS_CC
-NS_CRS
-NS_DC
-NS_DIMENSIONS_TYPE
-NS_EXIF
-NS_EXIF_AUX
-NS_IPTC4XMP
-NS_LIGHTROOM
-NS_PDF
-NS_PHOTOSHOP
-NS_RDF
-NS_TIFF
-NS_TPG
-NS_XAP
-NS_XAP_RIGHTS
-NS_XMP_META
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/exempi-2.6.1/exempi/tests/test-bgo.cpp 
new/exempi-2.6.2/exempi/tests/test-bgo.cpp
--- old/exempi-2.6.1/exempi/tests/test-bgo.cpp  2020-06-24 17:27:53.000000000 
+0200
+++ new/exempi-2.6.2/exempi/tests/test-bgo.cpp  2022-06-25 23:43:18.000000000 
+0200
@@ -1,7 +1,7 @@
 /*
  * exempi - test-bgo.cpp
  *
- * Copyright (C) 2007-2008 Hubert Figuiere
+ * Copyright (C) 2007-2022 Hubert Figuière
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -40,28 +40,33 @@
 
 #include <string>
 
-#include <boost/test/minimal.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "utils.h"
 #include "xmpconsts.h"
 #include "xmp.h"
 
-int test_main(int argc, char* argv[])
+boost::unit_test::test_suite* init_unit_test_suite(int argc, char * argv[])
 {
   prepare_test(argc, argv, "fdo18635.jpg");
 
+  return nullptr;
+}
+
+BOOST_AUTO_TEST_CASE(test_bgo)
+{
   BOOST_CHECK(xmp_init());
 
   XmpFilePtr xf = xmp_files_open_new(g_testfile.c_str(), XMP_OPEN_READ);
 
-  BOOST_CHECK(xf != NULL);
-  if (xf == NULL) {
-    return 1;
+  BOOST_CHECK(xf != nullptr);
+  if (xf == nullptr) {
+    return;
   }
 
   XmpPtr xmp = xmp_files_get_new_xmp(xf);
 
-  BOOST_CHECK(xmp != NULL);
+  BOOST_CHECK(xmp != nullptr);
 
   BOOST_CHECK(xmp_free(xmp));
   BOOST_CHECK(xmp_files_free(xf));
@@ -70,5 +75,4 @@
 
   BOOST_CHECK(!g_lt->check_leaks());
   BOOST_CHECK(!g_lt->check_errors());
-  return 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/exempi-2.6.1/exempi/tests/test-exempi-core.cpp 
new/exempi-2.6.2/exempi/tests/test-exempi-core.cpp
--- old/exempi-2.6.1/exempi/tests/test-exempi-core.cpp  2021-09-01 
16:26:34.000000000 +0200
+++ new/exempi-2.6.2/exempi/tests/test-exempi-core.cpp  2022-06-25 
23:43:18.000000000 +0200
@@ -1,7 +1,7 @@
 /*
  * exempi - test-exempi-core.cpp
  *
- * Copyright (C) 2007-2013 Hubert Figuiere
+ * Copyright (C) 2007-2022 Hubert Figuière
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -40,7 +40,7 @@
 
 #include <string>
 
-#include <boost/test/minimal.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "utils.h"
 #include "xmpconsts.h"
@@ -48,11 +48,14 @@
 
 using boost::unit_test::test_suite;
 
-// void test_exempi()
-int test_main(int argc, char *argv[])
+boost::unit_test::test_suite* init_unit_test_suite(int argc, char * argv[])
 {
   prepare_test(argc, argv, "test1.xmp");
+  return nullptr;
+}
 
+BOOST_AUTO_TEST_CASE(test_exempi_core)
+{
   size_t len;
   char *buffer;
 
@@ -231,5 +234,4 @@
 
   BOOST_CHECK(!g_lt->check_leaks());
   BOOST_CHECK(!g_lt->check_errors());
-  return 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/exempi-2.6.1/exempi/tests/test-fdo83313.cpp 
new/exempi-2.6.2/exempi/tests/test-fdo83313.cpp
--- old/exempi-2.6.1/exempi/tests/test-fdo83313.cpp     2020-06-24 
17:27:53.000000000 +0200
+++ new/exempi-2.6.2/exempi/tests/test-fdo83313.cpp     2022-06-25 
23:43:18.000000000 +0200
@@ -1,7 +1,7 @@
 /*
- * exempi - test-bgo.cpp
+ * exempi - test-fd083313.cpp
  *
- * Copyright (C) 2007-2008 Hubert Figuiere
+ * Copyright (C) 2007-2022 Hubert Figuière
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -40,23 +40,28 @@
 
 #include <string>
 
-#include <boost/test/minimal.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "utils.h"
 #include "xmpconsts.h"
 #include "xmp.h"
 
-int test_main(int argc, char* argv[])
+boost::unit_test::test_suite* init_unit_test_suite(int argc, char * argv[])
 {
   prepare_test(argc, argv, "fdo83313.jpg");
 
+  return nullptr;
+}
+
+BOOST_AUTO_TEST_CASE(test_fd083313)
+{
   BOOST_CHECK(xmp_init());
 
   XmpFilePtr xf = xmp_files_open_new(g_testfile.c_str(), XMP_OPEN_READ);
 
   BOOST_CHECK(xf != NULL);
   if (xf == NULL) {
-    return 1;
+    exit(128);
   }
 
   XmpPtr xmp = xmp_files_get_new_xmp(xf);
@@ -70,5 +75,4 @@
 
   BOOST_CHECK(!g_lt->check_leaks());
   BOOST_CHECK(!g_lt->check_errors());
-  return 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/exempi-2.6.1/exempi/tests/test-iterator.cpp 
new/exempi-2.6.2/exempi/tests/test-iterator.cpp
--- old/exempi-2.6.1/exempi/tests/test-iterator.cpp     2021-09-01 
16:26:34.000000000 +0200
+++ new/exempi-2.6.2/exempi/tests/test-iterator.cpp     2022-06-25 
23:43:18.000000000 +0200
@@ -1,7 +1,7 @@
 /*
  * exempi - test3.cpp
  *
- * Copyright (C) 2007-2017 Hubert Figuiere
+ * Copyright (C) 2007-2022 Hubert Figuière
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -43,7 +43,7 @@
 #include <string>
 #include <vector>
 
-#include <boost/test/minimal.hpp>
+#include <boost/test/included/unit_test.hpp>
 #include <boost/format.hpp>
 
 #include "utils.h"
@@ -52,11 +52,14 @@
 
 using boost::unit_test::test_suite;
 
-// void test_exempi_iterate()
-int test_main(int argc, char *argv[])
+boost::unit_test::test_suite* init_unit_test_suite(int argc, char * argv[])
 {
   prepare_test(argc, argv, "test1.xmp");
+  return nullptr;
+}
 
+BOOST_AUTO_TEST_CASE(test_exempi_iterate)
+{
   size_t len;
   char *buffer;
 
@@ -170,5 +173,4 @@
 
   BOOST_CHECK(!g_lt->check_leaks());
   BOOST_CHECK(!g_lt->check_errors());
-  return 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/exempi-2.6.1/exempi/tests/test-serialise.cpp 
new/exempi-2.6.2/exempi/tests/test-serialise.cpp
--- old/exempi-2.6.1/exempi/tests/test-serialise.cpp    2020-06-24 
17:27:53.000000000 +0200
+++ new/exempi-2.6.2/exempi/tests/test-serialise.cpp    2022-06-25 
23:43:18.000000000 +0200
@@ -1,7 +1,7 @@
 /*
  * exempi - test-serialise.cpp
  *
- * Copyright (C) 2007-2008 Hubert Figuiere
+ * Copyright (C) 2007-2022 Hubert Figuière
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -40,19 +40,21 @@
 
 #include <string>
 
-#include <boost/test/minimal.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "utils.h"
 #include "xmpconsts.h"
 #include "xmp.h"
 
-using boost::unit_test::test_suite;
-
-// void test_serialize()
-int test_main(int argc, char *argv[])
+boost::unit_test::test_suite* init_unit_test_suite(int argc, char * argv[])
 {
   prepare_test(argc, argv, "test1.xmp");
 
+  return nullptr;
+}
+
+BOOST_AUTO_TEST_CASE(test_serialise)
+{
   size_t len;
   char *buffer;
   FILE *f = fopen(g_testfile.c_str(), "rb");
@@ -98,5 +100,4 @@
 
   BOOST_CHECK(!g_lt->check_leaks());
   BOOST_CHECK(!g_lt->check_errors());
-  return 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/exempi-2.6.1/exempi/tests/test-tiff-leak.cpp 
new/exempi-2.6.2/exempi/tests/test-tiff-leak.cpp
--- old/exempi-2.6.1/exempi/tests/test-tiff-leak.cpp    2020-06-24 
17:27:53.000000000 +0200
+++ new/exempi-2.6.2/exempi/tests/test-tiff-leak.cpp    2022-06-25 
23:43:18.000000000 +0200
@@ -1,7 +1,7 @@
 /*
  * exempi - test-tiff-leak.cpp
  *
- * Copyright (C) 2007-2008,2010 Hubert Figuiere
+ * Copyright (C) 2007-2022 Hubert Figuière
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,7 @@
 
 #include <string>
 
-#include <boost/test/minimal.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "utils.h"
 #include "xmp.h"
@@ -49,11 +49,15 @@
 
 /**  See http://www.adobeforums.com/webx/.3bc42b73 for the orignal
  *   test case */
-// void test_tiff_leak()
-int test_main(int argc, char *argv[])
+boost::unit_test::test_suite* init_unit_test_suite(int argc, char * argv[])
 {
   prepare_test(argc, argv, "../../samples/testfiles/BlueSquare.jpg");
 
+  return nullptr;
+}
+
+BOOST_AUTO_TEST_CASE(test_tiff_leak)
+{
   std::string orig_tiff_file =
     g_src_testdir + "../../samples/testfiles/BlueSquare.tif";
   BOOST_CHECK(copy_file(orig_tiff_file, "test.tif"));
@@ -64,7 +68,7 @@
 
   BOOST_CHECK(f != NULL);
   if (f == NULL) {
-    return 1;
+    exit(128);
   }
 
   XmpPtr xmp;
@@ -82,5 +86,4 @@
   BOOST_CHECK(unlink("test.tif") == 0);
   BOOST_CHECK(!g_lt->check_leaks());
   BOOST_CHECK(!g_lt->check_errors());
-  return 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/exempi-2.6.1/exempi/tests/test-webp.cpp 
new/exempi-2.6.2/exempi/tests/test-webp.cpp
--- old/exempi-2.6.1/exempi/tests/test-webp.cpp 2020-06-24 17:27:53.000000000 
+0200
+++ new/exempi-2.6.2/exempi/tests/test-webp.cpp 2022-06-25 23:43:18.000000000 
+0200
@@ -1,7 +1,7 @@
 /*
  * exempi - test-webp.cpp
  *
- * Copyright (C) 2007-2016 Hubert Figuiere
+ * Copyright (C) 2007-2022 Hubert Figuière
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,19 +41,20 @@
 
 #include <string>
 
-#include <boost/test/minimal.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "utils.h"
 #include "xmp.h"
 #include "xmpconsts.h"
 
-using boost::unit_test::test_suite;
-
-
-int test_main(int argc, char *argv[])
+boost::unit_test::test_suite* init_unit_test_suite(int argc, char * argv[])
 {
   prepare_test(argc, argv, "../../samples/testfiles/BlueSquare.webp");
+  return nullptr;
+}
 
+BOOST_AUTO_TEST_CASE(test_webp)
+{
   BOOST_CHECK(xmp_init());
 
   BOOST_CHECK(xmp_files_check_file_format(g_testfile.c_str()) == XMP_FT_WEBP);
@@ -61,7 +62,7 @@
 
   BOOST_CHECK(f != NULL);
   if (f == NULL) {
-    return 1;
+    exit(128);
   }
 
   XmpPtr xmp = xmp_files_get_new_xmp(f);
@@ -78,7 +79,7 @@
 
   BOOST_CHECK(f != NULL);
   if (f == NULL) {
-    return 2;
+    exit(128);
   }
 
   BOOST_CHECK(xmp_set_property(xmp, NS_PHOTOSHOP, "ICCProfile", "foo", 0));
@@ -94,7 +95,7 @@
 
   BOOST_CHECK(f != NULL);
   if (f == NULL) {
-    return 3;
+    exit(128);
   }
   xmp = xmp_files_get_new_xmp(f);
   BOOST_CHECK(xmp != NULL);
@@ -114,6 +115,4 @@
 
   BOOST_CHECK(!g_lt->check_leaks());
   BOOST_CHECK(!g_lt->check_errors());
-
-  return 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/exempi-2.6.1/exempi/tests/test-write-new-prop.cpp 
new/exempi-2.6.2/exempi/tests/test-write-new-prop.cpp
--- old/exempi-2.6.1/exempi/tests/test-write-new-prop.cpp       2020-06-24 
17:27:53.000000000 +0200
+++ new/exempi-2.6.2/exempi/tests/test-write-new-prop.cpp       2022-06-25 
23:43:18.000000000 +0200
@@ -1,7 +1,7 @@
 /*
- * exempi - test1.cpp
+ * exempi - test-write-new-prop.cpp
  *
- * Copyright (C) 2007-2008 Hubert Figuiere
+ * Copyright (C) 2007-2022 Hubert Figuière
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -40,19 +40,20 @@
 
 #include <string>
 
-#include <boost/test/minimal.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "utils.h"
 #include "xmpconsts.h"
 #include "xmp.h"
 
-using boost::unit_test::test_suite;
-
-// void test_write_new_property()
-int test_main(int argc, char *argv[])
+boost::unit_test::test_suite* init_unit_test_suite(int argc, char * argv[])
 {
   prepare_test(argc, argv, "test1.xmp");
+  return nullptr;
+}
 
+BOOST_AUTO_TEST_CASE(test_write_new_property)
+{
   size_t len;
   char *buffer;
 
@@ -146,5 +147,4 @@
 
   BOOST_CHECK(!g_lt->check_leaks());
   BOOST_CHECK(!g_lt->check_errors());
-  return 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/exempi-2.6.1/exempi/tests/test-xmpfiles-write.cpp 
new/exempi-2.6.2/exempi/tests/test-xmpfiles-write.cpp
--- old/exempi-2.6.1/exempi/tests/test-xmpfiles-write.cpp       2020-06-24 
17:27:53.000000000 +0200
+++ new/exempi-2.6.2/exempi/tests/test-xmpfiles-write.cpp       2022-06-25 
23:43:18.000000000 +0200
@@ -1,7 +1,7 @@
 /*
  * exempi - test-xmpfile-write.cpp
  *
- * Copyright (C) 2007-2008,2010 Hubert Figuiere
+ * Copyright (C) 2007-2022 Hubert Figuière
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,19 +41,20 @@
 
 #include <string>
 
-#include <boost/test/minimal.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "utils.h"
 #include "xmp.h"
 #include "xmpconsts.h"
 
-using boost::unit_test::test_suite;
-
-// void test_xmpfiles_write()
-int test_main(int argc, char *argv[])
+boost::unit_test::test_suite* init_unit_test_suite(int argc, char * argv[])
 {
   prepare_test(argc, argv, "../../samples/testfiles/BlueSquare.jpg");
+  return nullptr;
+}
 
+BOOST_AUTO_TEST_CASE(test_xmpfiles_write)
+{
   BOOST_CHECK(xmp_init());
 
   BOOST_CHECK(xmp_files_check_file_format(g_testfile.c_str()) == XMP_FT_JPEG);
@@ -61,7 +62,7 @@
 
   BOOST_CHECK(f != NULL);
   if (f == NULL) {
-    return 1;
+    exit(128);
   }
 
   XmpPtr xmp = xmp_files_get_new_xmp(f);
@@ -78,7 +79,7 @@
 
   BOOST_CHECK(f != NULL);
   if (f == NULL) {
-    return 2;
+    exit(128);
   }
 
   BOOST_CHECK(xmp_set_property(xmp, NS_PHOTOSHOP, "ICCProfile", "foo", 0));
@@ -94,7 +95,7 @@
 
   BOOST_CHECK(f != NULL);
   if (f == NULL) {
-    return 3;
+    exit(128);
   }
   xmp = xmp_files_get_new_xmp(f);
   BOOST_CHECK(xmp != NULL);
@@ -115,6 +116,4 @@
 
   BOOST_CHECK(!g_lt->check_leaks());
   BOOST_CHECK(!g_lt->check_errors());
-
-  return 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/exempi-2.6.1/exempi/tests/test-xmpfiles.cpp 
new/exempi-2.6.2/exempi/tests/test-xmpfiles.cpp
--- old/exempi-2.6.1/exempi/tests/test-xmpfiles.cpp     2020-06-24 
17:27:53.000000000 +0200
+++ new/exempi-2.6.2/exempi/tests/test-xmpfiles.cpp     2022-06-25 
23:43:18.000000000 +0200
@@ -1,7 +1,7 @@
 /*
  * exempi - test-xmpfiles.cpp
  *
- * Copyright (C) 2007-2016 Hubert Figuière
+ * Copyright (C) 2007-2022 Hubert Figuière
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,19 +41,21 @@
 
 #include <string>
 
-#include <boost/test/minimal.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "utils.h"
 #include "xmp.h"
 #include "xmpconsts.h"
 
-using boost::unit_test::test_suite;
-
-// void test_xmpfiles()
-int test_main(int argc, char* argv[])
+boost::unit_test::test_suite* init_unit_test_suite(int argc, char * argv[])
 {
   prepare_test(argc, argv, "../../samples/testfiles/BlueSquare.jpg");
 
+  return nullptr;
+}
+
+BOOST_AUTO_TEST_CASE(test_xmpfiles)
+{
   BOOST_CHECK(xmp_init());
 
   XmpFilePtr f = xmp_files_open_new(g_testfile.c_str(), XMP_OPEN_READ);
@@ -125,5 +127,4 @@
 
   BOOST_CHECK(!g_lt->check_leaks());
   BOOST_CHECK(!g_lt->check_errors());
-  return 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/exempi-2.6.1/exempi/tests/test-xmpformat.cpp 
new/exempi-2.6.2/exempi/tests/test-xmpformat.cpp
--- old/exempi-2.6.1/exempi/tests/test-xmpformat.cpp    2021-11-18 
04:52:14.000000000 +0100
+++ new/exempi-2.6.2/exempi/tests/test-xmpformat.cpp    2022-06-25 
23:43:18.000000000 +0200
@@ -1,7 +1,7 @@
 /*
  * exempi - test-xmpformat.cpp
  *
- * Copyright (C) 2020 Hubert Figuière
+ * Copyright (C) 2020-2022 Hubert Figuière
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -36,7 +36,7 @@
 #include <map>
 #include <string>
 
-#include <boost/test/minimal.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "xmp.h"
 
@@ -65,7 +65,12 @@
 // This test would have caught:
 // https://gitlab.freedesktop.org/libopenraw/exempi/-/issues/20
 //
-int test_main(int , char *[])
+boost::unit_test::test_suite* init_unit_test_suite(int, char **)
+{
+  return nullptr;
+}
+
+BOOST_AUTO_TEST_CASE(test_xmpformat)
 {
   const char* srcdir = getenv("srcdir");
   if (!srcdir) {
@@ -93,6 +98,4 @@
     auto xft = xmp_files_check_file_format(imagepath.c_str());
     BOOST_CHECK(xft == testcase.second);
   }
-
-  return 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/exempi-2.6.1/exempi/tests/testcpp.cpp 
new/exempi-2.6.2/exempi/tests/testcpp.cpp
--- old/exempi-2.6.1/exempi/tests/testcpp.cpp   2021-09-01 16:26:34.000000000 
+0200
+++ new/exempi-2.6.2/exempi/tests/testcpp.cpp   2022-06-25 23:43:18.000000000 
+0200
@@ -1,7 +1,7 @@
 /*
  * exempi - testcpp.cpp
  *
- * Copyright (C) 2011 Hubert Figuiere
+ * Copyright (C) 2011-2022 Hubert Figuière
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -34,16 +34,19 @@
  * OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <boost/test/minimal.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "utils.h"
 #include "xmp.h"
 #include "xmpconsts.h"
 #include "xmp++.hpp"
 
-using boost::unit_test::test_suite;
+boost::unit_test::test_suite* init_unit_test_suite(int, char **)
+{
+  return nullptr;
+}
 
-int test_main(int /*argc*/, char* /*argv*/ [])
+BOOST_AUTO_TEST_CASE(test_cpp)
 {
   // this test is totally useless without leak checking.
   // but for compiling.
@@ -65,5 +68,4 @@
 
   BOOST_CHECK(!g_lt->check_leaks());
   BOOST_CHECK(!g_lt->check_errors());
-  return 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/exempi-2.6.1/exempi/tests/testinit.cpp 
new/exempi-2.6.2/exempi/tests/testinit.cpp
--- old/exempi-2.6.1/exempi/tests/testinit.cpp  2021-09-01 16:26:34.000000000 
+0200
+++ new/exempi-2.6.2/exempi/tests/testinit.cpp  2022-06-25 23:43:18.000000000 
+0200
@@ -1,7 +1,7 @@
 /*
  * exempi - testinit.cpp
  *
- * Copyright (C) 2007 Hubert Figuiere
+ * Copyright (C) 2007-2022 Hubert Figuière
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -40,17 +40,20 @@
 
 #include <string>
 
-#include <boost/test/minimal.hpp>
+#include <boost/test/included/unit_test.hpp>
 
 #include "utils.h"
 #include "xmpconsts.h"
 #include "xmp.h"
 
-// void test_exempi_init()
-int test_main(int argc, char* argv[])
+boost::unit_test::test_suite* init_unit_test_suite(int argc, char * argv[])
 {
   prepare_test(argc, argv, "test1.xmp");
+  return nullptr;
+}
 
+BOOST_AUTO_TEST_CASE(test_exempi_init)
+{
   size_t len;
   char* buffer;
 
@@ -92,5 +95,4 @@
   free(buffer);
   BOOST_CHECK(!g_lt->check_leaks());
   BOOST_CHECK(!g_lt->check_errors());
-  return 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/exempi-2.6.1/exempi/tests/testparse.cpp 
new/exempi-2.6.2/exempi/tests/testparse.cpp
--- old/exempi-2.6.1/exempi/tests/testparse.cpp 2021-09-01 16:26:34.000000000 
+0200
+++ new/exempi-2.6.2/exempi/tests/testparse.cpp 2022-06-25 23:43:18.000000000 
+0200
@@ -1,7 +1,7 @@
 /*
- * exempi - test3.cpp
+ * exempi - testparse.cpp
  *
- * Copyright (C) 2007-2017 Hubert Figuiere
+ * Copyright (C) 2007-2022 Hubert Figuière
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -40,17 +40,19 @@
 #include <string>
 #include <iostream>
 
-#include <boost/test/minimal.hpp>
+#include <boost/test/included/unit_test.hpp>
 #include <boost/format.hpp>
 
 #include "utils.h"
 #include "xmp.h"
 #include "xmpconsts.h"
 
-using boost::unit_test::test_suite;
+boost::unit_test::test_suite* init_unit_test_suite(int, char**)
+{
+  return nullptr;
+}
 
-// void test_exempi_iterate()
-int test_main(int, char *[])
+BOOST_AUTO_TEST_CASE(test_parse)
 {
   char *buffer;
 
@@ -73,5 +75,4 @@
 
   BOOST_CHECK(!g_lt->check_leaks());
   BOOST_CHECK(!g_lt->check_errors());
-  return 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/exempi-2.6.1/m4/ax_ld_check_flag.m4 new/exempi-2.6.2/m4/ax_ld_check_flag.m4
--- old/exempi-2.6.1/m4/ax_ld_check_flag.m4     2020-06-24 17:27:53.000000000 
+0200
+++ new/exempi-2.6.2/m4/ax_ld_check_flag.m4     1970-01-01 01:00:00.000000000 
+0100
@@ -1,96 +0,0 @@
-# ===========================================================================
-#            http://autoconf-archive.cryp.to/ax_ld_check_flag.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   
AX_LD_CHECK_FLAG(FLAG-TO-CHECK,[PROLOGUE],[BODY],[ACTION-IF-SUCCESS],[ACTION-IF-FAILURE])
-#
-# DESCRIPTION
-#
-#   This macro tests if the C++ compiler supports the flag FLAG-TO-CHECK. If
-#   successfull execute ACTION-IF-SUCCESS otherwise ACTION-IF-FAILURE.
-#   PROLOGUE and BODY are optional and should be used as in AC_LANG_PROGRAM
-#   macro.
-#
-#   Example:
-#
-#     AX_LD_CHECK_FLAG([-Wl,-L/usr/lib],[],[],[
-#       ...
-#     ],[
-#       ...
-#     ])
-#
-#   This code is inspired from KDE_CHECK_COMPILER_FLAG macro. Thanks to
-#   Bogdan Drozdowski <bogda...@op.pl> for testing and bug fixes.
-#
-# LAST MODIFICATION
-#
-#   2008-04-12
-#
-# COPYLEFT
-#
-#   Copyright (c) 2008 Francesco Salvestrini 
<salvestr...@users.sourceforge.net>
-#
-#   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 the
-#   Free Software Foundation; either version 2 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 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/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Macro Archive. When you make and
-#   distribute a modified version of the Autoconf Macro, you may extend this
-#   special exception to the GPL to apply to your modified version as well.
-
-AC_DEFUN([AX_LD_CHECK_FLAG],[
-  AC_PREREQ([2.61])
-  AC_REQUIRE([AC_PROG_CXX])
-  AC_REQUIRE([AC_PROG_SED])
-
-  flag=`echo "$1" | $SED 'y% .=/+-(){}<>:*,%_______________%'`
-
-  AC_CACHE_CHECK([whether the linker accepts the $1 flag],
-    [ax_cv_ld_check_flag_$flag],[
-
-    #AC_LANG_PUSH([C])
-
-    save_LDFLAGS="$LDFLAGS"
-    LDFLAGS="$LDFLAGS $1"
-    AC_LINK_IFELSE([
-      AC_LANG_PROGRAM([$2],[$3])
-    ],[
-      eval "ax_cv_ld_check_flag_$flag=yes"
-    ],[
-      eval "ax_cv_ld_check_flag_$flag=no"
-    ])
-
-    LDFLAGS="$save_LDFLAGS"
-
-    #AC_LANG_POP
-
-  ])
-
-  AS_IF([eval "test \"`echo '$ax_cv_ld_check_flag_'$flag`\" = yes"],[
-    :
-    $4
-  ],[
-    :
-    $5
-  ])
-])
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/exempi-2.6.1/samples/source/XMPFilesCoverage.cpp 
new/exempi-2.6.2/samples/source/XMPFilesCoverage.cpp
--- old/exempi-2.6.1/samples/source/XMPFilesCoverage.cpp        2021-11-18 
04:53:54.000000000 +0100
+++ new/exempi-2.6.2/samples/source/XMPFilesCoverage.cpp        2022-06-25 
23:43:18.000000000 +0200
@@ -301,18 +301,18 @@
                
                DumpHandlerInfo();
        
-               TestOneFile ( "../../../testfiles/BlueSquare.ai" );
-               TestOneFile ( "../../../testfiles/BlueSquare.eps" );
-               TestOneFile ( "../../../testfiles/BlueSquare.indd" );
-               TestOneFile ( "../../../testfiles/BlueSquare.jpg" );
-               TestOneFile ( "../../../testfiles/BlueSquare.pdf" );
-               TestOneFile ( "../../../testfiles/BlueSquare.psd" );
-               TestOneFile ( "../../../testfiles/BlueSquare.tif" );
-               TestOneFile ( "../../../testfiles/BlueSquare.avi" );
-               TestOneFile ( "../../../testfiles/BlueSquare.mov" );
-               TestOneFile ( "../../../testfiles/BlueSquare.mp3" );
-               TestOneFile ( "../../../testfiles/BlueSquare.wav" );
-               TestOneFile ( "../../../testfiles/BlueSquare.png" );
+               TestOneFile ( "../../../../testfiles/BlueSquare.ai" );
+               TestOneFile ( "../../../../testfiles/BlueSquare.eps" );
+               TestOneFile ( "../../../../testfiles/BlueSquare.indd" );
+               TestOneFile ( "../../../../testfiles/BlueSquare.jpg" );
+               TestOneFile ( "../../../../testfiles/BlueSquare.pdf" );
+               TestOneFile ( "../../../../testfiles/BlueSquare.psd" );
+               TestOneFile ( "../../../../testfiles/BlueSquare.tif" );
+               TestOneFile ( "../../../../testfiles/BlueSquare.avi" );
+               TestOneFile ( "../../../../testfiles/BlueSquare.mov" );
+               TestOneFile ( "../../../../testfiles/BlueSquare.mp3" );
+               TestOneFile ( "../../../../testfiles/BlueSquare.wav" );
+               TestOneFile ( "../../../../testfiles/BlueSquare.png" );
 
        } catch ( XMP_Error & excep ) {
 
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/exempi-2.6.1/samples/source/common/DumpFile.cpp 
new/exempi-2.6.2/samples/source/common/DumpFile.cpp
--- old/exempi-2.6.1/samples/source/common/DumpFile.cpp 2021-11-18 
04:53:54.000000000 +0100
+++ new/exempi-2.6.2/samples/source/common/DumpFile.cpp 2022-06-25 
23:43:18.000000000 +0200
@@ -530,7 +530,12 @@
        XMP_Uns16 part4;        // Written big endian.
        XMP_Uns8  part5[6];     // Written in order.
 
-       ASF_GUID() {};
+       // (Exempi) needs a proper constructor
+       ASF_GUID()
+         : part1(0), part2(0), part3(0), part4(0),
+           part5{ 0, 0, 0, 0, 0, 0 }
+       {
+       }
        ASF_GUID(XMP_Uns32 p1, XMP_Uns16 p2, XMP_Uns16 p3, XMP_Uns16 p4, const 
void* p5)
        {
                part1 = GetUns32LE(&p1);
@@ -538,7 +543,7 @@
                part3 = GetUns16LE(&p3);
                part4 = GetUns16BE(&p4);
                memcpy(&part5, p5, 6);
-       };
+       }
 
 };
 
@@ -3133,7 +3138,8 @@
                tree->addComment("%s   <<unknown object>>, offset %u (0x%X), 
size %u",
                        indent.c_str(), objOffset, objOffset, size32);
                ASF_GUID guid;
-               memset(&guid, 0, sizeof(ASF_GUID));
+               // (Exempi) memset is unsafe, constructor is called)
+               // memset(&guid, 0, sizeof(ASF_GUID));
                guid.part1 = GetUns32LE(&objHeader->guid.part1);
                guid.part2 = GetUns16LE(&objHeader->guid.part2);
                guid.part3 = GetUns16LE(&objHeader->guid.part3);
@@ -3194,7 +3200,8 @@
        totalSecs -= ((XMP_Int64)minute * 60);
        XMP_Int32 second = (XMP_Int32)totalSecs;
        XMP_DateTime binDate;
-       memset(&binDate, 0, sizeof(binDate));
+       // (Exempi) memset is unsafe. Constructor has been called.
+       // memset(&binDate, 0, sizeof(binDate));
 
        binDate.year = 1601;
        binDate.month = 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/exempi-2.6.1/third-party/expat/ReadMe.txt 
new/exempi-2.6.2/third-party/expat/ReadMe.txt
--- old/exempi-2.6.1/third-party/expat/ReadMe.txt       2021-11-18 
04:53:54.000000000 +0100
+++ new/exempi-2.6.2/third-party/expat/ReadMe.txt       2022-06-25 
23:43:18.000000000 +0200
@@ -2,13 +2,13 @@
 
 although adapters for other parsers can easily be written. The most recent 
version of Expat used
 
-with XMP is 2.1.0. To use Expat:
+with XMP is 2.4.7. To use Expat:
 
 
 
 1. Obtain a copy of the Expat distribution. One good place is SourceForge:
 
-       http://sourceforge.net/projects/expat/files/expat/2.1.0/
+       http://sourceforge.net/projects/expat/files/expat/2.4.7/
 
 
 
@@ -16,7 +16,7 @@
 
 
 
-For Expat version 2.0.0 the contents of .../third-party/expat/lib are:
+For Expat version 2.4.7 the contents of .../third-party/expat/lib are:
 
 
 

Reply via email to