# HG changeset patch # User Volker Grabsch # Date 1347646989 -7200 # Node ID a2f6158769e03add1f5d21348906165ff8b20a74 # Parent 6dc4d0ba50772bcd8356595eeb0d46e7ee39f614 upgrade package exiv2 diff -r 6dc4d0ba5077 -r a2f6158769e0 src/exiv2-issue847.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/exiv2-issue847.patch Fri Sep 14 20:23:09 2012 +0200 @@ -0,0 +1,268 @@ +This file is part of MXE. +See index.html for further information. + +These patches have been taken from: +http://dev.exiv2.org/issues/847 + +From ffb5b66c5b1aeb77c1f95ef69a573030c6370e0c Mon Sep 17 00:00:00 2001 +From: vog +Date: Fri, 14 Sep 2012 16:06:23 +0000 +Subject: [PATCH 1/4] Issue #847: Add recognition of explicit and implicit + BeginPageSetup + +git-svn-id: svn://dev.exiv2.org/svn/trunk@2869 b7c8b350-86e7-0310-a4b4-de8f6a8f16a3 +--- + src/epsimage.cpp | 28 ++++++++++++++++++++++------ + 1 file changed, 22 insertions(+), 6 deletions(-) + +diff --git a/src/epsimage.cpp b/src/epsimage.cpp +index c937942..51e5bb4 100644 +--- a/src/epsimage.cpp ++++ b/src/epsimage.cpp +@@ -386,6 +386,7 @@ namespace { + size_t posBeginPhotoshop = posEndEps; + size_t posEndPhotoshop = posEndEps; + size_t posPage = posEndEps; ++ size_t posBeginPageSetup = posEndEps; + size_t posEndPageSetup = posEndEps; + size_t posPageTrailer = posEndEps; + size_t posEof = posEndEps; +@@ -397,7 +398,6 @@ namespace { + bool implicitPage = false; + bool implicitPageTrailer = false; + bool inDefaultsPreviewPrologSetup = false; +- bool inPageSetup = false; + bool inRemovableEmbedding = false; + std::string removableEmbeddingEndLine; + unsigned int removableEmbeddingsWithUnmarkedTrailer = 0; +@@ -465,7 +465,7 @@ namespace { + #endif + throw Error(write ? 21 : 14); + } else if (line == "%%BeginPageSetup") { +- inPageSetup = true; ++ posBeginPageSetup = startPos; + } else if (!inRemovableEmbedding && line == "%Exiv2BeginXMP: Before %%EndPageSetup") { + inRemovableEmbedding = true; + removableEmbeddings.push_back(std::make_pair(startPos, startPos)); +@@ -510,18 +510,34 @@ namespace { + if (posPage == posEndEps && posEndComments != posEndEps && !inDefaultsPreviewPrologSetup && !inRemovableEmbedding && !onlyWhitespaces(line)) { + posPage = startPos; + implicitPage = true; ++ posBeginPageSetup = startPos; + posEndPageSetup = startPos; + #ifdef DEBUG +- EXV_DEBUG << "readWriteEpsMetadata: Found implicit Page and EndPageSetup at position: " << startPos << "\n"; ++ EXV_DEBUG << "readWriteEpsMetadata: Found implicit Page, BeginPageSetup and EndPageSetup at position: " << startPos << "\n"; + #endif + } +- if (posEndPageSetup == posEndEps && posPage != posEndEps && !inPageSetup && !inRemovableEmbedding && line.size() >= 1 && line[0] != '%') { ++ if (posBeginPageSetup == posEndEps && posPage != posEndEps && !inRemovableEmbedding && line.size() >= 1 && line[0] != '%') { ++ posBeginPageSetup = startPos; + posEndPageSetup = startPos; + #ifdef DEBUG +- EXV_DEBUG << "readWriteEpsMetadata: Found implicit EndPageSetup at position: " << startPos << "\n"; ++ EXV_DEBUG << "readWriteEpsMetadata: Found implicit BeginPageSetup and EndPageSetup at position: " << startPos << "\n"; + #endif + } + if (line.size() >= 1 && line[0] != '%') continue; // performance optimization ++ if (line == "%%EOF" || line == "%%Trailer" || line == "%%PageTrailer") { ++ if (posBeginPageSetup == posEndEps) { ++ posBeginPageSetup = startPos; ++ #ifdef DEBUG ++ EXV_DEBUG << "readWriteEpsMetadata: Found implicit BeginPageSetup at position: " << startPos << "\n"; ++ #endif ++ } ++ if (posEndPageSetup == posEndEps) { ++ posEndPageSetup = startPos; ++ #ifdef DEBUG ++ EXV_DEBUG << "readWriteEpsMetadata: Found implicit EndPageSetup at position: " << startPos << "\n"; ++ #endif ++ } ++ } + if (line == "%%EOF" || line == "%%Trailer") { + if (posPageTrailer == posEndEps) { + posPageTrailer = startPos; +@@ -561,7 +577,6 @@ namespace { + } else if (line == "%%EndSetup") { + inDefaultsPreviewPrologSetup = false; + } else if (posEndPageSetup == posEndEps && line == "%%EndPageSetup") { +- inPageSetup = false; + posEndPageSetup = startPos; + } else if (posPageTrailer == posEndEps && line == "%%PageTrailer") { + posPageTrailer = startPos; +@@ -815,6 +830,7 @@ namespace { + positions.push_back(posExiv2Website); + positions.push_back(posEndComments); + positions.push_back(posPage); ++ positions.push_back(posBeginPageSetup); + positions.push_back(posEndPageSetup); + positions.push_back(posPageTrailer); + positions.push_back(posEof); +-- +1.7.10.4 + +From f8c9c6114bf7631bb0dba67582c2666b05b2ff9f Mon Sep 17 00:00:00 2001 +From: vog +Date: Fri, 14 Sep 2012 16:06:26 +0000 +Subject: [PATCH 2/4] Issue #847: Always insert BeginPageSetup/EndPageSetup + when missing + +git-svn-id: svn://dev.exiv2.org/svn/trunk@2870 b7c8b350-86e7-0310-a4b4-de8f6a8f16a3 +--- + src/epsimage.cpp | 21 ++++++++++++++------- + 1 file changed, 14 insertions(+), 7 deletions(-) + +diff --git a/src/epsimage.cpp b/src/epsimage.cpp +index 51e5bb4..9276eb5 100644 +--- a/src/epsimage.cpp ++++ b/src/epsimage.cpp +@@ -935,6 +935,11 @@ namespace { + writeTemp(*tempIo, "%%EndPageComments" + lineEnding); + } + } ++ if (pos == posBeginPageSetup) { ++ if (line != "%%BeginPageSetup") { ++ writeTemp(*tempIo, "%%BeginPageSetup" + lineEnding); ++ } ++ } + if (useFlexibleEmbedding) { + // insert XMP metadata into existing flexible embedding + if (pos == xmpPos) { +@@ -947,7 +952,8 @@ namespace { + EXV_DEBUG << "readWriteEpsMetadata: Skipping to " << skipPos << " at " << __FILE__ << ":" << __LINE__ << "\n"; + #endif + } +- } else { ++ } ++ if (!useFlexibleEmbedding) { + // remove preceding embedding(s) + for (std::vector >::const_iterator e = removableEmbeddings.begin(); e != removableEmbeddings.end(); e++) { + if (pos == e->first) { +@@ -960,9 +966,6 @@ namespace { + } + // insert XMP metadata with new flexible embedding, if necessary + if (pos == posEndPageSetup && !deleteXmp) { +- if (line != "%%EndPageSetup") { +- writeTemp(*tempIo, "%%BeginPageSetup" + lineEnding); +- } + writeTemp(*tempIo, "%Exiv2BeginXMP: Before %%EndPageSetup" + lineEnding); + if (corelDraw) { + writeTemp(*tempIo, "%Exiv2Notice: The following line is needed by CorelDRAW." + lineEnding); +@@ -1004,10 +1007,14 @@ namespace { + writeTemp(*tempIo, "@sv" + lineEnding); + } + writeTemp(*tempIo, "%Exiv2EndXMP" + lineEnding); +- if (line != "%%EndPageSetup") { +- writeTemp(*tempIo, "%%EndPageSetup" + lineEnding); +- } + } ++ } ++ if (pos == posEndPageSetup) { ++ if (line != "%%EndPageSetup") { ++ writeTemp(*tempIo, "%%EndPageSetup" + lineEnding); ++ } ++ } ++ if (!useFlexibleEmbedding) { + if (pos == posPageTrailer && !deleteXmp) { + if (!implicitPageTrailer) { + skipPos = posLineEnd; +-- +1.7.10.4 + +From b22ff432f0205d77d1b9e0ad2cd314ab6cdf20b0 Mon Sep 17 00:00:00 2001 +From: vog +Date: Fri, 14 Sep 2012 16:06:29 +0000 +Subject: [PATCH 3/4] Issue #847: Split recognition of implicit Page, + BeginPageSetup and EndPageSetup + +git-svn-id: svn://dev.exiv2.org/svn/trunk@2871 b7c8b350-86e7-0310-a4b4-de8f6a8f16a3 +--- + src/epsimage.cpp | 17 ++++++++++++----- + 1 file changed, 12 insertions(+), 5 deletions(-) + +diff --git a/src/epsimage.cpp b/src/epsimage.cpp +index 9276eb5..57051a1 100644 +--- a/src/epsimage.cpp ++++ b/src/epsimage.cpp +@@ -396,6 +396,7 @@ namespace { + bool illustrator8 = false; + bool corelDraw = false; + bool implicitPage = false; ++ bool implicitPageSetup = false; + bool implicitPageTrailer = false; + bool inDefaultsPreviewPrologSetup = false; + bool inRemovableEmbedding = false; +@@ -510,29 +511,35 @@ namespace { + if (posPage == posEndEps && posEndComments != posEndEps && !inDefaultsPreviewPrologSetup && !inRemovableEmbedding && !onlyWhitespaces(line)) { + posPage = startPos; + implicitPage = true; +- posBeginPageSetup = startPos; +- posEndPageSetup = startPos; + #ifdef DEBUG +- EXV_DEBUG << "readWriteEpsMetadata: Found implicit Page, BeginPageSetup and EndPageSetup at position: " << startPos << "\n"; ++ EXV_DEBUG << "readWriteEpsMetadata: Found implicit Page at position: " << startPos << "\n"; + #endif + } +- if (posBeginPageSetup == posEndEps && posPage != posEndEps && !inRemovableEmbedding && line.size() >= 1 && line[0] != '%') { ++ if (posBeginPageSetup == posEndEps && (implicitPage || (posPage != posEndEps && !inRemovableEmbedding && line.size() >= 1 && line[0] != '%'))) { + posBeginPageSetup = startPos; ++ implicitPageSetup = true; ++ #ifdef DEBUG ++ EXV_DEBUG << "readWriteEpsMetadata: Found implicit BeginPageSetup at position: " << startPos << "\n"; ++ #endif ++ } ++ if (posEndPageSetup == posEndEps && implicitPageSetup) { + posEndPageSetup = startPos; + #ifdef DEBUG +- EXV_DEBUG << "readWriteEpsMetadata: Found implicit BeginPageSetup and EndPageSetup at position: " << startPos << "\n"; ++ EXV_DEBUG << "readWriteEpsMetadata: Found implicit EndPageSetup at position: " << startPos << "\n"; + #endif + } + if (line.size() >= 1 && line[0] != '%') continue; // performance optimization + if (line == "%%EOF" || line == "%%Trailer" || line == "%%PageTrailer") { + if (posBeginPageSetup == posEndEps) { + posBeginPageSetup = startPos; ++ implicitPageSetup = true; + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Found implicit BeginPageSetup at position: " << startPos << "\n"; + #endif + } + if (posEndPageSetup == posEndEps) { + posEndPageSetup = startPos; ++ implicitPageSetup = true; + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Found implicit EndPageSetup at position: " << startPos << "\n"; + #endif +-- +1.7.10.4 + +From 41fb1a2ff54a9377763e4a66544c2234f9b055c8 Mon Sep 17 00:00:00 2001 +From: vog +Date: Fri, 14 Sep 2012 17:01:36 +0000 +Subject: [PATCH 4/4] Issue #847: Ensure that Photoshop will always recognize + modified Photoshop EPS files + +For a full description of this issue, see: +http://dev.exiv2.org/issues/847 + +git-svn-id: svn://dev.exiv2.org/svn/trunk@2873 b7c8b350-86e7-0310-a4b4-de8f6a8f16a3 +--- + src/epsimage.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/epsimage.cpp b/src/epsimage.cpp +index 57051a1..4a0ca3a 100644 +--- a/src/epsimage.cpp ++++ b/src/epsimage.cpp +@@ -522,7 +522,7 @@ namespace { + EXV_DEBUG << "readWriteEpsMetadata: Found implicit BeginPageSetup at position: " << startPos << "\n"; + #endif + } +- if (posEndPageSetup == posEndEps && implicitPageSetup) { ++ if (posEndPageSetup == posEndEps && implicitPageSetup && !inRemovableEmbedding && line.size() >= 1 && line[0] != '%') { + posEndPageSetup = startPos; + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Found implicit EndPageSetup at position: " << startPos << "\n"; +-- +1.7.10.4 +