[SCM] exiv2 packaging branch, master, updated. debian/0.25-3.1-3734-gdcbc29a
Maximiliano Curia
maxy at moszumanska.debian.org
Thu Jul 13 17:44:47 UTC 2017
Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/exiv2.git;a=commitdiff;h=faf5117
The following commit has been merged in the master branch:
commit faf51171d0360cfd019bd8d1aeafe9aacdb7b466
Author: Robin Mills <robin at clanmills.com>
Date: Sun Jan 11 17:24:13 2015 +0000
#1024. Thank you, Thomas for this very useful contribution.
---
config/config.h.in | 3 +
config/config.mk.in | 2 +-
config/configure.ac | 2 +-
include/exiv2/exiv2.hpp | 2 +
include/exiv2/exv_msvc-webready.h | 7 +
include/exiv2/exv_msvc.h | 9 +-
include/exiv2/version.hpp | 9 +-
src/actions.cpp | 12 +-
src/exiv2.1 | 34 ++---
src/exiv2.cpp | 91 +++++++----
src/exiv2app.hpp | 7 +-
src/version.cpp | 310 +++++++++++++++++++++++++++++++-------
12 files changed, 379 insertions(+), 109 deletions(-)
diff --git a/config/config.h.in b/config/config.h.in
index 4524dfb..af05d4f 100644
--- a/config/config.h.in
+++ b/config/config.h.in
@@ -49,6 +49,9 @@
/* Define to 1 if you have the <libintl.h> header file. */
#undef HAVE_LIBINTL_H
+/* Define to 1 if you have the <regex.h> header file. */
+#define HAVE_REGEX 1
+
/* 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 2ee02c1..e396b0b 100644
--- a/config/config.mk.in
+++ b/config/config.mk.in
@@ -65,7 +65,7 @@ endif
CXXCPP = @CXXCPP@
# Preprocessor flags
-CPPFLAGS = -I../src -I../include/ -I../include/exiv2 @CPPFLAGS@ -DEXV_LOCALEDIR=\"$(localedir)\"
+CPPFLAGS = -I../src -I../include/ -I../include/exiv2 @CPPFLAGS@ -I/usr/include -DEXV_LOCALEDIR=\"$(localedir)\"
ifeq ($(COMMERCIAL_VERSION),yes)
CPPFLAGS += -DEXV_COMMERCIAL_VERSION=1
endif
diff --git a/config/configure.ac b/config/configure.ac
index ee8b6f9..ff752bb 100644
--- a/config/configure.ac
+++ b/config/configure.ac
@@ -56,7 +56,7 @@ AM_ICONV
# Checks for header files.
# ---------------------------------------------------------------------------
AC_HEADER_STDC
-AC_CHECK_HEADERS([libintl.h locale.h malloc.h stdint.h stdlib.h string.h unistd.h sys/mman.h utime.h])
+AC_CHECK_HEADERS([libintl.h locale.h malloc.h stdint.h stdlib.h string.h unistd.h sys/mman.h utime.h regex.h])
# ---------------------------------------------------------------------------
# Checks for typedefs, structures, and compiler characteristics.
diff --git a/include/exiv2/exiv2.hpp b/include/exiv2/exiv2.hpp
index 3d42f48..47e5b93 100644
--- a/include/exiv2/exiv2.hpp
+++ b/include/exiv2/exiv2.hpp
@@ -68,4 +68,6 @@
#include "xmp.hpp"
#include "xmpsidecar.hpp"
+#include <vector>
+
#endif // #ifndef EXIV2_HPP_
diff --git a/include/exiv2/exv_msvc-webready.h b/include/exiv2/exv_msvc-webready.h
index ef2f0c3..9d2e700 100644
--- a/include/exiv2/exv_msvc-webready.h
+++ b/include/exiv2/exv_msvc-webready.h
@@ -17,6 +17,10 @@
// stdint.h was introduced with DevStudio 2010
#define EXV_HAVE_STDINT_H 1
#endif
+#if _MSC_VER >= 1900
+#define MSDEV_2014 1
+#elif _MSC_VER >= 1800
+#define MSDEV_2013 1
#if _MSC_VER >= 1700
#define MSDEV_2012 1
#elif _MSC_VER >= 1600
@@ -33,6 +37,9 @@
#define HAVE_NTOHLL 1
#endif
+/* Define to 1 if you have the <regex.h> header file. */
+// #define EXV_HAVE_REGEX 1
+
/* Define to 1 if you have the <process.h> header file. */
#define EXV_HAVE_PROCESS_H 1
diff --git a/include/exiv2/exv_msvc.h b/include/exiv2/exv_msvc.h
index 1f1312f..39a14cd 100644
--- a/include/exiv2/exv_msvc.h
+++ b/include/exiv2/exv_msvc.h
@@ -17,7 +17,11 @@
// stdint.h was introduced with DevStudio 2010
#define EXV_HAVE_STDINT_H 1
#endif
-#if _MSC_VER >= 1700
+#if _MSC_VER >= 1900
+#define MSDEV_2014 1
+#elif _MSC_VER >= 1800
+#define MSDEV_2013 1
+#elif _MSC_VER >= 1700
#define MSDEV_2012 1
#elif _MSC_VER >= 1600
#define MSDEV_2010 1
@@ -33,6 +37,9 @@
#define HAVE_NTOHLL 1
#endif
+/* Define to 1 if you have the <regex.h> header file. */
+// #define EXV_HAVE_REGEX 1
+
/* Define to 1 if you have the <process.h> header file. */
#define EXV_HAVE_PROCESS_H 1
diff --git a/include/exiv2/version.hpp b/include/exiv2/version.hpp
index 8b5b716..4417762 100644
--- a/include/exiv2/version.hpp
+++ b/include/exiv2/version.hpp
@@ -36,6 +36,13 @@
// included header files
// + standard includes
#include <string>
+#include <vector>
+#if EXV_HAVE_REGEX
+#include <regex.h>
+typedef std::vector<regex_t> exv_grep_keys_t ;
+#else
+typedef std::vector<std::string> exv_grep_keys_t ;
+#endif
/*!
@brief %Exiv2 MAJOR version number of the library used at compile-time.
@@ -180,7 +187,7 @@ namespace Exiv2 {
// dumpLibraryInfo is general purpose and not in the Exiv2 namespace
// used by exiv2 test suite to inspect libraries loaded at run-time
-EXIV2API void dumpLibraryInfo(std::ostream& os);
+EXIV2API void dumpLibraryInfo(std::ostream& os,const exv_grep_keys_t& keys);
#endif // VERSION_HPP_
diff --git a/src/actions.cpp b/src/actions.cpp
index 2a8295b..7e95358 100644
--- a/src/actions.cpp
+++ b/src/actions.cpp
@@ -559,10 +559,14 @@ namespace Action {
bool Print::grepTag(const std::string& key)
{
bool result=Params::instance().keys_.empty();
- if (!result)
- for (Params::Keys::const_iterator k = Params::instance().keys_.begin();
- !result && k != Params::instance().keys_.end(); ++k) {
- result = key.find(*k) != std::string::npos;
+ for (Params::Keys::const_iterator k = Params::instance().keys_.begin();
+ !result && k != Params::instance().keys_.end(); ++k)
+ {
+#if EXV_HAVE_REGEX
+ result = regexec( &(*k), key.c_str(), 0, NULL, REG_NOTBOL | REG_NOTEOL) == 0 ;
+#else
+ result = key.find(*k) != std::string::npos;
+#endif
}
return result ;
}
diff --git a/src/exiv2.1 b/src/exiv2.1
index 791cd63..14be208 100644
--- a/src/exiv2.1
+++ b/src/exiv2.1
@@ -3,7 +3,7 @@
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
-.TH EXIV2 1 "Nov 11, 2012"
+.TH EXIV2 1 "Jan 10, 2015"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@@ -129,7 +129,7 @@ Show the program version and exit.
When
B\-V
P is combined with
B\-v
P (Verbose version), build information
is printed to standard output along with a list of shared libraries which
have been loaded into memory. Verbose version is supported on Windows
-(both MSVC and Cygwin builds), MacOSX and Linux and is provided
+(MSVC, Cygwin and MinGW builds), MacOSX and Linux and is provided
for test and debugging.
.TP
.B \-v
@@ -152,8 +152,21 @@ Show large binary values (default is to suppress them).
Show unknown tags (default is to suppress tags which don't have a name).
.TP
.B \-g
Ikey
P
-Only output info for this Exiv2 key (grep). Multiple
B\-g
P options
-can be used to grep info for several keys.
+Only output info for this Exiv2 key (grep).
+.br
+Multiple
B\-g
P options
+can be used to grep info for several keys. This option uses the system
+regular expression engine: see man 3 regex. Platforms which do not support
+regex use key for a substring match. You can determine the availability of regex
+using the command: exiv2 -v -V -g have_regex
+
+.nf
+exiv2 \-g Date \-pt R.jpg
+Exif.Image.DateTime Ascii 20 2012:08:07 16:01:05
+Exif.Photo.DateTimeOriginal Ascii 20 2011:09:18 16:25:48
+Exif.Photo.DateTimeDigitized Ascii 20 2011:09:18 16:25:48
+.fi
+
.TP
.B \-n
Ienc
P
Charset to use to decode Exif Unicode user comments.
Ienc
P is
@@ -294,19 +307,6 @@ with the 'print' option
B\-pp
P.
X : Extract metadata to an XMP sidecar file <file>.xmp. The remaining
extract targets determine what metadata to extract to the sidecar
file. Possible are Exif, IPTC and XMP and the default is all of these.
-
-.TP
-.B \-g
Imatch
P
-Report only keys which match. This is sub-string match and not grep, although
-the
B\-g
P option is intended to help you remember this as grep. The match is case-sensitive.
-.br
-.sp 1
-.nf
-exiv2 \-g Date \-pt R.jpg
-Exif.Image.DateTime Ascii 20 2012:08:07 16:01:05
-Exif.Photo.DateTimeOriginal Ascii 20 2011:09:18 16:25:48
-Exif.Photo.DateTimeDigitized Ascii 20 2011:09:18 16:25:48
-.fi
.sp 1
.TP
.B \-r
Ifmt
P
diff --git a/src/exiv2.cpp b/src/exiv2.cpp
index 97ceaeb..6ac6662 100644
--- a/src/exiv2.cpp
+++ b/src/exiv2.cpp
@@ -48,6 +48,10 @@ EXIV2_RCSID("@(#) $Id$")
#include <cassert>
#include <cctype>
+#if EXV_HAVE_REGEX
+#include <regex.h>
+#endif
+
#if defined(__MINGW32__) || defined(__MINGW64__)
# ifndef __MINGW__
# define __MINGW__
@@ -149,7 +153,7 @@ int main(int argc, char* const argv[])
return 0;
}
if (params.version_) {
- params.version(params.verbose_);
+ params.version(params.verbose_);
return 0;
}
@@ -210,8 +214,9 @@ void Params::version(bool verbose,std::ostream& os) const
{
bool b64 = sizeof(void*)==8;
const char* sBuild = b64 ? "(64 bit build)" : "(32 bit build)" ;
- os << EXV_PACKAGE_STRING << " " << Exiv2::versionNumberHexString() << " " << sBuild << "
"
- << _("Copyright (C) 2004-2013 Andreas Huggel.
")
+ os << EXV_PACKAGE_STRING << " " << Exiv2::versionNumberHexString() << " " << sBuild << "
";
+ if ( Params::instance().keys_.empty() ) {
+ os << _("Copyright (C) 2004-2013 Andreas Huggel.
")
<< "
"
<< _("This program is free software; you can redistribute it and/or
"
"modify it under the terms of the GNU General Public License
"
@@ -227,8 +232,9 @@ void Params::version(bool verbose,std::ostream& os) const
"License along with this program; if not, write to the Free
"
"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
"
"Boston, MA 02110-1301 USA
");
+ }
- if ( verbose ) dumpLibraryInfo(os);
+ if ( verbose ) dumpLibraryInfo(os,Params::instance().keys_);
}
void Params::usage(std::ostream& os) const
@@ -352,7 +358,7 @@ int Params::option(int opt, const std::string& optarg, int optopt)
case 'u': unknown_ = false; break;
case 'f': force_ = true; fileExistsPolicy_ = overwritePolicy; break;
case 'F': force_ = true; fileExistsPolicy_ = renamePolicy; break;
- case 'g': keys_.push_back(optarg); printMode_ = pmList; break;
+ case 'g': rc = evalKey(optarg); printMode_ = pmList; break;
case 'n': charset_ = optarg; break;
case 'r': rc = evalRename(opt, optarg); break;
case 't': rc = evalRename(opt, optarg); break;
@@ -410,6 +416,37 @@ int Params::setLogLevel(const std::string& optarg)
return rc;
} // Params::setLogLevel
+int Params::evalKey( const std::string& optarg)
+{
+ int result=0;
+#if EXV_HAVE_REGEX
+ // try to compile a reg-exp from the input argument and store it in the vector
+ const size_t i = keys_.size();
+ keys_.resize(i + 1);
+ regex_t *pRegex = &keys_[i];
+ int errcode = regcomp( pRegex, optarg.c_str(), REG_NOSUB);
+
+ // there was an error compiling the regexp
+ if( errcode ) {
+ size_t length = regerror (errcode, pRegex, NULL, 0);
+ char *buffer = new char[ length];
+ regerror (errcode, pRegex, buffer, length);
+ std::cerr << progname()
+ << ": " << _("Option") << " -g: "
+ << _("Invalid regexp") << " \"" << optarg << "\": " << buffer << "
";
+
+ // free the memory and drop the regexp
+ delete[] buffer;
+ regfree( pRegex);
+ keys_.resize(i);
+ result=1;
+ }
+#else
+ keys_.push_back(optarg);
+#endif
+ return result;
+} // Params::evalKey
+
int Params::evalRename(int opt, const std::string& optarg)
{
int rc = 0;
@@ -1036,29 +1073,29 @@ namespace {
catch (const Exiv2::AnyError& error) {
std::cerr << _("-M option") << " " << error << "
";
return false;
- }
+ }
} // parseCmdLines
-#if defined(_MSC_VER) || defined(__MINGW__)
+#if defined(_MSC_VER) || defined(__MINGW__)
static std::string formatArg(const char* arg)
{
- std::string result = "";
- char b = ' ' ;
- char e = '\'; std::string E = std::string("\");
- char q = '\''; std::string Q = std::string("'" );
- bool qt = false;
- char* a = (char*) arg;
- while ( *a ) {
- if ( *a == b || *a == e || *a == q ) qt = true;
- if ( *a == q ) result += E;
- if ( *a == e ) result += E;
- result += std::string(a,1);
- a++ ;
- }
- if (qt) result = Q + result + Q;
-
- return result;
- }
+ std::string result = "";
+ char b = ' ' ;
+ char e = '\'; std::string E = std::string("\");
+ char q = '\''; std::string Q = std::string("'" );
+ bool qt = false;
+ char* a = (char*) arg;
+ while ( *a ) {
+ if ( *a == b || *a == e || *a == q ) qt = true;
+ if ( *a == q ) result += E;
+ if ( *a == e ) result += E;
+ result += std::string(a,1);
+ a++ ;
+ }
+ if (qt) result = Q + result + Q;
+
+ return result;
+ }
#endif
bool parseLine(ModifyCmd& modifyCmd, const std::string& line, int num)
@@ -1076,9 +1113,9 @@ namespace {
if ( cmdStart == std::string::npos
|| cmdEnd == std::string::npos
|| keyStart == std::string::npos) {
- std::string cmdLine ;
-#if defined(_MSC_VER) || defined(__MINGW__)
- for ( int i = 1 ; i < __argc ; i++ ) { cmdLine += std::string(" ") + formatArg(__argv[i]) ; }
+ std::string cmdLine ;
+#if defined(_MSC_VER) || defined(__MINGW__)
+ for ( int i = 1 ; i < __argc ; i++ ) { cmdLine += std::string(" ") + formatArg(__argv[i]) ; }
#endif
throw Exiv2::Error(1, Exiv2::toString(num)
+ ": " + _("Invalid command line:") + cmdLine);
diff --git a/src/exiv2app.hpp b/src/exiv2app.hpp
index 62a88fc..5cd3b1a 100644
--- a/src/exiv2app.hpp
+++ b/src/exiv2app.hpp
@@ -40,6 +40,10 @@
#include <set>
#include <iostream>
+#if EXV_HAVE_REGEX
+#include <regex.h>
+#endif
+
// *****************************************************************************
// class definitions
@@ -125,7 +129,7 @@ public:
//! Container for preview image numbers
typedef std::set<int> PreviewNumbers;
//! Container for keys
- typedef std::vector<std::string> Keys;
+ typedef exv_grep_keys_t Keys;
/*!
@brief Controls all access to the global Params instance.
@@ -261,6 +265,7 @@ private:
//! @name Helpers
//@{
int setLogLevel(const std::string& optarg);
+ int evalKey( const std::string& optarg);
int evalRename(int opt, const std::string& optarg);
int evalAdjust(const std::string& optarg);
int evalYodAdjust(const Yod& yod, const std::string& optarg);
diff --git a/src/version.cpp b/src/version.cpp
index d1f0fdc..0594324 100644
--- a/src/version.cpp
+++ b/src/version.cpp
@@ -62,8 +62,9 @@ EXIV2_RCSID("@(#) $Id$")
// + standard includes
#include <iomanip>
#include <sstream>
-
-
+#include <string>
+#include <vector>
+#include <stdio.h>
namespace Exiv2 {
int versionNumber()
@@ -97,9 +98,6 @@ namespace Exiv2 {
}
} // namespace Exiv2
-#include <string>
-#include <vector>
-#include <stdio.h>
using namespace std;
typedef vector<string> string_v;
typedef string_v::iterator string_i;
@@ -146,49 +144,73 @@ typedef string_v::iterator string_i;
#endif
#endif
-EXIV2API void dumpLibraryInfo(std::ostream& os)
+static void output(std::ostream& os,const exv_grep_keys_t& keys,const char* name,const std::string& value)
+{
+ bool bPrint = keys.empty();
+ for( exv_grep_keys_t::const_iterator k = keys.begin();
+ !bPrint && k != keys.end() ; ++k
+ ) {
+#if EXV_HAVE_REGEX
+ bPrint = ( 0 == regexec( &(*k), name , 0, NULL, REG_NOTBOL | REG_NOTEOL)
+ || 0 == regexec( &(*k), value.c_str(), 0, NULL, REG_NOTBOL | REG_NOTEOL)
+ );
+#else
+ bPrint = std::string(name).find(*k) != std::string::npos || value.find(*k) != std::string::npos;
+#endif
+ }
+ if ( bPrint ) os << name << "=" << value << endl;
+}
+
+static void output(std::ostream& os,const exv_grep_keys_t& keys,const char* name,int value)
{
- string_v libs; // libs[0] == executable
+ std::ostringstream stringStream;
+ stringStream << value;
+ output(os,keys,name,stringStream.str());
+}
- int bits = 8*sizeof(void*);
-#if defined(_DEBUG) || defined(DEBUG)
- int debug=1;
+ void dumpLibraryInfo(std::ostream& os,const exv_grep_keys_t& keys)
+{
+ string_v libs; // libs[0] == executable
+
+ int bits = 8*sizeof(void*);
+#if defined(_DEBUG) || defined(DEBUG)
+ int debug=1;
#else
- int debug=0;
+ int debug=0;
#endif
-#if defined(DLL_EXPORT) || defined(EXV_HAVE_DLL)
- int dll=1;
+#if defined(DLL_EXPORT) || defined(EXV_HAVE_DLL)
+ int dll=1;
#else
- int dll=0;
+ int dll=0;
#endif
- const char* compiler =
-#if defined(_MSC_VER)
- "MSVC" ;
+ const char* compiler =
+#if defined(_MSC_VER)
+ "MSVC" ;
#ifndef __VERSION__
- char version[20];
- sprintf(version,"%d.%02d",(_MSC_VER-600)/100,_MSC_VER%100);
+ char version[20];
+ sprintf(version,"%d.%02d",(_MSC_VER-600)/100,_MSC_VER%100);
#define __VERSION__ version
#endif
#elif defined(__clang__)
- "Clang" ;
+ "Clang" ;
#elif defined(__GNUG__)
- "G++" ;
+ "G++" ;
#elif defined(__GNUC__)
- "GCC" ;
+ "GCC" ;
#elif defined(__SUNPRO_CC)
- "CC (oracle)";
+ "CC (oracle)";
#elif defined (__SUNPRO_C)
- "cc (oracle)";
+ "cc (oracle)";
#else
- "unknown" ;
+ "unknown" ;
#endif
#if defined(__SUNPRO_CC) || defined (__SUNPRO_C)
-#define __oracle__
+#define __oracle__
#endif
#ifndef __VERSION__
@@ -199,23 +221,170 @@ EXIV2API void dumpLibraryInfo(std::ostream& os)
#endif
#endif
- const char* platform =
+ const char* platform =
#if defined(__CYGWIN__)
- "cygwin";
+ "cygwin";
#elif defined(_MSC_VER)
- "windows";
+ "windows";
#elif defined(__APPLE__)
- "apple";
+ "apple";
#elif defined(__MINGW64__)
- "mingw64";
+ "mingw64";
#elif defined(__MINGW32__)
- "mingw32";
+ "mingw32";
#elif defined(__linux__)
- "linux";
+ "linux";
#else
- "unknown";
+ "unknown";
+#endif
+
+ int have_regex =0;
+ int have_gmtime_r =0;
+ int have_inttypes =0;
+ int have_libintl =0;
+ int have_lensdata =0;
+ int have_iconv =0;
+ int have_memory =0;
+ int have_memset =0;
+ int have_lstat =0;
+ int have_stdbool =0;
+ int have_stdint =0;
+ int have_stdlib =0;
+ int have_strlib =0;
+ int have_strchr =0;
+ int have_strerror =0;
+ int have_strerror_r =0;
+ int have_strings_h =0;
+ int have_strtol =0;
+ int have_mmap =0;
+ int have_munmap =0;
+ int have_sys_stat =0;
+ int have_timegm =0;
+ int have_unistd_h =0;
+ int have_sys_mman =0;
+ int have_libz =0;
+ int have_xmptoolkit =0;
+ int have_bool =0;
+ int have_strings =0;
+ int have_sys_types =0;
+ int have_unistd =0;
+
+#if EXV_HAVE_DECL_STRERROR_R
+ have_strerror_r=1;
+#endif
+
+#if EXV_HAVE_GMTIME_R
+ have_gmtime_r=1;
+#endif
+
+#if EXV_HAVE_INTTYPES_H
+ have_inttypes=1;
+#endif
+
+#if EXV_HAVE_LIBINTL_H
+ have_libintl=1;
+#endif
+
+#if EXV_HAVE_LENSDATA
+ have_lensdata=1;
+#endif
+
+#if EXV_HAVE_ICONV
+ have_iconv=1;
#endif
+#if EXV_HAVE_LIBINTL_H
+ have_libintl=1;
+#endif
+
+#if EXV_HAVE_REGEX
+ have_regex=1;
+#endif
+
+#if EXV_HAVE_MEMORY_H
+ have_memory=1;
+#endif
+
+#if EXV_HAVE_MEMSET
+ have_memset=1;
+#endif
+
+#if EXV_HAVE_LSTAT
+ have_lstat=1;
+#endif
+
+#if EXV_HAVE_STDBOOL_H
+ have_stdbool=1;
+#endif
+
+#if EXV_HAVE_STDINT_H
+ have_stdint=1;
+#endif
+
+#if EXV_HAVE_STDLIB_H
+ have_stdlib=1;
+#endif
+
+#if EXV_HAVE_STRCHR
+ have_strchr=1;
+#endif
+
+#if EXV_HAVE_STRERROR
+ have_strerror=1;
+#endif
+
+#if EXV_HAVE_STRERROR_R
+ have_strerror_r=1;
+#endif
+
+#if EXV_HAVE_STRINGS_H
+ have_strings=1;
+#endif
+
+#if EXV_HAVE_STRTOL
+ have_strtol=1;
+#endif
+
+#if EXV_HAVE_MMAP
+ have_mmap=1;
+#endif
+
+#if EXV_HAVE_MUNMAP
+ have_munmap=1;
+#endif
+
+#if EXV_HAVE_SYS_STAT_H
+ have_sys_stat=1;
+#endif
+
+#if EXV_HAVE_SYS_TYPES_H
+ have_sys_types=1;
+#endif
+
+#if EXV_HAVE_TIMEGM
+ have_timegm=1;
+#endif
+
+#if EXV_HAVE_UNISTD_H
+ have_unistd=1;
+#endif
+
+#if EXV_HAVE_SYS_MMAN_H
+ have_sys_mman=1;
+#endif
+
+#if HAVE_LIBZ
+ have_libz=1;
+#endif
+
+#if EXV_HAVE_XMP_TOOLKIT
+ have_xmptoolkit=1;
+#endif
+
+#if EXV_HAVE__BOOL
+ have_bool=1;
+#endif
+
#if defined(WIN32) || defined(__CYGWIN__) || defined(__MINGW__)
// enumerate loaded libraries and determine path to executable
HMODULE handles[200];
@@ -261,34 +430,63 @@ EXIV2API void dumpLibraryInfo(std::ostream& os)
pl = pl->next;
}
#endif
-
- os << "exiv2=" << Exiv2::versionString() << endl;
- os << "platform=" << platform << endl;
- os << "compiler=" << compiler << endl;
- os << "bits=" << bits << endl;
- os << "dll=" << dll << endl;
- os << "debug=" << debug << endl;
- os << "version=" << __VERSION__ << endl;
- os << "date=" << __DATE__ << endl;
- os << "time=" << __TIME__ << endl;
- os << "svn=" << SVN_VERSION << endl;
- os << "ssh=" << EXV_USE_SSH << endl;
+ output(os,keys,"exiv2",Exiv2::versionString());
+ output(os,keys,"platform" , platform );
+ output(os,keys,"compiler" , compiler );
+ output(os,keys,"bits" , bits );
+ output(os,keys,"dll" , dll );
+ output(os,keys,"debug" , debug );
+ output(os,keys,"version" , __VERSION__);
+ output(os,keys,"date" , __DATE__ );
+ output(os,keys,"time" , __TIME__ );
+ output(os,keys,"svn" , SVN_VERSION);
+ output(os,keys,"ssh" , EXV_USE_SSH);
#if EXV_USE_CURL == 1
- curl_version_info_data* vinfo = curl_version_info(CURLVERSION_NOW);
- os << "curlversion=" << vinfo->version << endl;
- os << "curlprotocols=";
- for (int i = 0; vinfo->protocols[i]; i++)
- os << vinfo->protocols[i] << " ";
- os << endl;
+ std::string curl_protocols;
+ curl_version_info_data* vinfo = curl_version_info(CURLVERSION_NOW);
+ for (int i = 0; vinfo->protocols[i]; i++) {
+ curl_protocols += vinfo->protocols[i];
+ curl_protocols += " " ;
+ }
+ output(os,keys,"curlprotocols=" ,curl_protocols);
#else
- os << "curl=" << EXV_USE_CURL << endl;
+ output(os,keys,"curl=" , EXV_USE_CURL);
#endif
- os << "id=" << "$Id$" << endl;
+ output(os,keys,"id" , "$Id$");
if ( libs.begin() != libs.end() ) {
- os << "executable=" << *libs.begin() << endl;
+ output(os,keys,"executable" ,*libs.begin());
for ( string_i lib = libs.begin()+1 ; lib != libs.end() ; lib++ )
- os << "library=" << *lib << endl;
+ output(os,keys,"library",*lib);
}
+
+ output(os,keys,"have_regex" ,have_regex );
+ output(os,keys,"have_strerror_r",have_strerror_r);
+ output(os,keys,"have_gmtime_r" ,have_gmtime_r );
+ output(os,keys,"have_inttypes" ,have_inttypes );
+ output(os,keys,"have_libintl" ,have_libintl );
+ output(os,keys,"have_lensdata" ,have_lensdata );
+ output(os,keys,"have_iconv" ,have_iconv );
+ output(os,keys,"have_memory" ,have_memory );
+ output(os,keys,"have_memset" ,have_memset );
+ output(os,keys,"have_lstat" ,have_lstat );
+ output(os,keys,"have_stdbool" ,have_stdbool );
+ output(os,keys,"have_stdint" ,have_stdint );
+ output(os,keys,"have_stdlib" ,have_stdlib );
+ output(os,keys,"have_strlib" ,have_strlib );
+ output(os,keys,"have_strchr" ,have_strchr );
+ output(os,keys,"have_strerror" ,have_strerror );
+ output(os,keys,"have_strerror_r",have_strerror_r);
+ output(os,keys,"have_strings_h" ,have_strings_h );
+ output(os,keys,"have_strtol" ,have_strtol );
+ output(os,keys,"have_mmap" ,have_mmap );
+ output(os,keys,"have_munmap" ,have_munmap );
+ output(os,keys,"have_sys_stat" ,have_sys_stat );
+ output(os,keys,"have_timegm" ,have_timegm );
+ output(os,keys,"have_unistd_h" ,have_unistd_h );
+ output(os,keys,"have_sys_mman" ,have_sys_mman );
+ output(os,keys,"have_libz" ,have_libz );
+ output(os,keys,"have_xmptoolkit",have_xmptoolkit);
+ output(os,keys,"have_bool" ,have_bool );
#if defined(__linux__)
dlclose(ph);
--
exiv2 packaging
More information about the pkg-kde-commits
mailing list