libextractor: revbump for exiv2-0.28.1.

This commit is contained in:
Mohammed Anas 2023-10-18 19:18:39 +01:00 committed by classabbyamp
parent 2d44e16ec1
commit b30d4197b8
3 changed files with 328 additions and 1 deletions

View file

@ -0,0 +1,303 @@
Patch based on https://gitlab.archlinux.org/archlinux/packaging/packages/libextractor/-/blob/main/exiv2-0.28.patch,
with an additional minor change to fix build on 32-bit platforms.
--- a/src/plugins/exiv2_extractor.cc 2023-11-18 14:03:36.454439185 +0000
+++ b/src/plugins/exiv2_extractor.cc 2023-11-18 14:03:40.462453936 +0000
@@ -90,7 +90,11 @@
* @param rcount number of bytes to read
* @return buffer with data read, empty buffer (!) on failure (!)
*/
+#if EXIV2_TEST_VERSION (0,28,0)
+virtual Exiv2::DataBuf read (size_t rcount);
+#else
virtual Exiv2::DataBuf read (long rcount);
+#endif
/**
* Read up to 'rcount' bytes into 'buf'.
@@ -99,8 +103,17 @@
* @param rcount size of 'buf'
* @return number of bytes read successfully, 0 on failure (!)
*/
+#if EXIV2_TEST_VERSION (0,28,0)
+virtual size_t read (Exiv2::byte *buf,
+ size_t rcount);
+#else
virtual long read (Exiv2::byte *buf,
long rcount);
+#endif
+
+#if EXIV2_TEST_VERSION (0,28,0)
+virtual void populateFakeData();
+#endif
/**
* Read a single character.
@@ -117,8 +130,13 @@
* @param wcount how many bytes to write
* @return -1 (always fails)
*/
+#if EXIV2_TEST_VERSION(0,28,0)
+virtual size_t write (const Exiv2::byte *data,
+ size_t wcount);
+#else
virtual long write (const Exiv2::byte *data,
long wcount);
+#endif
/**
* Write to stream.
@@ -126,7 +144,11 @@
* @param src stream to copy
* @return -1 (always fails)
*/
+#if EXIV2_TEST_VERSION(0,28,0)
+virtual size_t write (Exiv2::BasicIo &src);
+#else
virtual long write (Exiv2::BasicIo &src);
+#endif
/**
* Write a single byte.
@@ -150,7 +172,7 @@
* @parma pos offset is relative to where?
* @return -1 on failure, 0 on success
*/
-virtual int seek (long offset,
+virtual int seek (int64_t offset,
Exiv2::BasicIo::Position pos);
/**
@@ -172,7 +194,11 @@
*
* @return -1 on error
*/
+#if EXIV2_TEST_VERSION(0,28,0)
+virtual size_t tell (void) const;
+#else
virtual long int tell (void) const;
+#endif
/**
* Return overall size of the file.
@@ -213,7 +239,11 @@
*
* @throws error
*/
+#if EXIV2_TEST_VERSION(0,28,0)
+virtual const std::string& path () const noexcept;
+#else
virtual std::string path () const;
+#endif
#ifdef EXV_UNICODE_PATH
/**
@@ -230,7 +260,11 @@
*
* @throws error
*/
+#if EXIV2_TEST_VERSION(0,28,0)
+virtual Exiv2::BasicIo::UniquePtr temporary () const;
+#else
virtual Exiv2::BasicIo::AutoPtr temporary () const;
+#endif
};
@@ -266,7 +300,11 @@
* @return buffer with data read, empty buffer (!) on failure (!)
*/
Exiv2::DataBuf
+#if EXIV2_TEST_VERSION (0,28,0)
+ExtractorIO::read (size_t rcount)
+#else
ExtractorIO::read (long rcount)
+#endif
{
void *data;
ssize_t ret;
@@ -284,9 +322,15 @@
* @param rcount size of 'buf'
* @return number of bytes read successfully, 0 on failure (!)
*/
+#if EXIV2_TEST_VERSION (0,28,0)
+size_t
+ExtractorIO::read (Exiv2::byte *buf,
+ size_t rcount)
+#else
long
ExtractorIO::read (Exiv2::byte *buf,
long rcount)
+#endif
{
void *data;
ssize_t ret;
@@ -305,6 +349,12 @@
return got;
}
+#if EXIV2_TEST_VERSION (0,28,0)
+void ExtractorIO::populateFakeData()
+{
+ return;
+}
+#endif
/**
* Read a single character.
@@ -319,7 +369,9 @@
const unsigned char *r;
if (1 != ec->read (ec->cls, &data, 1))
-#if EXIV2_TEST_VERSION (0,27,0)
+#if EXIV2_TEST_VERSION(0,28,0)
+ throw Exiv2::Error (Exiv2::ErrorCode::kerDecodeLangAltQualifierFailed);
+#elif EXIV2_TEST_VERSION (0,27,0)
throw Exiv2::BasicError<char> (Exiv2::kerDecodeLangAltQualifierFailed);
#else
throw Exiv2::BasicError<char> (42 /* error code */);
@@ -336,9 +388,15 @@
* @param wcount how many bytes to write
* @return -1 (always fails)
*/
+#if EXIV2_TEST_VERSION(0,28,0)
+size_t
+ExtractorIO::write (const Exiv2::byte *data,
+ size_t wcount)
+#else
long
ExtractorIO::write (const Exiv2::byte *data,
long wcount)
+#endif
{
return -1;
}
@@ -350,7 +408,11 @@
* @param src stream to copy
* @return -1 (always fails)
*/
+#if EXIV2_TEST_VERSION(0,28,0)
+size_t
+#else
long
+#endif
ExtractorIO::write (Exiv2::BasicIo &src)
{
return -1;
@@ -378,7 +440,9 @@
void
ExtractorIO::transfer (Exiv2::BasicIo& src)
{
-#if EXIV2_TEST_VERSION (0,27,0)
+#if EXIV2_TEST_VERSION(0,28,0)
+ throw Exiv2::Error (Exiv2::ErrorCode::kerDecodeLangAltQualifierFailed);
+#elif EXIV2_TEST_VERSION (0,27,0)
throw Exiv2::BasicError<char> (Exiv2::kerDecodeLangAltQualifierFailed);
#else
throw Exiv2::BasicError<char> (42 /* error code */);
@@ -394,7 +458,7 @@
* @return -1 on failure, 0 on success
*/
int
-ExtractorIO::seek (long offset,
+ExtractorIO::seek (int64_t offset,
Exiv2::BasicIo::Position pos)
{
int rel;
@@ -427,7 +491,9 @@
Exiv2::byte *
ExtractorIO::mmap (bool isWritable)
{
-#if EXIV2_TEST_VERSION (0,27,0)
+#if EXIV2_TEST_VERSION (0,28,0)
+ throw Exiv2::Error (Exiv2::ErrorCode::kerDecodeLangAltQualifierFailed);
+#elif EXIV2_TEST_VERSION (0,27,0)
throw Exiv2::BasicError<char> (Exiv2::kerDecodeLangAltQualifierFailed);
#else
throw Exiv2::BasicError<char> (42 /* error code */);
@@ -452,7 +518,11 @@
*
* @return -1 on error
*/
+#if EXIV2_TEST_VERSION(0,28,0)
+size_t
+#else
long int
+#endif
ExtractorIO::tell (void) const
{
return (long) ec->seek (ec->cls, 0, SEEK_CUR);
@@ -516,10 +586,17 @@
*
* @throws error
*/
+#if EXIV2_TEST_VERSION (0,28,0)
+const std::string&
+ExtractorIO::path () const noexcept
+#else
std::string
ExtractorIO::path () const
+#endif
{
-#if EXIV2_TEST_VERSION (0,27,0)
+#if EXIV2_TEST_VERSION (0,28,0)
+ throw Exiv2::Error (Exiv2::ErrorCode::kerDecodeLangAltQualifierFailed);
+#elif EXIV2_TEST_VERSION (0,27,0)
throw Exiv2::BasicError<char> (Exiv2::kerDecodeLangAltQualifierFailed);
#else
throw Exiv2::BasicError<char> (42 /* error code */);
@@ -536,7 +613,9 @@
std::wstring
ExtractorIO::wpath () const
{
-#if EXIV2_TEST_VERSION (0,27,0)
+#if EXIV2_TEST_VERSION (0,28,0)
+ throw Exiv2::Error (Exiv2::ErrorCode::kerDecodeLangAltQualifierFailed);
+#elif EXIV2_TEST_VERSION (0,27,0)
throw Exiv2::BasicError<char> (Exiv2::kerDecodeLangAltQualifierFailed);
#else
throw Exiv2::BasicError<char> (42 /* error code */);
@@ -552,11 +631,17 @@
*
* @throws error
*/
+#if EXIV2_TEST_VERSION(0,28,0)
+Exiv2::BasicIo::UniquePtr
+#else
Exiv2::BasicIo::AutoPtr
+#endif
ExtractorIO::temporary () const
{
fprintf (stderr, "throwing temporary error\n");
-#if EXIV2_TEST_VERSION (0,27,0)
+#if EXIV2_TEST_VERSION(0,28,0)
+ throw Exiv2::Error (Exiv2::ErrorCode::kerDecodeLangAltQualifierFailed);
+#elif EXIV2_TEST_VERSION (0,27,0)
throw Exiv2::BasicError<char> (Exiv2::kerDecodeLangAltQualifierFailed);
#else
throw Exiv2::BasicError<char> (42 /* error code */);
@@ -737,8 +822,13 @@
#if ! EXIV2_TEST_VERSION (0,24,0)
Exiv2::LogMsg::setLevel (Exiv2::LogMsg::mute);
#endif
+#if EXIV2_TEST_VERSION(0,28,0)
+ std::unique_ptr<Exiv2::BasicIo> eio (new ExtractorIO (ec));
+ Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open (std::move(eio));
+#else
std::auto_ptr<Exiv2::BasicIo> eio (new ExtractorIO (ec));
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open (eio);
+#endif
if (0 == image.get ())
return;
image->readMetadata ();
@@ -822,7 +912,11 @@
ADDXMP ("Xmp.lr.hierarchicalSubject", EXTRACTOR_METATYPE_SUBJECT);
}
}
+#if EXIV2_TEST_VERSION (0,28,0)
+ catch (const Exiv2::Error& e)
+#else
catch (const Exiv2::AnyError& e)
+#endif
{
#if DEBUG
std::cerr << "Caught Exiv2 exception '" << e << "'\n";

View file

@ -0,0 +1,24 @@
--- a/src/plugins/test_exiv2.c 2021-01-30 13:20:23.000000000 +0000
+++ b/src/plugins/test_exiv2.c 2023-11-03 19:39:43.115274492 +0000
@@ -49,8 +49,8 @@
EXTRACTOR_METATYPE_GPS_LATITUDE,
EXTRACTOR_METAFORMAT_UTF8,
"text/plain",
- "28deg 8' (18|17.585)\" ?",
- strlen ("28deg 8' (18|17.585)\" ?") + 1,
+ "28 deg 8' (18|17.58)\" ?",
+ strlen ("28 deg 8' (18|17.58)\" ?") + 1,
0,
.regex = 1
},
@@ -66,8 +66,8 @@
EXTRACTOR_METATYPE_GPS_LONGITUDE,
EXTRACTOR_METAFORMAT_UTF8,
"text/plain",
- "14deg 14' (22|21.713)\" ?",
- strlen ("14deg 14' (22|21.713)\" ?"),
+ "14 deg 14' (22|21.71)\" ?",
+ strlen ("14 deg 14' (22|21.71)\" ?"),
0,
.regex = 1
},

View file

@ -1,7 +1,7 @@
# Template file for 'libextractor'
pkgname=libextractor
version=1.11
revision=3
revision=4
build_style=gnu-configure
configure_args="--disable-static"
hostmakedepends="pkg-config"