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

Maximiliano Curia maxy at moszumanska.debian.org
Thu Jul 13 17:35:57 UTC 2017


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

The following commit has been merged in the master branch:
commit ee73fc397d59ba71eaf73e7a93c2f63c4ba0bf0e
Author: Andreas Huggel <ahuggel at gmx.net>
Date:   Mon Jan 26 16:19:22 2004 +0000

    Added exifprint utility
---
 src/exifprint.cpp | 168 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/exifprint.hpp | 146 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 314 insertions(+)

diff --git a/src/exifprint.cpp b/src/exifprint.cpp
new file mode 100644
index 0000000..db87ec9
--- /dev/null
+++ b/src/exifprint.cpp
@@ -0,0 +1,168 @@
+// ***************************************************************** -*- C++ -*-
+/*
+ * Copyright (C) 2004 Andreas Huggel <ahuggel at gmx.net>
+ * 
+ * This program is part of the Exiv2 distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+/*
+  Author(s): Andreas Huggel (ahu) <ahuggel at gmx.net>
+  History:
+   26-Jan-04, ahu: created
+
+  RCS information
+   $Name:  $
+   $Revision: 1.1 $
+ */
+// *****************************************************************************
+// included header files
+#include "exifprint.hpp"
+#include "tags.hpp"
+#include "exif.hpp"
+#include "utils.hpp"
+
+// + standard includes
+#include <iostream>
+#include <iomanip>
+
+#include <cstring>
+
+using namespace Exif;
+
+// *****************************************************************************
+// Main
+int main(int argc, char* const argv[])
+{
+    // Handle command line arguments
+    Params& params = Params::instance();
+    if (params.getopt(argc, argv)) {
+        params.usage();
+        return 1;
+    }
+    if (params.help_) {
+        params.help();
+        return 0;
+    }
+    if (params.version_) {
+        params.version();
+        return 0;
+    }
+
+    ExifData exifData;
+    int rc = exifData.read(argv[1]);
+
+    if (rc == 0) {
+        ExifData::const_iterator beg = exifData.begin();
+        ExifData::const_iterator end = exifData.end();
+        ExifData::const_iterator i = beg;
+        for (; i != end; ++i) {
+            std::cout << "0x" 
+                      << std::hex << std::setw(4) << std::setfill('0') << std::right
+                      << i->tag() << " " 
+                      << std::setw(27) << std::setfill(' ') << std::left
+//                      << i->tagName() << " "
+                      << i->key() << " "
+                      << std::setw(17) << std::setfill(' ') << std::left
+                      << i->typeName() << " "
+                      << std::dec << std::setw(3) 
+                      << std::setfill(' ') << std::right
+                      << i->count() << "   " 
+                      << std::dec << i->value() << "
";
+        }
+    }
+
+    return rc;
+}
+
+// *****************************************************************************
+// class Params
+Params* Params::instance_ = 0;
+
+Params& Params::instance()
+{
+    if (0 == instance_) {
+        instance_ = new Params;
+    }
+    return *instance_;
+}
+
+void Params::version(std::ostream& os) const
+{
+    os << "Exifprint 0.1

" 
+       << "Copyright (C) 2004 Andreas Huggel <ahuggel at gmx.net>
"; 
+}
+
+void Params::usage(std::ostream& os) const
+{
+    os << "Usage: " << progname() 
+       << " [ -hv ] file ...

"
+       << "Print the Exif metadata of the image files.
";
+}
+
+void Params::help(std::ostream& os) const
+{
+    usage(os);
+    os << "
Options:
"
+       << "   -h      Display this help and exit.
"
+       << "   -v      Show the program version and exit.

";
+}
+
+int Params::option(int opt, const std::string& optarg, int optopt)
+{
+    int rc = 0;
+    switch (opt) {
+    case 'h':
+        help_ = true;
+        break;
+    case 'v':
+        version_ = true;
+        break;
+    case ':':
+        std::cerr << progname() << ": Option -" << static_cast<char>(optopt) 
+                  << " requires an argument
";
+        rc = 1;
+        break;
+    case '?':
+        std::cerr << progname() << ": Unrecognized option -" 
+                  << static_cast<char>(optopt) << "
";
+        rc = 1;
+        break;
+    default:
+        std::cerr << progname() 
+                  << ": getopt returned unexpected character code " 
+                  << std::hex << opt << "
";
+        rc = 1;
+    }
+    return rc;
+}
+
+int Params::nonoption(const std::string& argv)
+{
+    files_.push_back(argv);
+    return 0;
+}
+
+int Params::getopt(int argc, char* const argv[])
+{
+    int rc = Util::Getopt::getopt(argc, argv, optstring_);
+    // Further consistency checks
+    if (help_ || version_) return 0;
+    if (0 == files_.size()) {
+        std::cerr << progname() << ": At least one file is required
";
+        rc = 1;
+    }
+    return rc;
+}
diff --git a/src/exifprint.hpp b/src/exifprint.hpp
new file mode 100644
index 0000000..f78abc3
--- /dev/null
+++ b/src/exifprint.hpp
@@ -0,0 +1,146 @@
+// ***************************************************************** -*- C++ -*-
+/*
+ * Copyright (C) 2004 Andreas Huggel <ahuggel at gmx.net>
+ * 
+ * This program is part of the Exiv2 distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+/*!
+  @file    exifprint.hpp
+  @brief   Utility to print Exif data of input files to standard out
+  @version $Name:  $ $Revision: 1.1 $
+  @author  Andreas Huggel (ahu)
+           <a href="mailto:ahuggel at gmx.net">ahuggel at gmx.net</a>
+  @date    26-Jan-04, ahu: created
+ */
+#ifndef EXIFPRINT_HPP_
+#define EXIFPRINT_HPP_
+
+// *****************************************************************************
+// included header files
+#include "utils.hpp"
+
+// + standard includes
+#include <string>
+#include <vector>
+#include <iostream>
+
+// *****************************************************************************
+// namespace extensions
+
+// *****************************************************************************
+// class declarations
+
+// *****************************************************************************
+// class definitions
+/*!
+  @brief Implements the command line handling for the program.
+
+  Derives from Util::Getopt to use the command line argument parsing
+  functionalty provided there. This class is implemented as a Singleton,
+  i.e., there is only one global instance of it, which can be accessed
+  from everywhere.
+
+  <b>Usage example:</b> <br>
+  @code
+  #include "exifprint.hpp"
+
+  int main(int argc, char* const argv[])
+  {
+      Params& params = Params::instance();
+      if (params.getopt(argc, argv)) {
+          params.usage();
+          return 1;
+      }
+      if (params.help_) {
+          params.help();
+          return 0;
+      }
+      if (params.version_) {
+          params.version();
+          return 0;
+      }
+
+      // do something useful here...
+
+      return 0;
+  }
+  @endcode
+ */
+class Params : public Util::Getopt {
+private:
+    std::string optstring_;
+
+public:
+    /*!
+      @brief Controls all access to the global Params instance.
+      
+      @return Reference to the global Params instance.
+    */
+    static Params& instance();
+
+    bool help_;                         //!< Help option flag.
+    bool version_;                      //!< Version option flag.
+
+    //! Container to store filenames.
+    typedef std::vector<std::string> Files;
+
+    Files files_;                       //!< List of non-option arguments.
+
+private:
+    /*!
+      @brief Default constructor. Note that optstring_ is initialized here.
+             Private to force instantiation through instance().
+     */
+    Params() : optstring_(":hv"),
+               help_(false), 
+               version_(false) {}
+
+    //! Prevent copy-construction: not implemented.
+    Params(const Params& rhs);
+
+    //! Pointer to the global Params object.
+    static Params* instance_;
+
+public:
+    /*!
+      @brief Call Getopt::getopt() with optstring, perform consistency
+             checks after all command line arguments are parsed.
+
+      @param argc Argument count as passed to main() on  program invocation.
+      @param argv Argument array as passed to main() on  program invocation.
+
+      @return 0 if successful, >0 in case of errors.
+     */
+    int getopt(int argc, char* const argv[]);
+
+    //! Handle options and their arguments.
+    virtual int option(int opt, const std::string& optarg, int optopt);
+
+    //! Handle non-option parameters.
+    virtual int nonoption(const std::string& argv);
+
+    //! Print a minimal usage note to an output stream.
+    void usage(std::ostream& os =std::cout) const;
+
+    //! Print further usage explanations to an output stream.
+    void help(std::ostream& os =std::cout) const;
+
+    //! Print version information to an output stream.
+    void version(std::ostream& os =std::cout) const;
+};
+
+#endif                                  // #ifndef EXIFPRINT_HPP_

-- 
exiv2 packaging



More information about the pkg-kde-commits mailing list