[SCM] exiv2 packaging branch, master, updated. debian/0.25-3.1-3734-gdcbc29a

Maximiliano Curia maxy at moszumanska.debian.org
Thu Jul 13 17:42:02 UTC 2017


Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/exiv2.git;a=commitdiff;h=c137bf6

The following commit has been merged in the master branch:
commit c137bf6afa44a8e621a360bf6a4a9cfd2fddd143
Author: Andreas Huggel <ahuggel at gmx.net>
Date:   Sun Oct 31 09:09:17 2010 +0000

    #727: Fixed -g option to print multiple matches.
---
 src/actions.cpp | 79 ++++++++++-----------------------------------------------
 src/actions.hpp |  4 +--
 2 files changed, 16 insertions(+), 67 deletions(-)

diff --git a/src/actions.cpp b/src/actions.cpp
index 4a62aff..dab7ab4 100644
--- a/src/actions.cpp
+++ b/src/actions.cpp
@@ -481,11 +481,10 @@ namespace Action {
 
     int Print::printList()
     {
-        int rc = 0;
         if (!Exiv2::fileExists(path_, true)) {
             std::cerr << path_
                       << ": " << _("Failed to open the file
");
-            rc = -1;
+            return -1;
         }
         Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path_);
         assert(image.get() != 0);
@@ -497,71 +496,9 @@ namespace Action {
         if (Params::instance().printItems_ == 0) {
             Params::instance().printItems_ = Params::prKey | Params::prType | Params::prCount | Params::prTrans;
         }
-        if (!Params::instance().keys_.empty()) {
-            for (Params::Keys::const_iterator key = Params::instance().keys_.begin();
-                 key != Params::instance().keys_.end(); ++key) {
-                rc |= grepTag(*key, image.get());
-            }
-        }
-        else {
-            rc = printMetadata(image.get());
-        }
-        return rc;
+        return printMetadata(image.get());
     } // Print::printList
 
-    int Print::grepTag(const std::string& key, const Exiv2::Image* image)
-    {
-        int rc = 0;
-        if (key.empty()) return rc;
-        switch (key[0]) {
-        case 'E':
-            if (Params::instance().printTags_ & Exiv2::mdExif) {
-                Exiv2::ExifKey ek(key);
-                const Exiv2::ExifData& exifData = image->exifData();
-                Exiv2::ExifData::const_iterator md = exifData.findKey(ek);
-                if (md != exifData.end()) printMetadatum(*md, image);
-                if (exifData.empty()) {
-                    if (Params::instance().verbose_) {
-                        std::cerr << path_ << ": " << _("No Exif data found in the file
");
-                    }
-                    rc = -3;
-                }
-            }
-            break;
-        case 'I':
-            if (Params::instance().printTags_ & Exiv2::mdIptc) {
-                Exiv2::IptcKey ik(key);
-                const Exiv2::IptcData& iptcData = image->iptcData();
-                Exiv2::IptcData::const_iterator md = iptcData.findKey(ik);
-                if (md != iptcData.end()) printMetadatum(*md, image);
-                if (iptcData.empty()) {
-                    if (Params::instance().verbose_) {
-                        std::cerr << path_ << ": " << _("No IPTC data found in the file
");
-                    }
-                    rc = -3;
-                }
-            }
-            break;
-        case 'X':
-            if (Params::instance().printTags_ & Exiv2::mdXmp) {
-                Exiv2::XmpKey xk(key);
-                const Exiv2::XmpData& xmpData = image->xmpData();
-                Exiv2::XmpData::const_iterator md = xmpData.findKey(xk);
-                if (md != xmpData.end()) printMetadatum(*md, image);
-                if (xmpData.empty()) {
-                    if (Params::instance().verbose_) {
-                        std::cerr << path_ << ": " << _("No XMP data found in the file
");
-                    }
-                    rc = -3;
-                }
-            }
-            break;
-        default:
-            throw Exiv2::Error(1, std::string(_("Invalid key")) + " `" + key + "'");
-        }
-        return rc;
-    } // Print::grepTag
-
     int Print::printMetadata(const Exiv2::Image* image)
     {
         int rc = 0;
@@ -607,8 +544,20 @@ namespace Action {
         return rc;
     } // Print::printMetadata
 
+    bool Print::grepTag(const std::string& key)
+    {
+        if (Params::instance().keys_.empty()) return true;
+        for (Params::Keys::const_iterator k = Params::instance().keys_.begin();
+             k != Params::instance().keys_.end(); ++k) {
+            if (*k == key) return true;
+        }
+        return false;
+    }
+
     void Print::printMetadatum(const Exiv2::Metadatum& md, const Exiv2::Image* pImage)
     {
+        if (!grepTag(md.key())) return;
+
         if (   Params::instance().unknown_
             && md.tagName().substr(0, 2) == "0x") {
             return;
diff --git a/src/actions.hpp b/src/actions.hpp
index b8aff91..14bf63e 100644
--- a/src/actions.hpp
+++ b/src/actions.hpp
@@ -170,8 +170,8 @@ namespace Action {
         int printSummary();
         //! Print Exif, IPTC and XMP metadata in user defined format
         int printList();
-        //! Print info for an individual tag specified by its key in a user defined format
-        int grepTag(const std::string& key, const Exiv2::Image* image);
+        //! Return true if key should be printed, else false
+        bool grepTag(const std::string& key);
         //! Print all metadata in a user defined format
         int printMetadata(const Exiv2::Image* image);
         //! Print a metadatum in a user defined format

-- 
exiv2 packaging



More information about the pkg-kde-commits mailing list