[SCM] exiv2 packaging branch, master, updated. debian/0.25-3.1-3734-gdcbc29a
Maximiliano Curia
maxy at moszumanska.debian.org
Thu Jul 13 17:37:06 UTC 2017
Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/exiv2.git;a=commitdiff;h=56a7b11
The following commit has been merged in the master branch:
commit 56a7b11072099ce6be3d8c162a6472d3ef422af7
Author: Andreas Huggel <ahuggel at gmx.net>
Date: Thu Apr 21 07:21:53 2005 +0000
Fixed situation where an Error with a confusing message was thrown. Added BasicIo::path(). Further code and doc clean-up.
---
src/basicio.cpp | 15 +++++++++++++--
src/basicio.hpp | 16 +++++++++++++---
src/error.cpp | 2 +-
src/image.cpp | 16 ++++++++--------
src/image.hpp | 16 +++++++++-------
src/iotest.cpp | 6 +++---
src/jpgimage.cpp | 20 ++++++++------------
src/jpgimage.hpp | 4 +---
8 files changed, 56 insertions(+), 39 deletions(-)
diff --git a/src/basicio.cpp b/src/basicio.cpp
index 4e15628..b09ec60 100644
--- a/src/basicio.cpp
+++ b/src/basicio.cpp
@@ -163,7 +163,7 @@ namespace Exiv2 {
throw Error(10, path_, "w+b", strError());
}
if (src.open() != 0) {
- throw Error(9, strError());
+ throw Error(9, src.path(), strError());
}
write(src);
src.close();
@@ -305,6 +305,10 @@ namespace Exiv2 {
return feof(fp_) != 0;
}
+ std::string FileIo::path() const
+ {
+ return path_;
+ }
MemIo::MemIo(const byte* data, long size)
{
@@ -349,7 +353,9 @@ namespace Exiv2 {
// Generic reopen to reset position to start
data_.clear();
idx_ = 0;
- if (src.open() != 0) throw Error(9, strError());
+ if (src.open() != 0) {
+ throw Error(9, src.path(), strError());
+ }
write(src);
src.close();
}
@@ -461,4 +467,9 @@ namespace Exiv2 {
return idx_ == data_.size();
}
+ std::string MemIo::path() const
+ {
+ return "MemIo";
+ }
+
} // namespace Exiv2
diff --git a/src/basicio.hpp b/src/basicio.hpp
index 71e64f9..24636c8 100644
--- a/src/basicio.hpp
+++ b/src/basicio.hpp
@@ -195,6 +195,12 @@ namespace Exiv2 {
//!Returns true if the IO position has reach the end, otherwise false.
virtual bool eof() const = 0;
/*!
+ @brief Return the path to the IO resource. Often used to form
+ comprehensive error messages where only a BasicIo instance is
+ available.
+ */
+ virtual std::string path() const =0;
+ /*!
@brief Returns a temporary data storage location. This is often
needed to rewrite an IO source.
@@ -404,12 +410,14 @@ namespace Exiv2 {
-1 if failure;
*/
virtual long size() const;
- //!Returns true if the file is open, otherwise false.
+ //! Returns true if the file is open, otherwise false.
virtual bool isopen() const;
- //!Returns 0 if the file is in a valid state, otherwise nonzero.
+ //! Returns 0 if the file is in a valid state, otherwise nonzero.
virtual int error() const;
- //!Returns true if the file position has reach the end, otherwise false.
+ //! Returns true if the file position has reach the end, otherwise false.
virtual bool eof() const;
+ //! Returns the path of the file
+ virtual std::string path() const;
/*!
@brief Returns a temporary data storage location. The actual type
returned depends upon the size of the file represented a FileIo
@@ -590,6 +598,8 @@ namespace Exiv2 {
virtual int error() const;
//!Returns true if the IO position has reach the end, otherwise false.
virtual bool eof() const;
+ //! Returns a dummy path, indicating that memory access is used
+ virtual std::string path() const;
/*!
@brief Returns a temporary data storage location. Currently returns
an empty MemIo object, but callers should not rely on this
diff --git a/src/error.cpp b/src/error.cpp
index 2d2768e..60111dd 100644
--- a/src/error.cpp
+++ b/src/error.cpp
@@ -52,7 +52,7 @@ namespace Exiv2 {
ErrMsg( 6, "Invalid key `%1'"), // %1=key
ErrMsg( 7, "Invalid tag name or ifdId `%1', ifdId %2"), // %1=tag name, %2=ifdId
ErrMsg( 8, "Value not set"),
- ErrMsg( 9, "Failed to open the data source: %1"), // %1=strerror
+ ErrMsg( 9, "%1: Failed to open the data source: %2"), // %1=path, %2=strerror
ErrMsg( 10, "%1: Failed to open file (%2): %3"), // %1=path, %2=mode, %3=strerror
ErrMsg( 11, "%1: The file contains data of an unknown image type"), // %1=path
ErrMsg( 12, "The memory contains data of an unknown image type"),
diff --git a/src/image.cpp b/src/image.cpp
index cd4a831..6459595 100644
--- a/src/image.cpp
+++ b/src/image.cpp
@@ -115,7 +115,7 @@ namespace Exiv2 {
Image::AutoPtr ImageFactory::open(const std::string& path)
{
BasicIo::AutoPtr io(new FileIo(path));
- Image::AutoPtr image(open(io));
+ Image::AutoPtr image = open(io); // may throw
if (image.get() == 0) throw Error(11, path);
return image;
}
@@ -123,20 +123,20 @@ namespace Exiv2 {
Image::AutoPtr ImageFactory::open(const byte* data, long size)
{
BasicIo::AutoPtr io(new MemIo(data, size));
- Image::AutoPtr image(open(io));
+ Image::AutoPtr image = open(io); // may throw
if (image.get() == 0) throw Error(12);
return image;
}
Image::AutoPtr ImageFactory::open(BasicIo::AutoPtr io)
{
+ if (io->open() != 0) {
+ throw Error(9, io->path(), strError());
+ }
Image::AutoPtr image;
- if (io->open() != 0) return image;
- IoCloser closer(*io);
Registry::const_iterator b = registry_->begin();
Registry::const_iterator e = registry_->end();
- for (Registry::const_iterator i = b; i != e; ++i)
- {
+ for (Registry::const_iterator i = b; i != e; ++i) {
if (i->second.isThisType(*io, false)) {
image = i->second.newInstance(io, false);
break;
@@ -155,7 +155,7 @@ namespace Exiv2 {
}
fileIo->close();
BasicIo::AutoPtr io(fileIo);
- Image::AutoPtr image(create(type, io));
+ Image::AutoPtr image = create(type, io);
if (image.get() == 0) throw Error(13, type);
return image;
}
@@ -163,7 +163,7 @@ namespace Exiv2 {
Image::AutoPtr ImageFactory::create(Image::Type type)
{
BasicIo::AutoPtr io(new MemIo);
- Image::AutoPtr image(create(type, io));
+ Image::AutoPtr image = create(type, io);
if (image.get() == 0) throw Error(13, type);
return image;
}
diff --git a/src/image.hpp b/src/image.hpp
index eead267..ae7a43b 100644
--- a/src/image.hpp
+++ b/src/image.hpp
@@ -302,13 +302,15 @@ namespace Exiv2 {
(re)opened by this method.
@param io An auto-pointer that owns a BasicIo instance that provides
image data. The contents of the image data are tested to determine
- the type. Important: This method takes ownership of the passed
+ the type.
+ @note This method takes ownership of the passed
in BasicIo instance through the auto-pointer. Callers should not
continue to use the BasicIo instance after it is passed to this method.
- Use theImage::io() method to get a temporary reference.
+ Use the Image::io() method to get a temporary reference.
@return An auto-pointer that owns an Image instance whose type
matches that of the \em io data. If no image type could be
determined, the pointer is 0.
+ @throw Error If opening the BasicIo fails
*/
static Image::AutoPtr open(BasicIo::AutoPtr io);
/*!
@@ -336,11 +338,11 @@ namespace Exiv2 {
contains data, it will be overwritten.
@param type Type of the image to be created.
@param io An auto-pointer that owns a BasicIo instance that will
- be written to when creating a new image. Important: This
- method takes ownership of the passed in BasicIo instance through
- the auto-pointer. Callers should not continue to use the BasicIo
- instance after it is passed to this method. Use theImage::io()
- method to get a temporary reference.
+ be written to when creating a new image.
+ @note This method takes ownership of the passed in BasicIo instance
+ through the auto-pointer. Callers should not continue to use the
+ BasicIo instance after it is passed to this method. Use the
+ Image::io() method to get a temporary reference.
@return An auto-pointer that owns an Image instance of the requested
type. If the image type is not supported, the pointer is 0.
*/
diff --git a/src/iotest.cpp b/src/iotest.cpp
index 6b0d244..ac82a60 100644
--- a/src/iotest.cpp
+++ b/src/iotest.cpp
@@ -58,7 +58,7 @@ try {
FileIo fileIn(argv[1]);
if (fileIn.open() != 0) {
- throw Error(9, strError());
+ throw Error(9, fileIn.path(), strError());
}
FileIo fileOut1(argv[2]);
@@ -139,7 +139,7 @@ int WriteReadSeek(BasicIo &io)
const long len2 = (long)strlen(tester2) + 1;
if (io.open() != 0) {
- throw Error(9, strError());
+ throw Error(9, io.path(), strError());
}
IoCloser closer(io);
if (io.write((byte*)tester1, len1) != len1) {
@@ -202,7 +202,7 @@ int WriteReadSeek(BasicIo &io)
// open should seek to beginning
if (io.open() != 0) {
- throw Error(9, strError());
+ throw Error(9, io.path(), strError());
}
memset(buf, -1, sizeof(buf));
if (io.read(buf, sizeof(buf)) != insert + len2) {
diff --git a/src/jpgimage.cpp b/src/jpgimage.cpp
index e10f1bb..ede5912 100644
--- a/src/jpgimage.cpp
+++ b/src/jpgimage.cpp
@@ -86,7 +86,7 @@ namespace Exiv2 {
: io_(io)
{
if (create) {
- initImage(initData, dataSize); // may throw
+ initImage(initData, dataSize);
}
}
@@ -171,7 +171,7 @@ namespace Exiv2 {
void JpegBase::readMetadata()
{
if (io_->open() != 0) {
- throw Error(9, strError());
+ throw Error(9, io_->path(), strError());
}
IoCloser closer(*io_);
// Ensure that this is the correct image type
@@ -298,7 +298,9 @@ namespace Exiv2 {
void JpegBase::writeMetadata()
{
- if (io_->open() != 0) throw Error(9, strError());
+ if (io_->open() != 0) {
+ throw Error(9, io_->path(), strError());
+ }
IoCloser closer(*io_);
BasicIo::AutoPtr tempIo(io_->temporary()); // may throw
assert (tempIo.get() != 0);
@@ -574,13 +576,7 @@ namespace Exiv2 {
Image::AutoPtr newJpegInstance(BasicIo::AutoPtr io, bool create)
{
- Image::AutoPtr image;
- if (create) {
- image = Image::AutoPtr(new JpegImage(io, true));
- }
- else {
- image = Image::AutoPtr(new JpegImage(io, false));
- }
+ Image::AutoPtr image = Image::AutoPtr(new JpegImage(io, create));
if (!image->good()) {
image.reset();
}
@@ -654,8 +650,8 @@ namespace Exiv2 {
iIo.read(tmpBuf, 7);
if (iIo.error() || iIo.eof()) return false;
- if (0xff!=tmpBuf[0] || 0x01!=tmpBuf[1] ||
- memcmp(tmpBuf + 2, ExvImage::exiv2Id_, 5) != 0) {
+ if ( 0xff != tmpBuf[0] || 0x01 != tmpBuf[1]
+ || memcmp(tmpBuf + 2, ExvImage::exiv2Id_, 5) != 0) {
result = false;
}
if (!advance || !result ) iIo.seek(-7, BasicIo::cur);
diff --git a/src/jpgimage.hpp b/src/jpgimage.hpp
index 8e591b7..f4897a6 100644
--- a/src/jpgimage.hpp
+++ b/src/jpgimage.hpp
@@ -235,9 +235,7 @@ namespace Exiv2 {
writing all buffered metadata to the provided BasicIo.
@param oIo BasicIo instance to write to (a temporary location).
- @throw Error if reading from input file failed, the output file
- can not be written to, or the input file does not contain
- a valid image.
+ @return 4 if opening or writing to the associated BasicIo fails
*/
void doWriteMetadata(BasicIo& oIo);
--
exiv2 packaging
More information about the pkg-kde-commits
mailing list