summaryrefslogtreecommitdiffstats
path: root/src/exiv2-r2796.patch
diff options
context:
space:
mode:
Diffstat (limited to 'src/exiv2-r2796.patch')
-rw-r--r--src/exiv2-r2796.patch87
1 files changed, 0 insertions, 87 deletions
diff --git a/src/exiv2-r2796.patch b/src/exiv2-r2796.patch
deleted file mode 100644
index 34332da..0000000
--- a/src/exiv2-r2796.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-This file is part of MXE.
-See index.html for further information.
-
-This patch has been taken from:
-http://dev.exiv2.org/projects/exiv2/repository/revisions/2796
-
-Index: trunk/src/basicio.cpp
-===================================================================
---- trunk/src/basicio.cpp (revision 2795)
-+++ trunk/src/basicio.cpp (revision 2796)
-@@ -61,6 +61,11 @@
- # include <unistd.h> // for getpid, stat
- #endif
-
-+// Platform specific headers for handling extended attributes (xattr)
-+#if defined(__APPLE__)
-+# include <sys/xattr.h>
-+#endif
-+
- #if defined WIN32 && !defined __CYGWIN__
- // Windows doesn't provide mode_t, nlink_t
- typedef unsigned short mode_t;
-@@ -131,6 +136,8 @@
- int switchMode(OpMode opMode);
- //! stat wrapper for internal use
- int stat(StructStat& buf) const;
-+ //! copy extended attributes (xattr) from another file
-+ void copyXattrFrom(const FileIo& src);
- #if defined WIN32 && !defined __CYGWIN__
- // Windows function to determine the number of hardlinks (on NTFS)
- DWORD winNumberOfLinks() const;
-@@ -252,6 +259,47 @@
- return ret;
- } // FileIo::Impl::stat
-
-+ void FileIo::Impl::copyXattrFrom(const FileIo& src)
-+ {
-+#if defined(__APPLE__)
-+# if defined(EXV_UNICODE_PATH)
-+# error No xattr API for MacOS X with unicode support
-+# endif
-+ const ssize_t namebufSize = ::listxattr(src.p_->path_.c_str(), 0, 0, 0);
-+ if (namebufSize < 0) {
-+ throw Error(2, src.p_->path_, strError(), "listxattr");
-+ }
-+ if (namebufSize == 0) {
-+ // No extended attributes in source file
-+ return;
-+ }
-+ char namebuf[namebufSize];
-+ if (::listxattr(src.p_->path_.c_str(), namebuf, sizeof(namebuf), 0) != namebufSize) {
-+ throw Error(2, src.p_->path_, strError(), "listxattr");
-+ }
-+ for (ssize_t namebufPos = 0; namebufPos < namebufSize;) {
-+ const char *name = namebuf + namebufPos;
-+ namebufPos += strlen(name) + 1;
-+ const ssize_t valueSize = ::getxattr(src.p_->path_.c_str(), name, 0, 0, 0, 0);
-+ if (valueSize < 0) {
-+ throw Error(2, src.p_->path_, strError(), "getxattr");
-+ }
-+ char value[valueSize];
-+ if (::getxattr(src.p_->path_.c_str(), name, value, sizeof(value), 0, 0) != valueSize) {
-+ throw Error(2, src.p_->path_, strError(), "getxattr");
-+ }
-+#ifdef DEBUG
-+ EXV_DEBUG << "Copying xattr \"" << name << "\" with value size " << valueSize << "\n";
-+#endif
-+ if (::setxattr(path_.c_str(), name, value, valueSize, 0, 0) != 0) {
-+ throw Error(2, path_, strError(), "setxattr");
-+ }
-+ }
-+#else
-+ // No xattr support for this platform.
-+#endif
-+ } // FileIo::Impl::copyXattrFrom
-+
- #if defined WIN32 && !defined __CYGWIN__
- DWORD FileIo::Impl::winNumberOfLinks() const
- {
-@@ -521,6 +569,7 @@
- throw Error(10, path(), "w+b", strError());
- }
- }
-+ fileIo->p_->copyXattrFrom(*this);
- basicIo = fileIo;
- }
- else {