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

Maximiliano Curia maxy at moszumanska.debian.org
Thu Jul 13 17:42:33 UTC 2017


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

The following commit has been merged in the master branch:
commit 43fe61ab73256c4478a14949f29569d51e745a69
Author: vog <vog at notjusthosting.com>
Date:   Tue Jul 12 17:19:51 2011 +0000

    improved EpsImage to handle any combination of removable XMP embeddings, added test cases
---
 src/epsimage.cpp                                   |  54 ++--
 ... eps-flat_minimal_xmp_exiftool-8.56.eps.newxmp} |   0
 ... eps-flat_oodraw_ai-cs5-lev3_exiftool-8.56.eps} |  63 +++++
 ...at_oodraw_ai-cs5-lev3_exiftool-8.56.eps.newxmp} |  31 ++-
 ... eps-flat_oodraw_ai-cs5-lev3_exiftool-8.56.xmp} |   0
 ...ps-flat_photoshop-cs5-binary_exiftool-8.56.eps} | 291 ++++++++-------------
 ..._photoshop-cs5-binary_exiftool-8.56.eps.newxmp} |   0
 ...ps-flat_photoshop-cs5-binary_exiftool-8.56.xmp} |  55 ++--
 ...t_photoshop-cs5-binary_exiv2_exiftool-8.56.eps} |  42 ++-
 ...shop-cs5-binary_exiv2_exiftool-8.56.eps.newxmp} |   0
 ...t_photoshop-cs5-binary_exiv2_exiftool-8.56.xmp} |   0
 ...nested_xmp_indesign-cs5-lev3_exiftool-8.56.eps} | Bin 182804 -> 186525 bytes
 test/data/eps/eps-test.out                         | 138 +++++++++-
 ..._oodraw_ai-cs5-lev3_exiftool-8.56-preview1.jpg} | Bin
 test/data/preview/preview-test.out                 |  38 +++
 test/preview-test.sh                               |   4 +
 16 files changed, 463 insertions(+), 253 deletions(-)

diff --git a/src/epsimage.cpp b/src/epsimage.cpp
index 2e6ba77..ced091f 100644
--- a/src/epsimage.cpp
+++ b/src/epsimage.cpp
@@ -435,8 +435,9 @@ namespace {
         bool photoshop = false;
         bool inDefaultsOrPrologOrSetup = false;
         bool inPageSetup = false;
-        bool inPhotoshopXmp = false;
-        bool inExiv2Xmp = false;
+        bool inRemovableEmbedding = false;
+        std::string removableEmbeddingEndLine;
+        unsigned int removableEmbeddingsWithUnmarkedTrailer = 0;
         for (size_t pos = posEps; pos < posEof;) {
             const size_t startPos = pos;
             std::string line;
@@ -451,14 +452,14 @@ namespace {
                 }
             }
             if (line == "%%EOF" || (line.size() >= 1 && line[0] != '%')) {
-                if (posPage == posEndEps && posEndComments != posEndEps && !inDefaultsOrPrologOrSetup && !inPhotoshopXmp && !onlyWhitespaces(line)) {
+                if (posPage == posEndEps && posEndComments != posEndEps && !inDefaultsOrPrologOrSetup && !inRemovableEmbedding && !onlyWhitespaces(line)) {
                     posPage = startPos;
                     implicitPage = true;
                     #ifdef DEBUG
                     EXV_DEBUG << "readWriteEpsMetadata: Found implicit Page at position: " << startPos << "
";
                     #endif
                 }
-                if (posEndPageSetup == posEndEps && posPage != posEndEps && !inPageSetup && !inPhotoshopXmp) {
+                if (posEndPageSetup == posEndEps && posPage != posEndEps && !inPageSetup && !inRemovableEmbedding) {
                     posEndPageSetup = startPos;
                     #ifdef DEBUG
                     EXV_DEBUG << "readWriteEpsMetadata: Found implicit EndPageSetup at position: " << startPos << "
";
@@ -514,21 +515,29 @@ namespace {
                 posPageTrailer = startPos;
             } else if (startsWith(line, "%BeginPhotoshop:")) {
                 photoshop = true;
-            } else if (posEndPageSetup == posEndEps && line == "%Exiv2BeginXMP: Before %%EndPageSetup") {
-                inExiv2Xmp = true;
-            } else if (posEndPageSetup == posEndEps && line == "%Exiv2EndXMP") {
-                inExiv2Xmp = false;
-            } else if (posEndPageSetup == posEndEps && !inExiv2Xmp && line == "%begin_xml_code") {
-                inPhotoshopXmp = true;
+            } else if (!inRemovableEmbedding && line == "%Exiv2BeginXMP: Before %%EndPageSetup") {
+                inRemovableEmbedding = true;
                 removableEmbeddings.push_back(std::make_pair(startPos, startPos));
-            } else if (posEndPageSetup == posEndEps && !inExiv2Xmp && line == "%end_xml_code") {
-                if (!inPhotoshopXmp) {
-                    #ifndef SUPPRESS_WARNINGS
-                    EXV_WARNING << "Unexpected Photoshop end_xml_code at position: " << startPos << "
";
-                    #endif
-                    throw Error(write ? 21 : 14);
-                }
-                inPhotoshopXmp = false;
+                removableEmbeddingEndLine = "%Exiv2EndXMP";
+            } else if (!inRemovableEmbedding && line == "%Exiv2BeginXMP: After %%PageTrailer") {
+                inRemovableEmbedding = true;
+                removableEmbeddings.push_back(std::make_pair(startPos, startPos));
+                removableEmbeddingEndLine = "%Exiv2EndXMP";
+            } else if (!inRemovableEmbedding && line == "%ADOBeginClientInjection: PageSetup End \"AI11EPS\"") {
+                inRemovableEmbedding = true;
+                removableEmbeddings.push_back(std::make_pair(startPos, startPos));
+                removableEmbeddingEndLine = "%ADOEndClientInjection: PageSetup End \"AI11EPS\"";
+            } else if (!inRemovableEmbedding && line == "%ADOBeginClientInjection: PageTrailer Start \"AI11EPS\"") {
+                inRemovableEmbedding = true;
+                removableEmbeddings.push_back(std::make_pair(startPos, startPos));
+                removableEmbeddingEndLine = "%ADOEndClientInjection: PageTrailer Start \"AI11EPS\"";
+            } else if (posEndPageSetup == posEndEps && !inRemovableEmbedding && line == "%begin_xml_code") {
+                inRemovableEmbedding = true;
+                removableEmbeddings.push_back(std::make_pair(startPos, startPos));
+                removableEmbeddingEndLine = "%end_xml_code";
+                removableEmbeddingsWithUnmarkedTrailer++;
+            } else if (inRemovableEmbedding && line == removableEmbeddingEndLine) {
+                inRemovableEmbedding = false;
                 removableEmbeddings.back().second = pos;
             } else if (line == "%%EOF") {
                 posEof = startPos;
@@ -573,10 +582,9 @@ namespace {
             #endif
         }
 
-        // look for the trailers of the removable XMP embeddings
-        const size_t numRemovableEmbeddings = removableEmbeddings.size();
+        // look for the unmarked trailers of some removable XMP embeddings
         size_t posXmpTrailerEnd = posEof;
-        for (size_t i = 0; i < numRemovableEmbeddings; i++) {
+        for (size_t i = 0; i < removableEmbeddingsWithUnmarkedTrailer; i++) {
             std::string line1;
             const size_t posLine1 = readPrevLine(line1, data, posXmpTrailerEnd, posEndEps);
             std::string line2;
@@ -596,9 +604,7 @@ namespace {
             }
             removableEmbeddings.push_back(std::make_pair(posXmpTrailer, posXmpTrailerEnd));
             #ifdef DEBUG
-            EXV_DEBUG << "readWriteEpsMetadata: Recognized removable XMP embedding at "
-                         "[" << removableEmbeddings[i].first << "," << removableEmbeddings[i].second << ")"
-                         " with trailer "
+            EXV_DEBUG << "readWriteEpsMetadata: Recognized unmarked trailer of removable XMP embedding at "
                          "[" << removableEmbeddings.back().first << "," << removableEmbeddings.back().second << ")"
                          "
";
             #endif
diff --git a/test/data/eps/eps-flat_minimal-eof.eps.newxmp b/test/data/eps/eps-flat_minimal_xmp_exiftool-8.56.eps.newxmp
similarity index 100%
copy from test/data/eps/eps-flat_minimal-eof.eps.newxmp
copy to test/data/eps/eps-flat_minimal_xmp_exiftool-8.56.eps.newxmp
diff --git a/test/data/eps/eps-flat_oodraw_ai-cs5-lev3.eps b/test/data/eps/eps-flat_oodraw_ai-cs5-lev3_exiftool-8.56.eps
similarity index 98%
copy from test/data/eps/eps-flat_oodraw_ai-cs5-lev3.eps
copy to test/data/eps/eps-flat_oodraw_ai-cs5-lev3_exiftool-8.56.eps
index 5dcbec8..8ab9080 100644
--- a/test/data/eps/eps-flat_oodraw_ai-cs5-lev3.eps
+++ b/test/data/eps/eps-flat_oodraw_ai-cs5-lev3_exiftool-8.56.eps
@@ -4796,6 +4796,68 @@ Adobe_AGM_Utils begin
 Adobe_CoolType_Core/ds get exec
Adobe_AGM_Image/ds gx
 currentdict Adobe_AGM_Utils eq {end} if
 %%EndSetup
+%begin_xml_code
+/pdfmark where {pop true} {false} ifelse
+/currentdistillerparams where {pop currentdistillerparams
+/CoreDistVersion get 5000 ge } {false} ifelse
+and not {userdict /pdfmark /cleartomark load put} if
+[/NamespacePush pdfmark
+[/_objdef {exiftool_metadata_stream} /type /stream /OBJ pdfmark
+[{exiftool_metadata_stream} 2 dict begin /Type /Metadata def
+  /Subtype /XML def currentdict end /PUT pdfmark
+/MetadataString 2864 string def % exact length of metadata
+/TempString 100 string def
+/ConsumeMetadata {
+currentfile TempString readline pop pop
+currentfile MetadataString readstring pop pop
+} bind def
+ConsumeMetadata
+%begin_xml_packet: 2864
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 8.56'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
+
+ <rdf:Description rdf:about=''
+  xmlns:dc='http://purl.org/dc/elements/1.1/'>
+  <dc:title>
+   <rdf:Alt>
+    <rdf:li xml:lang='x-default'>TEST-Exiftool</rdf:li>
+   </rdf:Alt>
+  </dc:title>
+ </rdf:Description>
+</rdf:RDF>
+</x:xmpmeta>
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+<?xpacket end='w'?>
+%end_xml_packet
+[{exiftool_metadata_stream} MetadataString /PUT pdfmark
+[/Document 1 dict begin
+  /Metadata {exiftool_metadata_stream} def currentdict end /BDC pdfmark
+[/NamespacePop pdfmark
+%end_xml_code
 %%Page: 1 1
 %%EndPageComments
 %%BeginPageSetup
@@ -4964,5 +5026,6 @@ currentdict Adobe_AGM_Utils eq {end} if
 %%Trailer
 Adobe_AGM_Image/dt get exec
 Adobe_CoolType_Core/dt get exec
Adobe_AGM_Core/dt get exec
+[/EMC pdfmark
 %%EOF
 %AI9_PrintingDataEnd

userdict /AI9_read_buffer 256 string put
userdict begin
/ai9_skip_data
{
	mark
	{
		currentfile AI9_read_buffer { readline } stopped
		{
		}
		{
			not
			{
				exit
			} if
			(%AI9_PrivateDataEnd) eq
			{
				exit
			} if
		} ifelse
	} loop
	cleartomark
} def
end
userdict /ai9_skip_data get exec
%AI9_PrivateDataBegin
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Adobe Illustrator(R) 15.0
%%AI8_CreatorVersion: 15.0.0
%%For: (Michael Ulbrich) ()
%%Title: (zs_oodraw_ai-cs5-lev3.eps)
%%CreationDate: 3/25/11 4:07 PM
%%Canvassize: 16383
%AI9_DataStream
%Gb"/Ll$DX)ZKQ];h>p/<+A=[LA7R"n8]X<@8/RkM0ZJk8?K]@Sp8c#^Cb/cpHLH"F[oRuQ^lh\qWDolI<N1A[_K7Ns%jmp&ks%0e
%T?Xt-4RZ&70m=hZ]6q?Hi'rgPl9mTqRfjK%81L*/C6tg2`E8MO)re4P85aFgRYk"g>o7^16^KHURVZ%0,G?k-a.9a[[K.K at Z$'P1
%)"fNuj/sNeh!o1r5*!,"lh=<?;olMsGPq5XdMje763B%ooM<N#=Fp_ at 2YqkQbibY"!%R>3n`')/ljS+gs6"mG&O$HJ>jTZ>e&cAj
%"t<;[j,Q)%YB/X:'Ym's)oH62_K\!(bQWZR31#RL6!%"S;u83!"G9+M@^)4q\W[n5,HVAJ6^.#k5kmG(XpLZ5+CYc@`VJoZJ&%0A
%7"XIg-SDr4N!/["173^NTg!$BMCtcS at 3e'(moMuL:O*)9!UUP%\EesC_Al88FL6R.cabh=">C#Pc7_K%fRj1,B#<VHg-iU_a3n+7
%3em.EVdfuoYnTZ,b0;:I.R[V?`!sUr?mA;0BeVIT0O%W<i,^ToaaHgkX5]eUbohP!_&oWQOUUc0<r!j3'+B.M(FF1;!D+"Z[!"D]
%EcI!<gjK2QRrei7?[N9hb9bp]d$Fg,Kh87"mf6m/;B2'cJ)#`bF%BFRp_T"/cVt7#B!_!5=B(m3j7$tL%SPi%=;m7\dRj\WNSd@)
%@'*B8r^s"pX],YY8u4!PV9Nflf#_N4SST&S$iCBJA[ATVr!#AoX^Vmn.Mh!4`?Hi^(1Eb+"dW1=W>'`l;M!qp$@W6S)#"j@#=HG+
%n4f`A*d at G<-`dKl"@$<H3$r44\."B'I_n-b7.:kM>JUGk(QJfN_I%7Mn.W6`nUt,$,D)P,h!ctE$HE9X at VfNKYSJ2pr.K2B(&1Ij
%+4tXn at uNj8-2<>S`$<=9a*l!V_pDi<PrV`Wi.%sH*$>*3/`@ScUW-ki`o(3+$]\#N@>ks!/fYu2KYQI/nGL1"giN5nI_o9-I..fq
%,,Q!3<t$0;<+l:*>bN6Nc>`e;emU.h2[(jZjLFrgkI=k9/oFg[03gm?#OB1Q.?k-/#N*Or`hdX%n.XBioF8irEJ!)%T<JeFS]dp-
%[^('1jtHp3h$OTA[%^A9loCpW9FK"S;!&JP*VU%R*Q,j at K0<:J6l?s34058Da0"CrEB4#RH]D/SVIhsR(cSsY$MoPB='P(e*LBQ)
%XkLoqn>+GqVJ_+U2>VrDCG_igFD[<Y/8OhWH_b$^^9(g2l)W6>"YO[/^WH'eq?R%0Y/nfd at PM,^rPefpc3=5^J+5ai0:BaS[(lBC
%3fSW)J+:9I#62tZ'\F<!?TsND[(lBCTn%W.J+5aiY>iA7[(lBC\Vu#RJ+5`urJ12/S3-M&k8""tIc8%LI'H'oOfXd&>e6/Y<D&Nc
%\qL*9^G:2JPgA:FbC<e]=p`AZq"AH at rhj17XAhes&nAoBbJ[KN44r at j*]<B]mfE:r[JZ_a5Lf7Z>5h at A+):U=/Us_\&%2>/Q9Wmi
%LKa]31\QT-r_Uc[CAC4KJ#MH>[JZ_a5Lf7Z>5h at A+):U=/cQ.0aVb"!j$eO$4`U$/^:i6i^B8:sU'T at H>!?TkPp_"D[=Z..Vdnpj
%,Ur^D%<4FtIc<-U4"@cUk)1,NbX'"uQW$_-0S03YY"M`WBfAKh:fJ1-MqR at UA*WXJqpV_+DKP#Jm_VM^oVI(BIYN?`nJgD#IINSR
%T1(en=hq2R\KFYM-FdK(+apoiVUL[]M<P;ISY*3I1bmr[q#4D)qerpcGrkm#4Dd:U)_Q)YD5RR$=Y5E1$f9[loC^1H>4T'nlM[
%2hQ)tG'[Q@\?EL$6>m@&O<8/nDARr9@,Fdle.Dkd-g7K!QXQi-`nflm+H<c@&l0DdEB`TGK\Kk^>Su5)<Y at Tnig?A`oX$aV9,LB9
%6mpM4SOq`;ck0n!b>8bH)8HsE%rsaL<(C/IoEmtu"/&M(dLcqJf28Rh^ut?k$9tk3'X#$._5%TT##2&).]25DoT"(OIW]6(6MC>X
%Jnj/B%49h["-Yi**4BIn=^2#660H!PK&hf\:SrV;cjt?GjaRJ5e6.amY5rk>Z839O+]n;Z0V3hUQE+um.i0T1 at h->a)jfQRH1"RX
%6908U(\htS^3kQ'J%L!OIGoX(jkP:R\96h`/tB&X.uI34mrCo!>jrR&&.D.rTC!a?SWNp'(@">`l_8[`_ELPo-/[KIcdaGB5a8^I
%TWeop,Or3!##o#r\`,VSKNB.0k5WM`5spB^PfDh!.W3(I7rLn_hdAM(Y<`\.UEfcT^KVNIb at t<K5Q"`6\Lo"\gURSmP5h0EBEBZ:
%iPu'48H;SDYAIVF=(en%.qIJ`;ZK`t4T@:&9;?c0m$RHR/Bg2(d.-cj^ou=?^H1AIdiC^ZE9VT1`.,H2s%+d.CNXr1K2Gti-?:+/
%fb,%9?7QMsM`L-;#Si&Za-)WIOKH>FnK4?)jrru9%,\>YVLN5&[<i9q4rs)j.MI5jrF`#o)8l#eTRts+Cr6?s./g<$K4>1lOQ23t
%!6,Miob&Fd%ThHe$Ei?;5?*c?==/dMZo8]qp>_W9-T!CP(WWEFrnjLQ#JAu=?7_%+dZ7]1q"qh7"%o=Sn,J=5%h7TC\e'2iMS]0A
%a/&0EG<,tu>$^ojj4H!=*eOq;J?Jk*OSnYL9_LdL;.Y:uI3Wi_T5jg>2NV:S"&VEKJ$78t1)nKqKDtelG!n&KL1=86Y7\mI?QRaa
%0_kRO="!cB2Nl=(^Y;.*^&Lh#=g0LV5JGB[DQh_ik6]lF68P6mE"S*qnh>Ps=c>h-3MS$Z&ni8LlB+fnpL"hWqbBS)/BK>?D6-^+
%MM(qs:20os`Mo,\_Is'^X5sMK[&R11qlSWr[Cs^r3Yeh^4sWFs8ae%\:M-0S?nQN'<&,>h$lmj3;.S-d-C`sG.Mak89uZmEqh\
%-kf;C-QWoRd<I458lM0I[FMG6f$sPb87p;W^7qW<B/>iU/cRV.C!WO=%3uLj/k5pQ"7-cEKZC2PVLuu1$<KlcDgS%;4J[(fO1@'Z
%ZEMX4JXp\%-3NK?X:A2=2h9c0,SEc[5l3I$$)+;,Ca,Emd)=a^7_DO7M- at SQO9XOW#S>&D]JCA*ha/"@r&&T@!LCDo-[jsGb!;2-
%qIb3;<p37*10(3X8V#AOT4Z(L>lH"FA5[-MR7/s at f$pE0esosH%K5?CG66&%@*lim$2V5b[lT&UQ3PdM1[1m^gM4].3^"WNq&J'g
%7O'Y;VNQHjC/\Tb,iWW>TXA8T"3qo^Eh)Oo_PdQd+Q>>T"Zl*@TU.QnUt'uqhJ7r`NUL&UBN18T];f>+5NR076PLe3r(D"d$3/6*
%jo/ZE_+<.p7s3 at 7$fksYY'24bMpA6YDG4^41_*0ZnP!297sUf\RJbTtZn4>aWQ<5SB&-OHq.qd0hfP[)!4I;DV/GZEP@^eF6&sp^
%AM1n(K"8I^hI+'K-Z^aH<79sk3<3ld at t#l(i_H**r/C`HVc$ikGGcId0-<Ytp,0T_ieGH<YS$PYaJDF)=u?K8@*QqcSR30RE at A0)
%9IAjrVm at fsOV7T>+93l&&^p<r_n0mYU<q",&s7P9Hm/+eM_TeUfB'0(&V5<qM]cJ$R_&m4U1'MM.0Y():1)u>MNlbc%3k at 0P+VBD
%,>mhg`c5WJO:5fhB%+;af!lq6<@KhUlHV'F;jFj,+d!utRra(XUC^;9n6]Q(9gs981X`cTYJ--AGEa!4_4,`Z*C+jIUhBE%?ki)\
%G8E<c+<L[F.O=!I7Y;Rl'HW;4itd>EJ3V/]q;Gl<)c"6?q8?q*V!&873YsjkC"<;W5joMf1[)Fs'al9/=rnCiPI`6!8]DCJ%)$Ba
%oX2H`c`DKER=RXqKCNF#dFPU?@h.FGRWCA"V_a%I:&bjE)*FXY(roE/DHk^$!P30!8K&$bJm4\%e"L/)X(IX[J1W9tNK.^Z#h#%K
%bM7mGHW.1&oTpAi4*ioXl\^P%giiZ0/cZD$!&@MUM6Xrkil0OAn(OFQ2#f.-Rri8c6VhHEV(qa8(kK.[OQXm:a8t[p)n578f]`oS
%Fm,WQEFIWVCe'EG19.=fd?t[L/.>:j7$+3p<BVI
-- 
exiv2 packaging



More information about the pkg-kde-commits mailing list