From 2c82879afec6f38276c699f5e060480aa7b3c62e Mon Sep 17 00:00:00 2001 From: Andreas Huggel Date: Mon, 18 Dec 2006 12:44:03 +0000 Subject: [PATCH] Added second attempt to parse an IPTC field into a string value, if parsing the actual type fails. Fixes bug #501. --- src/iptc.cpp | 9 +++++++++ src/value.cpp | 24 +++++++++++++----------- test/bugfixes-test.sh | 4 ++++ test/data/bugfixes-test.out | 26 ++++++++++++++++++++++++++ test/data/exiv2-bug501.jpg | Bin 0 -> 12494 bytes 5 files changed, 52 insertions(+), 11 deletions(-) create mode 100644 test/data/exiv2-bug501.jpg diff --git a/src/iptc.cpp b/src/iptc.cpp index 6502bd8a..422e558b 100644 --- a/src/iptc.cpp +++ b/src/iptc.cpp @@ -183,6 +183,15 @@ namespace Exiv2 { IptcKey key(dataSet, record); add(key, value.get()); } + else if (1 == rc) { + // If the first attempt failed, try with a string value + value = Value::create(string); + int rc = value->read(data, sizeData, bigEndian); + if (0 == rc) { + IptcKey key(dataSet, record); + add(key, value.get()); + } + } return rc; } diff --git a/src/value.cpp b/src/value.cpp index c2df29ba..3a087315 100644 --- a/src/value.cpp +++ b/src/value.cpp @@ -327,7 +327,7 @@ namespace Exiv2 { charsetId = CharsetInfo::charsetIdByName(name); if (charsetId == invalidCharsetId) { #ifndef SUPPRESS_WARNINGS - std::cerr << Error(28, name) << "\n"; + std::cerr << "Warning: " << Error(28, name) << "\n"; #endif return 1; } @@ -391,7 +391,7 @@ namespace Exiv2 { // Hard coded to read Iptc style dates if (len != 8) { #ifndef SUPPRESS_WARNINGS - std::cerr << Error(29) << "\n"; + std::cerr << "Warning: " << Error(29) << "\n"; #endif return 1; } @@ -402,7 +402,7 @@ namespace Exiv2 { &date_.year, &date_.month, &date_.day); if (scanned != 3) { #ifndef SUPPRESS_WARNINGS - std::cerr << Error(29) << "\n"; + std::cerr << "Warning: " << Error(29) << "\n"; #endif return 1; } @@ -414,7 +414,7 @@ namespace Exiv2 { // Hard coded to read Iptc style dates if (buf.length() < 8) { #ifndef SUPPRESS_WARNINGS - std::cerr << Error(29) << "\n"; + std::cerr << "Warning: " << Error(29) << "\n"; #endif return 1; } @@ -422,7 +422,7 @@ namespace Exiv2 { &date_.year, &date_.month, &date_.day); if (scanned != 3) { #ifndef SUPPRESS_WARNINGS - std::cerr << Error(29) << "\n"; + std::cerr << "Warning: " << Error(29) << "\n"; #endif return 1; } @@ -511,11 +511,12 @@ namespace Exiv2 { if (len == 11) { rc = scanTime6(b, "%2d%2d%2d%1c%2d%2d"); } -#ifndef SUPPRESS_WARNINGS if (rc) { - std::cerr << Error(30) << "\n"; - } + rc = 1; +#ifndef SUPPRESS_WARNINGS + std::cerr << "Warning: " << Error(30) << "\n"; #endif + } return rc; } @@ -530,11 +531,12 @@ namespace Exiv2 { else { rc = scanTime6(buf.c_str(), "%d:%d:%d%1c%d:%d"); } -#ifndef SUPPRESS_WARNINGS if (rc) { - std::cerr << Error(30) << "\n"; - } + rc = 1; +#ifndef SUPPRESS_WARNINGS + std::cerr << "Warning: " << Error(30) << "\n"; #endif + } return rc; } diff --git a/test/bugfixes-test.sh b/test/bugfixes-test.sh index 05bcfc1b..bee83f03 100755 --- a/test/bugfixes-test.sh +++ b/test/bugfixes-test.sh @@ -78,6 +78,10 @@ $binpath/exiv2 -v -pv $filename $binpath/exiv2 -v -M"del Exif.GPSInfo.GPSLatitude" $filename $binpath/exiv2 -v -pv $filename +num=501 +filename=`prep_file $num` +$binpath/exiv2 -pi $filename + ) > $results 2>&1 if [ x"`which unix2dos.exe`" != x ]; then diff --git a/test/data/bugfixes-test.out b/test/data/bugfixes-test.out index 3e9451f2..e80dd289 100644 --- a/test/data/bugfixes-test.out +++ b/test/data/bugfixes-test.out @@ -266,3 +266,29 @@ File 1/1: exiv2-bug498.jpg Del Exif.GPSInfo.GPSLatitude File 1/1: exiv2-bug498.jpg exiv2-bug498.jpg: No Exif data found in the file +------> Bug 501 <------- +Warning: Unsupported time format +Iptc.Application2.RecordVersion Short 1 2 +Iptc.Application2.Caption String 15 Porträtt på Eva +Iptc.Application2.Writer String 10 Elsa Nordh +Iptc.Application2.Byline String 10 Elsa Nordh +Iptc.Application2.ObjectName String 7 Hundbus +Iptc.Application2.DateCreated Date 8 2006-10-31 +Iptc.Application2.City String 8 Göteborg +Iptc.Application2.ProvinceState String 15 Västra Götaland +Iptc.Application2.CountryName String 6 Sweden +Iptc.Application2.Keywords String 3 Eva +Iptc.Application2.Keywords String 7 Gallery +Iptc.Application2.Keywords String 21 Framkalla jul06 mamma +Iptc.Application2.Copyright String 19 http://nordharna.se +Iptc.Application2.ExpirationTime String 2 SE +Iptc.Application2.SubLocation String 9 KÃ¥lltorp +Iptc.Application2.0x00d1 String 9 Göteborg +Iptc.Application2.0x00d2 String 17 Västra Götaland +Iptc.Application2.0x00d3 String 6 416 81 +Iptc.Application2.0x00d4 String 6 Sweden +Iptc.Application2.0x00d5 String 19 +46-(0)736-21 50 74 +Iptc.Application2.0x00d6 String 17 foto@nordharna.se +Iptc.Application2.0x00d7 String 27 http://gallery.nordharna.se +Iptc.Application2.0x00e3 String 27 http://gallery.nordharna.se +Iptc.Application2.0x00f2 String 1 4 diff --git a/test/data/exiv2-bug501.jpg b/test/data/exiv2-bug501.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1e230ccf9b5b3cf9df0207009625c78c87cc12b3 GIT binary patch literal 12494 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 Vxgh(A+AVbn0?^A$^AY6i{{V=ND^dUe literal 0 HcmV?d00001