exiftool_vendored 11.51.0 → 11.52.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/Changes +9 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +2 -2
- data/bin/lib/Image/ExifTool.pm +2 -1
- data/bin/lib/Image/ExifTool.pod +9 -6
- data/bin/lib/Image/ExifTool/AIFF.pm +19 -4
- data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +9 -3
- data/bin/lib/Image/ExifTool/WriteXMP.pl +37 -29
- data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 708b8f54e7785c774043632d9e5dcefe98ae0a8d
|
4
|
+
data.tar.gz: 1d0693dcecc6c821a9ae9aab22427cd42d63ea8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 457d788e530ab3b621d414c6ad4c23bac4427b584886f5667cb1b3865dcd6ec77897a944a6b7ff5820e03e955826f37bd42c80269a75f30f47481ff5aec27ec4
|
7
|
+
data.tar.gz: dc5b34c896e756158c04c3ceb286746fe813fd2b0a1f37aca9faa517df5ce4706c53fc38e514647ed845d1bdbf519d2d2618087e8dcb6b84084ff0c82eba4e9e
|
data/bin/Changes
CHANGED
@@ -7,6 +7,15 @@ RSS feed: http://owl.phy.queensu.ca/~phil/exiftool/rss.xml
|
|
7
7
|
Note: The most recent production release is Version 11.50. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to CPAN.)
|
9
9
|
|
10
|
+
June 17, 2019 - Version 11.52
|
11
|
+
|
12
|
+
- Added a few new Nikon CropHiSpeed values (thanks Hayo Baan)
|
13
|
+
- Added a couple of new Nikon LensID's
|
14
|
+
- Fixed problem where processing large, corrupt AIFF files may could take an
|
15
|
+
excessively long time
|
16
|
+
- API Changes:
|
17
|
+
- Enhanced Compact option to add levels 3, 4 and 5
|
18
|
+
|
10
19
|
June 13, 2019 - Version 11.51
|
11
20
|
|
12
21
|
- Decode Canon DistortionCorrection tags
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -104,8 +104,8 @@ your home directory, then you would type the following commands in a
|
|
104
104
|
terminal window to extract and run ExifTool:
|
105
105
|
|
106
106
|
cd ~/Desktop
|
107
|
-
gzip -dc Image-ExifTool-11.
|
108
|
-
cd Image-ExifTool-11.
|
107
|
+
gzip -dc Image-ExifTool-11.52.tar.gz | tar -xf -
|
108
|
+
cd Image-ExifTool-11.52
|
109
109
|
./exiftool t/images/ExifTool.jpg
|
110
110
|
|
111
111
|
Note: These commands extract meta information from one of the test images.
|
data/bin/exiftool
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
use strict;
|
13
13
|
require 5.004;
|
14
14
|
|
15
|
-
my $version = '11.
|
15
|
+
my $version = '11.52';
|
16
16
|
|
17
17
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
18
18
|
my $exeDir;
|
@@ -5119,7 +5119,7 @@ with this command:
|
|
5119
5119
|
|
5120
5120
|
produces output like this:
|
5121
5121
|
|
5122
|
-
-- Generated by ExifTool 11.
|
5122
|
+
-- Generated by ExifTool 11.52 --
|
5123
5123
|
File: a.jpg - 2003:10:31 15:44:19
|
5124
5124
|
(f/5.6, 1/60s, ISO 100)
|
5125
5125
|
File: b.jpg - 2006:05:23 11:57:38
|
data/bin/lib/Image/ExifTool.pm
CHANGED
@@ -27,7 +27,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
27
27
|
%mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
|
28
28
|
%jpegMarker %specialTags %fileTypeLookup);
|
29
29
|
|
30
|
-
$VERSION = '11.
|
30
|
+
$VERSION = '11.52';
|
31
31
|
$RELEASE = '';
|
32
32
|
@ISA = qw(Exporter);
|
33
33
|
%EXPORT_TAGS = (
|
@@ -2167,6 +2167,7 @@ sub ClearOptions($)
|
|
2167
2167
|
WriteMode => 'wcg', # enable all write modes by default
|
2168
2168
|
XAttrTags => undef, # extract MacOS extended attribute tags
|
2169
2169
|
XMPAutoConv => 1, # automatic conversion of unknown XMP tag values
|
2170
|
+
XMPShorthand=> 0, # short form XMP
|
2170
2171
|
};
|
2171
2172
|
# keep necessary member variables in sync with options
|
2172
2173
|
delete $$self{CUR_LANG};
|
data/bin/lib/Image/ExifTool.pod
CHANGED
@@ -529,12 +529,15 @@ without recoding. Default is 0.
|
|
529
529
|
|
530
530
|
=item Compact
|
531
531
|
|
532
|
-
Option to write compact XMP output. The XMP specification
|
533
|
-
|
534
|
-
1, the
|
535
|
-
XMP since padding is never written for stand-alone XMP files.
|
536
|
-
2, spaces to indent XMP for readability are also dropped.
|
537
|
-
|
532
|
+
Option to write compact XMP output. The XMP specification recommends that
|
533
|
+
the XMP packet be padded with 2 kB of blanks to allow in-place editing. With
|
534
|
+
this option set to 1, the padding is not written. Note that this effects
|
535
|
+
only embedded XMP since padding is never written for stand-alone XMP files.
|
536
|
+
When set to 2, spaces to indent XMP for readability are also dropped. A
|
537
|
+
setting of 3 places all tags in a single rdf:Description element, and 4
|
538
|
+
removes newlines from between XMP elements. A setting of 5 also writes XMP
|
539
|
+
in shorthand format (to save setting the XMPShorthand option separately).
|
540
|
+
Default is undef.
|
538
541
|
|
539
542
|
=item Composite
|
540
543
|
|
@@ -18,7 +18,7 @@ use vars qw($VERSION);
|
|
18
18
|
use Image::ExifTool qw(:DataAccess :Utils);
|
19
19
|
use Image::ExifTool::ID3;
|
20
20
|
|
21
|
-
$VERSION = '1.
|
21
|
+
$VERSION = '1.10';
|
22
22
|
|
23
23
|
# information for time/date-based tags (time zero is Jan 1, 1904)
|
24
24
|
my %timeInfo = (
|
@@ -185,7 +185,7 @@ sub ProcessAIFF($$)
|
|
185
185
|
{
|
186
186
|
my ($et, $dirInfo) = @_;
|
187
187
|
my $raf = $$dirInfo{RAF};
|
188
|
-
my ($buff, $err, $tagTablePtr, $page, $type);
|
188
|
+
my ($buff, $err, $tagTablePtr, $page, $type, $n);
|
189
189
|
|
190
190
|
# verify this is a valid AIFF file
|
191
191
|
return 0 unless $raf->Read($buff, 12) == 12;
|
@@ -217,14 +217,24 @@ sub ProcessAIFF($$)
|
|
217
217
|
#
|
218
218
|
# Read through the IFF chunks
|
219
219
|
#
|
220
|
-
for (
|
220
|
+
for ($n=0;;++$n) {
|
221
221
|
$raf->Read($buff, 8) == 8 or last;
|
222
222
|
$pos += 8;
|
223
223
|
my ($tag, $len) = unpack('a4N', $buff);
|
224
224
|
my $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
|
225
|
-
$et->VPrint(0, "AIFF '${tag}' chunk ($len bytes of data)
|
225
|
+
$et->VPrint(0, "AIFF '${tag}' chunk ($len bytes of data): ", $raf->Tell(),"\n");
|
226
226
|
# AIFF chunks are padded to an even number of bytes
|
227
227
|
my $len2 = $len + ($len & 0x01);
|
228
|
+
if ($len2 > 100000000) {
|
229
|
+
if ($len2 >= 0x80000000 and not $et->Options('LargeFileSupport')) {
|
230
|
+
$et->Warn('End of processing at large chunk (LargeFileSupport not enabled)');
|
231
|
+
last;
|
232
|
+
}
|
233
|
+
if ($tagInfo) {
|
234
|
+
$et->Warn("Skipping large $$tagInfo{Name} chunk (> 100 MB)");
|
235
|
+
undef $tagInfo;
|
236
|
+
}
|
237
|
+
}
|
228
238
|
if ($tagInfo) {
|
229
239
|
if ($$tagInfo{TypeOnly}) {
|
230
240
|
$len = $len2 = 4;
|
@@ -241,6 +251,10 @@ sub ProcessAIFF($$)
|
|
241
251
|
Start => 0,
|
242
252
|
Size => $len,
|
243
253
|
);
|
254
|
+
} elsif (not $len) {
|
255
|
+
next if ++$n < 100;
|
256
|
+
$et->Warn('Aborting scan. Too many empty chunks');
|
257
|
+
last;
|
244
258
|
} elsif ($verbose > 2 and $len2 < 1024000) {
|
245
259
|
$raf->Read($buff, $len2) == $len2 or $err = 1, last;
|
246
260
|
$et->VerboseDump(\$buff);
|
@@ -248,6 +262,7 @@ sub ProcessAIFF($$)
|
|
248
262
|
$raf->Seek($len2, 1) or $err=1, last;
|
249
263
|
}
|
250
264
|
$pos += $len2;
|
265
|
+
$n = 0;
|
251
266
|
}
|
252
267
|
$err and $et->Warn("Error reading $type file (corrupted?)");
|
253
268
|
return 1;
|
@@ -798,7 +798,7 @@ sub ProcessMKV($$)
|
|
798
798
|
# just skip unknown and large data blocks
|
799
799
|
if (not $tagInfo or $more > 10000000) {
|
800
800
|
# don't try to skip very large blocks unless LargeFileSupport is enabled
|
801
|
-
last if $more
|
801
|
+
last if $more >= 0x80000000 and not $et->Options('LargeFileSupport');
|
802
802
|
$raf->Seek($more, 1) or last;
|
803
803
|
$buff = '';
|
804
804
|
$dataPos += $dataLen + $more;
|
@@ -46,6 +46,7 @@
|
|
46
46
|
# 32) Stefan http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,4494.0.html
|
47
47
|
# 34) Stewart Bennett private communication (D4S, D810)
|
48
48
|
# 35) David Puschel private communication
|
49
|
+
# 36) Hayo Baann (forum10207)
|
49
50
|
# IB) Iliah Borg private communication (LibRaw)
|
50
51
|
# JD) Jens Duttke private communication
|
51
52
|
# NJ) Niels Kristian Bech Jensen private communication
|
@@ -59,7 +60,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
59
60
|
use Image::ExifTool::Exif;
|
60
61
|
use Image::ExifTool::GPS;
|
61
62
|
|
62
|
-
$VERSION = '3.
|
63
|
+
$VERSION = '3.65';
|
63
64
|
|
64
65
|
sub LensIDConv($$$);
|
65
66
|
sub ProcessNikonAVI($$$);
|
@@ -514,6 +515,7 @@ sub GetAFPointGrid($$;$);
|
|
514
515
|
'E8 4C 44 44 14 14 DF 0E' => 'Tamron SP 35mm f/1.8 Di VC USD (F012)', #35
|
515
516
|
'E7 4C 4C 4C 14 14 DF 0E' => 'Tamron SP 45mm f/1.8 Di VC USD (F013)',
|
516
517
|
'F4 54 56 56 18 18 84 06' => 'Tamron SP AF 60mm f/2.0 Di II Macro 1:1 (G005)', #24
|
518
|
+
'E5 4C 62 62 14 14 C9 4E' => 'Tamron SP 85mm f/1.8 Di VC USD (F016)', #30
|
517
519
|
'1E 5D 64 64 20 20 13 00' => 'Tamron SP AF 90mm f/2.5 (52E)',
|
518
520
|
'20 5A 64 64 20 20 14 00' => 'Tamron SP AF 90mm f/2.5 Macro (152E)',
|
519
521
|
'22 53 64 64 24 24 E0 02' => 'Tamron SP AF 90mm f/2.8 Macro 1:1 (72E)',
|
@@ -572,6 +574,7 @@ sub GetAFPointGrid($$;$);
|
|
572
574
|
'F7 53 5C 80 24 24 84 06' => 'Tamron SP AF 70-200mm f/2.8 Di LD (IF) Macro (A001)',
|
573
575
|
'FE 53 5C 80 24 24 84 06' => 'Tamron SP AF 70-200mm f/2.8 Di LD (IF) Macro (A001)',
|
574
576
|
'F7 53 5C 80 24 24 40 06' => 'Tamron SP AF 70-200mm f/2.8 Di LD (IF) Macro (A001)',
|
577
|
+
'E2 47 5C 80 24 24 DF 4E' => 'Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025)', #30
|
575
578
|
# 'FE 54 5C 80 24 24 DF 0E' => 'Tamron SP AF 70-200mm f/2.8 Di VC USD (A009)',
|
576
579
|
'FE 54 5C 80 24 24 DF 0E' => 'Tamron SP 70-200mm f/2.8 Di VC USD (A009)', #NJ
|
577
580
|
'E2 47 5C 80 24 24 DF 4E' => 'Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025)', #forum9549
|
@@ -938,13 +941,16 @@ my %afPoints153 = (
|
|
938
941
|
my %cropHiSpeed = ( #IB
|
939
942
|
0 => 'Off',
|
940
943
|
1 => '1.3x Crop', # (1.3x Crop, Large)
|
941
|
-
2 => 'DX Crop',
|
944
|
+
2 => 'DX Crop', # (1.5x)
|
942
945
|
3 => '5:4 Crop',
|
943
|
-
4 => '3:2 Crop',
|
946
|
+
4 => '3:2 Crop', # (1.2x, ref 36)
|
944
947
|
6 => '16:9 Crop',
|
948
|
+
8 => '2.7x Crop', #36 (D4/D500)
|
945
949
|
9 => 'DX Movie Crop', # (DX during movie recording, Large)
|
950
|
+
10 => '1.3x Movie Crop', #36 (D4/D500)
|
946
951
|
11 => 'FX Uncropped',
|
947
952
|
12 => 'DX Uncropped',
|
953
|
+
15 => '1.5x Movie Crop', #36 (D4/D500)
|
948
954
|
17 => '1:1 Crop',
|
949
955
|
OTHER => sub {
|
950
956
|
my ($val, $inv, $conv) = @_;
|
@@ -604,13 +604,13 @@ sub LimitXMPSize($$$$$$)
|
|
604
604
|
push @$startPt, length($$dataPt); # add end offset to list
|
605
605
|
my $newData = substr($$dataPt, 0, $$startPt[0]);
|
606
606
|
my $guid = '0' x 32;
|
607
|
-
my $sp = $noPad ? '' : ' ';
|
607
|
+
my ($sp, $nl) = $noPad ? ('', $noPad > 1 ? '' : "\n") : (' ',"\n");
|
608
608
|
# write the required xmpNote:HasExtendedXMP property
|
609
|
-
$newData .= "
|
610
|
-
if (
|
609
|
+
$newData .= "$nl$sp<$rdfDesc rdf:about='${about}'\n$sp${sp}xmlns:xmpNote='$nsURI{xmpNote}'";
|
610
|
+
if ($$et{OPTIONS}{XMPShorthand} or ($$et{OPTIONS}{Compact} and $$et{OPTIONS}{Compact} > 4)) {
|
611
611
|
$newData .= "\n$sp${sp}xmpNote:HasExtendedXMP='${guid}'/>\n";
|
612
612
|
} else {
|
613
|
-
$newData .= "
|
613
|
+
$newData .= ">$nl$sp$sp<xmpNote:HasExtendedXMP>$guid</xmpNote:HasExtendedXMP>$nl$sp</$rdfDesc>\n";
|
614
614
|
}
|
615
615
|
|
616
616
|
my ($i, %descSize, $start);
|
@@ -652,42 +652,49 @@ sub CloseProperty($$$$)
|
|
652
652
|
|
653
653
|
my $prop = pop @$curPropList;
|
654
654
|
$prop =~ s/ .*//; # remove list index if it exists
|
655
|
-
my $pad
|
655
|
+
my ($pad, $nl);
|
656
|
+
if ($noPad) {
|
657
|
+
$pad = '';
|
658
|
+
$nl = $noPad > 1 ? '' : "\n";
|
659
|
+
} else {
|
660
|
+
$pad = ' ' x (scalar(@$curPropList) + 1);
|
661
|
+
$nl = "\n";
|
662
|
+
}
|
656
663
|
if ($$resFlag[@$curPropList]) {
|
657
664
|
# close this XMP structure with possible shorthand properties
|
658
665
|
if (length $$short[-1]) {
|
659
666
|
if (length $$long[-1]) {
|
660
667
|
# require a new Description if both longhand and shorthand properties
|
661
|
-
$$long[-2] .= "
|
662
|
-
$$short[-1] .= "
|
663
|
-
$$long[-1] .= "$pad</$rdfDesc
|
668
|
+
$$long[-2] .= ">$pad<$rdfDesc";
|
669
|
+
$$short[-1] .= ">$nl";
|
670
|
+
$$long[-1] .= "$pad</$rdfDesc>$nl";
|
664
671
|
} else {
|
665
672
|
# simply close empty property if all shorthand
|
666
|
-
$$short[-1] .= "
|
673
|
+
$$short[-1] .= "/>$nl";
|
667
674
|
}
|
668
675
|
} else {
|
669
676
|
# use "parseType" instead of opening a new Description
|
670
677
|
$$long[-2] .= ' rdf:parseType="Resource"';
|
671
|
-
$$short[-1] = length $$long[-1] ? "
|
678
|
+
$$short[-1] = length $$long[-1] ? ">$nl" : "/>$nl";
|
672
679
|
}
|
673
|
-
$$long[-1] .= "$pad</$prop
|
680
|
+
$$long[-1] .= "$pad</$prop>$nl" if length $$long[-1];
|
674
681
|
$$long[-2] .= $$short[-1] . $$long[-1];
|
675
682
|
pop @$short;
|
676
683
|
pop @$long;
|
677
684
|
} elsif (defined $$resFlag[@$curPropList]) {
|
678
685
|
# close this top level Description with possible shorthand values
|
679
686
|
if (length $$long[-1]) {
|
680
|
-
$$long[-2] .= $$short[-1] . "
|
687
|
+
$$long[-2] .= $$short[-1] . ">$nl" . $$long[-1] . "$pad</$prop>$nl";
|
681
688
|
} else {
|
682
|
-
$$long[-2] .= $$short[-1] . "
|
689
|
+
$$long[-2] .= $$short[-1] . "/>$nl"; # empty element (ie. all shorthand)
|
683
690
|
}
|
684
691
|
$$short[-1] = $$long[-1] = '';
|
685
692
|
} else {
|
686
693
|
# close this property (no chance of shorthand)
|
687
|
-
$$long[-1] .= "$pad</$prop
|
694
|
+
$$long[-1] .= "$pad</$prop>$nl";
|
688
695
|
unless (@$curPropList) {
|
689
696
|
# add properties now that this top-level Description is complete
|
690
|
-
$$long[-2] .= "
|
697
|
+
$$long[-2] .= ">$nl" . $$long[-1];
|
691
698
|
$$long[-1] = '';
|
692
699
|
}
|
693
700
|
}
|
@@ -715,11 +722,11 @@ sub WriteXMP($$;$)
|
|
715
722
|
my $xmpFile = (not $tagTablePtr); # this is an XMP data file if no $tagTablePtr
|
716
723
|
# prefer XMP over other metadata formats in some types of files
|
717
724
|
my $preferred = $xmpFile || ($$et{PreferredGroup} and $$et{PreferredGroup} eq 'XMP');
|
718
|
-
my $verbose =
|
719
|
-
my $compact =
|
725
|
+
my $verbose = $$et{OPTIONS}{Verbose};
|
726
|
+
my $compact = $$et{OPTIONS}{Compact} || 0;
|
720
727
|
my $dirLen = $$dirInfo{DirLen};
|
721
728
|
$dirLen = length($$dataPt) if not defined $dirLen and $dataPt;
|
722
|
-
$noPad = ($compact > 1);
|
729
|
+
$noPad = $compact > 1 ? ($compact > 3 ? 2 : 1) : undef;
|
723
730
|
#
|
724
731
|
# extract existing XMP information into %capture hash
|
725
732
|
#
|
@@ -1229,7 +1236,7 @@ sub WriteXMP($$;$)
|
|
1229
1236
|
# write out the new XMP information (serialize it)
|
1230
1237
|
#
|
1231
1238
|
# start writing the XMP data
|
1232
|
-
my $useShorthand =
|
1239
|
+
my $useShorthand = $$et{OPTIONS}{XMPShorthand} || $compact > 4;
|
1233
1240
|
my (@long, @short, @resFlag);
|
1234
1241
|
$long[0] = $long[1] = $short[0] = '';
|
1235
1242
|
if ($$et{XMP_NO_XPACKET}) {
|
@@ -1272,6 +1279,8 @@ sub WriteXMP($$;$)
|
|
1272
1279
|
}
|
1273
1280
|
}
|
1274
1281
|
|
1282
|
+
my ($sp, $nl) = $noPad ? ('', $noPad > 1 ? '' : "\n") : (' ',"\n");
|
1283
|
+
|
1275
1284
|
# write out all properties
|
1276
1285
|
for (;;) {
|
1277
1286
|
my (%nsNew, $newDesc);
|
@@ -1307,7 +1316,7 @@ sub WriteXMP($$;$)
|
|
1307
1316
|
my ($path2, $ns2);
|
1308
1317
|
foreach $path2 (@pathList) {
|
1309
1318
|
my @ns2s = ($path2 =~ m{(?:^|/)([^/]+?):}g);
|
1310
|
-
my $opening = 0;
|
1319
|
+
my $opening = $compact > 2 ? 1 : 0;
|
1311
1320
|
foreach $ns2 (@ns2s) {
|
1312
1321
|
next if $ns2 eq 'rdf';
|
1313
1322
|
$nsNew{$ns2} and ++$opening, next;
|
@@ -1336,9 +1345,8 @@ sub WriteXMP($$;$)
|
|
1336
1345
|
# open the new description
|
1337
1346
|
$prop = $rdfDesc;
|
1338
1347
|
%nsCur = %nsNew; # save current namespaces
|
1339
|
-
my $sp = $noPad ? '' : ' ';
|
1340
1348
|
my @ns = sort keys %nsCur;
|
1341
|
-
$long[-2] .= "
|
1349
|
+
$long[-2] .= "$nl$sp<$prop rdf:about='${about}'";
|
1342
1350
|
# generate et:toolkit attribute if this is an exiftool RDF/XML output file
|
1343
1351
|
if (@ns and $nsCur{$ns[0]} =~ m{^http://ns.exiftool.ca/}) {
|
1344
1352
|
$long[-2] .= "\n$sp${sp}xmlns:et='http://ns.exiftool.ca/1.0/'" .
|
@@ -1365,7 +1373,7 @@ sub WriteXMP($$;$)
|
|
1365
1373
|
{
|
1366
1374
|
# check for empty structure
|
1367
1375
|
if ($propList[$n+1] =~ /:~dummy~$/) {
|
1368
|
-
$long[-1] .= " rdf:parseType='Resource'
|
1376
|
+
$long[-1] .= " rdf:parseType='Resource'/>$nl";
|
1369
1377
|
pop @curPropList;
|
1370
1378
|
$dummy = 1;
|
1371
1379
|
last;
|
@@ -1376,10 +1384,10 @@ sub WriteXMP($$;$)
|
|
1376
1384
|
push @short, '';
|
1377
1385
|
} else {
|
1378
1386
|
# use rdf:parseType='Resource' to avoid new 'rdf:Description'
|
1379
|
-
$long[-1] .= " rdf:parseType='Resource'
|
1387
|
+
$long[-1] .= " rdf:parseType='Resource'>$nl";
|
1380
1388
|
}
|
1381
1389
|
} else {
|
1382
|
-
$long[-1] .= "
|
1390
|
+
$long[-1] .= ">$nl"; # (will be no shorthand properties)
|
1383
1391
|
}
|
1384
1392
|
}
|
1385
1393
|
my $prop2 = pop @propList; # get new property name
|
@@ -1398,7 +1406,7 @@ sub WriteXMP($$;$)
|
|
1398
1406
|
my $quot = ($attrVal =~ /'/) ? '"' : "'";
|
1399
1407
|
$long[-1] .= " $attr=$quot$attrVal$quot";
|
1400
1408
|
}
|
1401
|
-
$long[-1] .= length $val ? ">$val</$prop2
|
1409
|
+
$long[-1] .= length $val ? ">$val</$prop2>$nl" : "/>$nl";
|
1402
1410
|
}
|
1403
1411
|
}
|
1404
1412
|
}
|
@@ -1415,9 +1423,9 @@ sub WriteXMP($$;$)
|
|
1415
1423
|
$$dirInfo{ExtendedXMP} = $rtn[0];
|
1416
1424
|
$$dirInfo{ExtendedGUID} = $rtn[1];
|
1417
1425
|
# compact if necessary to fit
|
1418
|
-
$compact = 1 if length($long[-2]) + 101 * $numPadLines > $maxDataLen;
|
1426
|
+
$compact = 1 if length($long[-2]) + 101 * $numPadLines > $maxDataLen and not $compact;
|
1419
1427
|
}
|
1420
|
-
$compact = 1 if $$dirInfo{Compact};
|
1428
|
+
$compact = 1 if $$dirInfo{Compact} and not $compact;
|
1421
1429
|
#
|
1422
1430
|
# close out the XMP, clean up, and return our data
|
1423
1431
|
#
|
@@ -1439,7 +1447,7 @@ sub WriteXMP($$;$)
|
|
1439
1447
|
# pad to specified DirLen
|
1440
1448
|
if ($len > $dirLen) {
|
1441
1449
|
my $str = 'Not enough room to edit XMP in place';
|
1442
|
-
$str .= '. Try XMPShorthand option' unless $$et{OPTIONS}{XMPShorthand};
|
1450
|
+
$str .= '. Try XMPShorthand option' unless $$et{OPTIONS}{XMPShorthand} or $compact > 4;
|
1443
1451
|
$et->Warn($str);
|
1444
1452
|
return undef;
|
1445
1453
|
}
|
@@ -282,7 +282,7 @@ sub ProcessRAR($$)
|
|
282
282
|
last if $size < 0;
|
283
283
|
next unless $size; # ignore blocks with no data
|
284
284
|
# don't try to read very large blocks unless LargeFileSupport is enabled
|
285
|
-
if ($size
|
285
|
+
if ($size >= 0x80000000 and not $et->Options('LargeFileSupport')) {
|
286
286
|
$et->Warn('Large block encountered. Aborting.');
|
287
287
|
last;
|
288
288
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exiftool_vendored
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 11.
|
4
|
+
version: 11.52.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew McEachen
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-06-
|
12
|
+
date: 2019-06-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: exiftool
|