exiftool_vendored 11.51.0 → 11.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
|