[SCM] exiv2 packaging branch, master, updated. debian/0.25-3.1-3734-gdcbc29a
Maximiliano Curia
maxy at moszumanska.debian.org
Thu Jul 13 17:38:10 UTC 2017
Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/exiv2.git;a=commitdiff;h=9d0a7b0
The following commit has been merged in the master branch:
commit 9d0a7b06104a79f7dfdaf2d332e8acdf05a9b256
Author: Andreas Huggel <ahuggel at gmx.net>
Date: Sat Dec 9 12:13:10 2006 +0000
Implemented conversion function to display Windows tags 0x9c9b-0x9c9f. Added configure magic to find iconv. Fixes bug #460.
---
config/config.h.in | 9 +++++
config/config.mk.in | 2 +-
config/configure.ac | 17 +++++-----
src/tags.cpp | 80 +++++++++++++++++++++++++++++++++++++++++++-
src/tags.hpp | 2 ++
test/bugfixes-test.sh | 4 +++
test/data/bugfixes-test.out | 6 ++++
test/data/exiv2-bug460.jpg | Bin 0 -> 5364 bytes
8 files changed, 109 insertions(+), 11 deletions(-)
diff --git a/config/config.h.in b/config/config.h.in
index f71f555..1a918e9 100644
--- a/config/config.h.in
+++ b/config/config.h.in
@@ -37,6 +37,15 @@
/* Define to 1 if you have the <libintl.h> header file. */
#undef HAVE_LIBINTL_H
+/* Define to 1 if you have the `iconv' function. */
+#undef HAVE_ICONV
+
+/* Define to `const' or to empty, depending on the second argument of `iconv'. */
+#undef ICONV_CONST
+
+/* Define to 1 if you have the <libintl.h> header file. */
+#undef HAVE_LIBINTL_H
+
/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
to 0 otherwise. */
#undef HAVE_MALLOC
diff --git a/config/config.mk.in b/config/config.mk.in
index f7d5a57..fdf8b98 100644
--- a/config/config.mk.in
+++ b/config/config.mk.in
@@ -55,7 +55,7 @@ CPPFLAGS = -I. @CPPFLAGS@ -DEXV_LOCALEDIR=\"$(localedir)\"
# Linker flags and libraries
LDFLAGS = @LDFLAGS@
-LIBS = @LTLIBINTL@ @LIBS@
+LIBS = @LTLIBINTL@ @LTLIBICONV@ @LIBS@
# Suffix of executables
EXEEXT := @EXEEXT@
diff --git a/config/configure.ac b/config/configure.ac
index bb6b279..4a553a7 100644
--- a/config/configure.ac
+++ b/config/configure.ac
@@ -30,14 +30,6 @@ AC_PROG_RANLIB
# ---------------------------------------------------------------------------
AM_GNU_GETTEXT([external])
-#dnl We cannot use AC_DEFINE_UNQUOTED() for these definitions, as
-#dnl we require make to do insert the proper $(datadir) value
-#localedir="\$(datadir)/locale"
-#AC_SUBST(localedir)
-#AM_CPPFLAGS="$CPPFLAGS"
-#AM_CPPFLAGS="$AM_CPPFLAGS -DLOCALEDIR=\\"${localedir}\\""
-#AC_SUBST(AM_CPPFLAGS)
-
# ---------------------------------------------------------------------------
# Libtool support
# ---------------------------------------------------------------------------
@@ -50,12 +42,13 @@ AC_CHECK_LIBM()
LIBS="$LIBS $LIBM"
CHECK_ZLIB()
AC_SUBST(HAVE_LIBZ,$HAVE_LIBZ)
+AM_ICONV
# ---------------------------------------------------------------------------
# Checks for header files.
# ---------------------------------------------------------------------------
AC_HEADER_STDC
-AC_CHECK_HEADERS([libintl.h malloc.h stdint.h stdlib.h string.h unistd.h wchar.h sys/mman.h])
+AC_CHECK_HEADERS([libintl.h locale.h malloc.h stdint.h stdlib.h string.h unistd.h sys/mman.h utime.h])
# ---------------------------------------------------------------------------
# Checks for typedefs, structures, and compiler characteristics.
@@ -66,6 +59,11 @@ AC_C_INLINE
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_STRUCT_TM
+AC_TYPE_UINT8_T
+AC_TYPE_UINT16_T
+AC_TYPE_UINT32_T
+AC_TYPE_INT16_T
+AC_TYPE_INT32_T
# ---------------------------------------------------------------------------
# Checks for library functions.
@@ -74,6 +72,7 @@ AC_FUNC_ALLOCA
AC_FUNC_MALLOC
AC_FUNC_MEMCMP
AC_FUNC_MKTIME
+AC_FUNC_MMAP
AC_FUNC_REALLOC
AC_FUNC_STAT
AC_FUNC_STRERROR_R
diff --git a/src/tags.cpp b/src/tags.cpp
index f1d3b4a..d133b2a 100644
--- a/src/tags.cpp
+++ b/src/tags.cpp
@@ -32,9 +32,10 @@ EXIV2_RCSID("@(#) $Id$")
// *****************************************************************************
// included header files
+#include "types.hpp"
#include "tags.hpp"
#include "error.hpp"
-#include "types.hpp"
+#include "futils.hpp"
#include "ifd.hpp"
#include "value.hpp"
#include "makernote.hpp"
@@ -49,6 +50,10 @@ EXIV2_RCSID("@(#) $Id$")
#include <cassert>
#include <cmath>
+#ifdef EXV_HAVE_ICONV
+# include <iconv.h>
+#endif
+
// *****************************************************************************
// class member definitions
namespace Exiv2 {
@@ -459,6 +464,21 @@ namespace Exiv2 {
N_("Contains four ASCII characters representing the TIFF/EP standard "
"version of a TIFF/EP file, eg '1', '0', '0', '0'"),
ifd0Id, otherTags, unsignedByte, printValue), // TIFF/EP Tag
+ TagInfo(0x9c9b, "XPTitle", N_("Windows Title"),
+ N_("Title tag used by Windows, encoded in UCS2"),
+ ifd0Id, otherTags, unsignedByte, printUcs2), // Windows Tag
+ TagInfo(0x9c9c, "XPComment", N_("Windows Comment"),
+ N_("Comment tag used by Windows, encoded in UCS2"),
+ ifd0Id, otherTags, unsignedByte, printUcs2), // Windows Tag
+ TagInfo(0x9c9d, "XPAuthor", N_("Windows Author"),
+ N_("Author tag used by Windows, encoded in UCS2"),
+ ifd0Id, otherTags, unsignedByte, printUcs2), // Windows Tag
+ TagInfo(0x9c9e, "XPKeywords", N_("Windows Keywords"),
+ N_("Keywords tag used by Windows, encoded in UCS2"),
+ ifd0Id, otherTags, unsignedByte, printUcs2), // Windows Tag
+ TagInfo(0x9c9f, "XPSubject", N_("Windows Subject"),
+ N_("Subject tag used by Windows, encoded in UCS2"),
+ ifd0Id, otherTags, unsignedByte, printUcs2), // Windows Tag
// End of list marker
TagInfo(0xffff, "(UnknownIfdTag)", N_("Unknown IFD tag"),
N_("Unknown IFD tag"),
@@ -1645,6 +1665,64 @@ namespace Exiv2 {
return os;
} // printDegrees
+ std::ostream& printUcs2(std::ostream& os, const Value& value)
+ {
+#ifdef EXV_HAVE_ICONV
+ bool go = true;
+ iconv_t cd = (iconv_t)(-1);
+ if (value.typeId() != unsignedByte) {
+ go = false;
+ }
+ if (go) {
+ cd = iconv_open("UTF-8", "UCS-2LE");
+ if (cd == (iconv_t)(-1)) {
+#ifndef SUPPRESS_WARNINGS
+ std::cerr << "Warning: iconv_open: " << strError() << "
";
+#endif
+ go = false;
+ }
+ }
+ if (go) {
+ DataBuf ib(value.size());
+ value.copy(ib.pData_, invalidByteOrder);
+ DataBuf ob(value.size());
+ char* outptr = reinterpret_cast<char*>(ob.pData_);
+ const char* outbuf = outptr;
+ size_t outbytesleft = ob.size_;
+ EXV_ICONV_CONST char* inbuf
+ = reinterpret_cast<EXV_ICONV_CONST char*>(ib.pData_);
+ size_t inbytesleft = ib.size_;
+ size_t rc = iconv(cd,
+ &inbuf,
+ &inbytesleft,
+ &outptr,
+ &outbytesleft);
+ if (rc == size_t(-1)) {
+#ifndef SUPPRESS_WARNINGS
+ std::cerr << "Warning: iconv: "
+ << strError()
+ << " inbytesleft = " << inbytesleft << "
";
+#endif
+ go = false;
+ }
+ if (go) {
+ // Todo: What if outbytesleft == 0
+ os << std::string(outbuf, outptr-outbuf);
+ }
+ }
+ if (cd != (iconv_t)(-1)) {
+ iconv_close(cd);
+ }
+ if (!go) {
+ os << value;
+ }
+#else // !EXV_HAVE_ICONV
+ os << value;
+#endif // EXV_HAVE_ICONV
+ return os;
+
+ } // printUcs2
+
std::ostream& print0x0006(std::ostream& os, const Value& value)
{
std::ostringstream oss;
diff --git a/src/tags.hpp b/src/tags.hpp
index a1df4b3..b7c1ee5 100644
--- a/src/tags.hpp
+++ b/src/tags.hpp
@@ -442,6 +442,8 @@ namespace Exiv2 {
std::ostream& printFloat(std::ostream& os, const Value& value);
//! Print a longitude or latitude value
std::ostream& printDegrees(std::ostream& os, const Value& value);
+ //! Print function converting from UCS-2LE to UTF-8
+ std::ostream& printUcs2(std::ostream& os, const Value& value);
//! Print GPS altitude
std::ostream& print0x0006(std::ostream& os, const Value& value);
diff --git a/test/bugfixes-test.sh b/test/bugfixes-test.sh
index b47b11e..05bcfc1 100755
--- a/test/bugfixes-test.sh
+++ b/test/bugfixes-test.sh
@@ -54,6 +54,10 @@ num=447 # Problem only visible in Valgrind
filename=`prep_file $num`
$binpath/exiv2 -pi $filename
+num=460
+filename=`prep_file $num`
+$binpath/exiv2 -pt $filename
+
num=479
filename=`prep_file $num`
$binpath/exiv2 -pt $filename
diff --git a/test/data/bugfixes-test.out b/test/data/bugfixes-test.out
index f1b3286..3e9451f 100644
--- a/test/data/bugfixes-test.out
+++ b/test/data/bugfixes-test.out
@@ -210,6 +210,12 @@ Warning: Exif tag 0x9286 has invalid Exif type 14; using 7 (undefined).
Iptc.Application2.Caption String 0
Iptc.Application2.DateCreated Date 8 2005-08-09
Iptc.Application2.TimeCreated Time 11 01:28:31-07:00
+------> Bug 460 <-------
+Exif.Image.XPTitle Byte 40 Titel und ähnliches
+Exif.Image.XPComment Byte 46 And a standard comment
+Exif.Image.XPAuthor Byte 44 Українська (Russian?)
+Exif.Image.XPKeywords Byte 30 עברית (Hebrew)
+Exif.Image.XPSubject Byte 32 తెలుగు (Telugu)
------> Bug 479 <-------
Warning: IFD0: Pointer to next IFD is out of bounds; ignored.
Exif.Image.ImageWidth Short 1 3173
diff --git a/test/data/exiv2-bug460.jpg b/test/data/exiv2-bug460.jpg
new file mode 100644
index 0000000..d205de8
Binary files /dev/null and b/test/data/exiv2-bug460.jpg differ
--
exiv2 packaging
More information about the pkg-kde-commits
mailing list