[packages/libextractor] - Arch patch enhanced by seek() function fix and tests adjustments
qboosh
qboosh at pld-linux.org
Wed Jul 26 17:54:42 CEST 2023
commit 0e7de1c6794e8c331a1a1a6a829993c7cd217d3a
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Wed Jul 26 17:23:06 2023 +0200
- Arch patch enhanced by seek() function fix and tests adjustments
libextractor-exiv2-0.28.patch | 333 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 333 insertions(+)
---
diff --git a/libextractor-exiv2-0.28.patch b/libextractor-exiv2-0.28.patch
new file mode 100644
index 0000000..d763b65
--- /dev/null
+++ b/libextractor-exiv2-0.28.patch
@@ -0,0 +1,333 @@
+diff --git a/src/plugins/exiv2_extractor.cc b/src/plugins/exiv2_extractor.cc
+index 78f9bda..d32ed6a 100644
+--- a/src/plugins/exiv2_extractor.cc
++++ b/src/plugins/exiv2_extractor.cc
+@@ -90,7 +90,11 @@ virtual int close ();
+ * @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 @@ virtual Exiv2::DataBuf read (long rcount);
+ * @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 @@ virtual int getb ();
+ * @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 @@ virtual long write (const Exiv2::byte *data,
+ * @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,11 @@ virtual void transfer (Exiv2::BasicIo& s
+ * @parma pos offset is relative to where?
+ * @return -1 on failure, 0 on success
+ */
++#if EXIV2_TEST_VERSION(0,28,0)
++virtual int seek (int64_t offset,
++#else
+ virtual int seek (long offset,
++#endif
+ Exiv2::BasicIo::Position pos);
+
+ /**
+@@ -172,7 +194,11 @@ virtual int munmap ();
+ *
+ * @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 @@ virtual bool eof () const;
+ *
+ * @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 @@ virtual std::wstring wpath () const;
+ *
+ * @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 @@ ExtractorIO::close ()
+ * @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 @@ ExtractorIO::read (long rcount)
+ * @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 @@ ExtractorIO::read (Exiv2::byte *buf,
+ return got;
+ }
+
++#if EXIV2_TEST_VERSION (0,28,0)
++void ExtractorIO::populateFakeData()
++{
++ return;
++}
++#endif
+
+ /**
+ * Read a single character.
+@@ -319,7 +369,9 @@ ExtractorIO::getb ()
+ 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 @@ ExtractorIO::getb ()
+ * @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 @@ ExtractorIO::write (const Exiv2::byte *data,
+ * @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 @@ ExtractorIO::putb (Exiv2::byte data)
+ 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 */);
+@@ -410,7 +462,11 @@ ExtractorIO::transfer (Exiv2::BasicIo& s
+ * @return -1 on failure, 0 on success
+ */
+ int
++#if EXIV2_TEST_VERSION(0,28,0)
++ExtractorIO::seek (int64_t offset,
++#else
+ ExtractorIO::seek (long offset,
++#endif
+ Exiv2::BasicIo::Position pos)
+ {
+ int rel;
+@@ -427,7 +491,9 @@ ExtractorIO::seek (long offset,
+ 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 @@ ExtractorIO::munmap ()
+ *
+ * @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 @@ ExtractorIO::eof () const
+ *
+ * @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 @@ ExtractorIO::path () const
+ 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 @@ ExtractorIO::wpath () const
+ *
+ * @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 @@ EXTRACTOR_exiv2_extract_method (struct EXTRACTOR_ExtractContext *ec)
+ #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 @@ EXTRACTOR_exiv2_extract_method (struct EXTRACTOR_ExtractContext *ec)
+ 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";
+--- libextractor-1.11/src/plugins/test_exiv2.c.orig 2021-01-30 14:20:23.000000000 +0100
++++ libextractor-1.11/src/plugins/test_exiv2.c 2023-07-26 06:26:59.042456917 +0200
+@@ -49,8 +49,8 @@ main (int argc, char *argv[])
+ 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|17.585)\" ?",
++ strlen ("28 ?deg 8' (18|17.58|17.585)\" ?") + 1,
+ 0,
+ .regex = 1
+ },
+@@ -66,8 +66,8 @@ main (int argc, char *argv[])
+ 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|21.713)\" ?",
++ strlen ("14 ?deg 14' (22|21.71|21.713)\" ?"),
+ 0,
+ .regex = 1
+ },
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/libextractor.git/commitdiff/0e7de1c6794e8c331a1a1a6a829993c7cd217d3a
More information about the pld-cvs-commit
mailing list