[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