exiftool_vendored 13.53.0 → 13.55.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c653bfd291b7881243e271beba3bdcf6af6343647b7736ea5750a8b6427c6ba2
4
- data.tar.gz: 550046af23b550283317d05a7d3387d2e977efd2d3c74af0285808f8035c7756
3
+ metadata.gz: 35f445a987bad9af06713ee281ac9326af82356ee74c56cfe4a80fbac4269530
4
+ data.tar.gz: 646a4cc76746896c14f93fb07a82d246b407463ef072e3bf6b8fb876e6d1da44
5
5
  SHA512:
6
- metadata.gz: a2dabd27da939c74ff1300eaea01b3597c994d9fe456bb2d386f6d5eba0f6fb682c8c154ac3ad833e8fd7e63f421b01f3c5c0b307989cb8e030284f2a5c0bf13
7
- data.tar.gz: eb1cff971653f098e366a793786e43caa79a378134287935afd997f5dad37212f9bb6bf7b64523c85c4774e53fcd84379dc34b1016fa428f6d158011f0b69f5b
6
+ metadata.gz: 0b51679828aab04533ff1cd3e89affd5f46342b61595969f547303f1122a22d801a13c5f3da419f6f759d40b6fda82dd15aa6ca22167359ebb1af18627518f23
7
+ data.tar.gz: 42923e341ce91d31f9b0306e70c75847c3a263f330f4681ee38cfc78bd7db2a4b4cfa786c2bf99fe5a172946dce8dff157413cb1c30dff839ff53f6968fea96e
data/bin/Changes CHANGED
@@ -4,19 +4,36 @@ ExifTool Version History
4
4
 
5
5
  RSS feed: https://exiftool.org/rss.xml
6
6
 
7
- Note: The most recent production release is Version 13.50. (Other versions are
7
+ Note: The most recent production release is Version 13.55. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ Apr. 7, 2026 - Version 13.55 (production release)
11
+
12
+ - Added a few new Windows LNK GUID values
13
+ - Extract more unknown information from QuickTime metadata tracks
14
+ - Improved config_files/local_time.config to preserve sub seconds
15
+ - Improved lens identification logic for Canon cameras in the case where the
16
+ maker notes are missing
17
+
18
+ Apr. 1, 2026 - Version 13.54
19
+
20
+ - Security update
21
+ - Added a new PentaxModelID
22
+ - Decode timed GPS from another DJI model
23
+ - Decode more information from Apple live photo videos
24
+ - Updated DICOM tags to 2026b specification
25
+ - Patched to fix failed tests on Windows (was a bug in the tests)
26
+ - Patched to allow spaces in Windows title strings
27
+
10
28
  Mar. 19, 2026 - Version 13.53
11
29
 
12
- - Added ability to read FileCreateDate (btime) on Linux systems
30
+ - Security update (Windows only)
31
+ - Added ability to read FileCreateDate (btime) on Linux systems (requires
32
+ File::StatX)
13
33
  - Added a bunch more Sony lenses (thanks Jos Roost)
14
34
  - Added warnings for possibly malicious or corrupted LNK files (github #401)
15
- - Decode timed GPS from Kenwood DRV-A510W MP4 videos
16
35
  - Decode more information from LNK files
17
- - Reduced memory requirements when running on a large number of files,
18
- particularly when the -U option is used
19
- - Patched a potential security issue in Windows version
36
+ - Decode timed GPS from Kenwood DRV-A510W MP4 videos
20
37
  - Fixed possible "undefined value" runtime warnings when reading torrent and
21
38
  WPG files (thanks Raf)
22
39
  - Fixed issue which could result in an "uninitialized value" runtime error
@@ -52,12 +69,12 @@ Feb. 19, 2026 - Version 13.51
52
69
 
53
70
  Feb. 7, 2026 - Version 13.50 (production release)
54
71
 
72
+ - Security update (MacOS only, thanks Tay Kiat Loong)
55
73
  - Added a few new Sony lenses (thanks Jos Roost)
56
74
  - Added a couple of new Canon lenses (thanks Norbert Wasser)
57
75
  - Decode another Samsung trailer tag
58
76
  - Decode BlackLevels from some Canon CRW files (github #387)
59
77
  - Updated Sony maker note decoding for the ILCE-7M5 (thanks Jos Roost)
60
- - Patched potential MacOS security issue (thanks Tay Kiat Loong)
61
78
  - Fixed -list options so reading image files beforehand doesn't add tags to
62
79
  the output when running multiple commands using the -execute feature
63
80
 
@@ -1865,10 +1882,10 @@ Jan. 13, 2022 - Version 12.39
1865
1882
 
1866
1883
  Dec. 20, 2021 - Version 12.38
1867
1884
 
1885
+ - Security update (thanks Joe Lothan)
1868
1886
  - Decode a number of new tags for the Nikon Z9 (thanks Warren Hatch)
1869
1887
  - Patched incorrect decoding of AEBShotCount for the Canon EOS 90D
1870
1888
  - Patched EXR reader to support long tag names
1871
- - Patched security issue (thanks Joe Lothan)
1872
1889
  - Fixed an incorrect tag ID for a new Nikon MakerNote tag (github #108)
1873
1890
  - Fixed XMP-exif:GPSMeasureMode conversions to match EXIF
1874
1891
  - Fixed problem where some namespaces may be undeclared in the -X output when
@@ -2021,13 +2038,13 @@ Aug. 12, 2021 - Version 12.30 (production release)
2021
2038
 
2022
2039
  July 9, 2021 - Version 12.29
2023
2040
 
2041
+ - Security update
2024
2042
  - Added a few new Nikon and Olympus lenses (thanks LibRaw)
2025
2043
  - Improved a QuickTime "File format error" message to be more meaningful, and
2026
2044
  made it a minor error
2027
2045
  - Changed PNG writer to add EXIF before IDAT
2028
2046
  - Some changes the way CAI JUMBF metadata is handled
2029
2047
  - Patched to read timed GPS from a different type of INSV videos
2030
- - Patched a security issue
2031
2048
  - Fixed problem where ExifTool could hang when processing mebx timed metadata
2032
2049
 
2033
2050
  June 22, 2021 - Version 12.28
@@ -2062,6 +2079,7 @@ June 9, 2021 - Version 12.27
2062
2079
 
2063
2080
  May 20, 2021 - Version 12.26 (production release)
2064
2081
 
2082
+ - Security update (for vulnerability in argument of -lang option)
2065
2083
  - Added support for JPEG Stereo (JPS) images
2066
2084
  - Added a new Sony LensType (thanks LibRaw)
2067
2085
  - Added a new PentaxModelID (thanks LibRaw)
@@ -2069,7 +2087,6 @@ May 20, 2021 - Version 12.26 (production release)
2069
2087
  the -X option output (exiftool.ca is still recognized when reading XML)
2070
2088
  - Improved handling of large-array warnings in -htmldump output
2071
2089
  - Changed handling of escaped characters in #[CSTR] lines of -@ argfile
2072
- - Patched security vulnerability in argument of -lang option
2073
2090
  - Fixed problem which could cause a "Wide character" warning and generate a
2074
2091
  corrupted output file when writing some illegal values
2075
2092
 
@@ -2096,6 +2113,7 @@ Apr. 22, 2021 - Version 12.25
2096
2113
 
2097
2114
  Apr. 13, 2021 - Version 12.24
2098
2115
 
2116
+ - Security update (vulnerability in DjVu reader)
2099
2117
  - Added a new PhaseOne RawFormat value (thanks LibRaw)
2100
2118
  - Decode a new Sony tag (thanks Jos Roost)
2101
2119
  - Decode a few new Panasonic and FujiFilm tags (thanks LibRaw and Greybeard)
@@ -2103,7 +2121,6 @@ Apr. 13, 2021 - Version 12.24
2103
2121
  - Recognize AutoCAD DXF files
2104
2122
  - More work on experimental CAI JUMBF read support
2105
2123
  - More work on experimental JPEG XL read/write support
2106
- - Patched security vulnerability in DjVu reader
2107
2124
 
2108
2125
  Apr. 1, 2021 - Version 12.23
2109
2126
 
@@ -7302,6 +7319,7 @@ May 11, 2010 - Version 8.19
7302
7319
 
7303
7320
  Apr. 16, 2010 - Version 8.18
7304
7321
 
7322
+ - Security update (when writing)
7305
7323
  - Added read support for Sony DSC-F1 PMP images
7306
7324
  - Added a new Nikon LensID (thanks Jeffrey Friedl)
7307
7325
  - Decode a number of new Sony tags (thanks Michael Reitinger)
@@ -7309,7 +7327,6 @@ Apr. 16, 2010 - Version 8.18
7309
7327
  - Preserve original file permissions and ownership when writing
7310
7328
  - Made Canon DustRemovalData writable
7311
7329
  - Changed some Pentax WhiteBalance strings for consistency
7312
- - Patched potential security problem when writing values
7313
7330
  - Fixed bug extracting unsynchronized ID3v2.4 information
7314
7331
 
7315
7332
  Apr. 9, 2010 - Version 8.17
data/bin/META.json CHANGED
@@ -50,6 +50,6 @@
50
50
  }
51
51
  },
52
52
  "release_status" : "stable",
53
- "version" : "13.53",
53
+ "version" : "13.55",
54
54
  "x_serialization_backend" : "JSON::PP version 4.06"
55
55
  }
data/bin/META.yml CHANGED
@@ -31,5 +31,5 @@ recommends:
31
31
  Time::HiRes: '0'
32
32
  requires:
33
33
  perl: '5.004'
34
- version: '13.53'
34
+ version: '13.55'
35
35
  x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
data/bin/README CHANGED
@@ -111,8 +111,8 @@ your home directory, then you would type the following commands in a
111
111
  terminal window to extract and run ExifTool:
112
112
 
113
113
  cd ~/Desktop
114
- gzip -dc Image-ExifTool-13.53.tar.gz | tar -xf -
115
- cd Image-ExifTool-13.53
114
+ gzip -dc Image-ExifTool-13.55.tar.gz | tar -xf -
115
+ cd Image-ExifTool-13.55
116
116
  ./exiftool t/images/ExifTool.jpg
117
117
 
118
118
  Note: These commands extract meta information from one of the test images.
@@ -161,8 +161,8 @@ for calculating digest values and providing other features listed below:
161
161
  Win32::API (for proper handling of Windows file names/times)
162
162
  Win32::FindFile (for Windows Unicode directory support, app only)
163
163
  Win32API::File (for Windows Unicode file names and file times)
164
- Compress::Raw::Lzma (for reading encoded 7z files)
165
164
  File::StatX (for reading FileCreateDate on Linux systems)
165
+ Compress::Raw::Lzma (for reading encoded 7z files)
166
166
  IO::Compress::RawDeflate (for writing FLIF images)
167
167
  IO::Uncompress::RawInflate (for reading FLIF images)
168
168
  IO::Compress::Brotli (for writing compressed JXL metadata)
@@ -16,6 +16,7 @@
16
16
  # Requires: ExifTool version 12.78 or later
17
17
  #
18
18
  # Revisions: 2025-10-19 - P. Harvey Created
19
+ # 2026-04-02 - PH Preserve decimal seconds up to 6 digits
19
20
  #------------------------------------------------------------------------------
20
21
 
21
22
  %Image::ExifTool::UserDefined = (
@@ -43,7 +44,7 @@
43
44
  return undef unless $secs;
44
45
  my @info = Image::ExifTool::Geolocation::GetEntry($$loc[0]);
45
46
  $self->Options(TimeZone => $info[5]);
46
- my $localTime = Image::ExifTool::ConvertUnixTime($secs, 1);
47
+ my $localTime = Image::ExifTool::ConvertUnixTime($secs, 1, -6);
47
48
  $self->Options(TimeZone => undef);
48
49
  return $localTime;
49
50
  },
data/bin/exiftool CHANGED
@@ -11,7 +11,7 @@ use strict;
11
11
  use warnings;
12
12
  require 5.004;
13
13
 
14
- my $version = '13.53';
14
+ my $version = '13.55';
15
15
 
16
16
  $^W = 1; # enable global warnings
17
17
 
@@ -309,8 +309,8 @@ my @recommends = qw(
309
309
  POSIX::strptime
310
310
  Time::Local
311
311
  Unicode::LineBreak
312
- Compress::Raw::Lzma
313
312
  File::StatX
313
+ Compress::Raw::Lzma
314
314
  IO::Compress::RawDeflate
315
315
  IO::Uncompress::RawInflate
316
316
  IO::Compress::Brotli
@@ -880,6 +880,11 @@ for (;;) {
880
880
  $val = undef unless $opt =~ s/\^$// or length $val;
881
881
  $mt->Options($opt => $val);
882
882
  } else {
883
+ unless ($pass) {
884
+ push @nextPass, '-api';
885
+ push @nextPass, $opt if defined $opt;
886
+ next;
887
+ }
883
888
  print "Available API Options:\n";
884
889
  my $availableOptions = Image::ExifTool::AvailableOptions();
885
890
  $$_[3] or printf(" %-17s - %s\n", $$_[0], $$_[2]) foreach @$availableOptions;
@@ -902,7 +907,11 @@ for (;;) {
902
907
  if ($a eq 'charset') {
903
908
  my $charset = (@ARGV and $ARGV[0] !~ /^(-|\xe2\x88\x92)/) ? shift : undef;
904
909
  if (not $charset) {
905
- $pass or push(@nextPass, '-charset'), next;
910
+ unless ($pass) {
911
+ push @nextPass, '-charset' ;
912
+ push @nextPass, $charset if defined $charset;
913
+ next;
914
+ }
906
915
  my %charsets;
907
916
  $charsets{$_} = 1 foreach values %Image::ExifTool::charsetName;
908
917
  PrintTagList('Available character sets', sort keys %charsets);
@@ -1144,8 +1153,10 @@ for (;;) {
1144
1153
  $langOpt =~ tr/-A-Z/_a-z/;
1145
1154
  $mt->Options(Lang => $langOpt);
1146
1155
  next if $langOpt eq $mt->Options('Lang');
1147
- } else {
1148
- $pass or push(@nextPass, '-lang'), next;
1156
+ } elsif (not $pass) {
1157
+ push @nextPass, '-lang';
1158
+ push @nextPass, $langOpt if defined $langOpt;
1159
+ next;
1149
1160
  }
1150
1161
  my $langs = $quiet ? '' : "Available languages:\n";
1151
1162
  $langs .= " $_ - $Image::ExifTool::langName{$_}\n" foreach @Image::ExifTool::langs;
@@ -4205,7 +4216,7 @@ sub SetWindowTitle($)
4205
4216
  if ($curTitle ne $title) {
4206
4217
  $curTitle = $title;
4207
4218
  if ($^O eq 'MSWin32') {
4208
- $title =~ tr(-_a-zA-Z0-9%.+/:=?*@~)()dc; # allow only safe characters
4219
+ $title =~ tr(-_a-zA-Z0-9%.+/:=?*@~ )()dc; # allow only safe characters
4209
4220
  $title =~ s/([\/?:%])/^$1/g; # escape remaing questionable chars
4210
4221
  eval { system qq{title $title} };
4211
4222
  } else {
@@ -5275,7 +5286,7 @@ L<Other options|/Other options>
5275
5286
 
5276
5287
  -@ ARGFILE Read command-line arguments from file
5277
5288
  -k (-pause) Pause before terminating
5278
- -list[w|f|wf|g[NUM]|d|x] List various exiftool capabilities
5289
+ -list[w|f|r|wf|g[NUM]|d|x|geo] List various exiftool capabilities
5279
5290
  -ver Print exiftool version number
5280
5291
  -- End of options
5281
5292
 
@@ -5293,7 +5304,7 @@ L<Utilities|/Utilities>
5293
5304
 
5294
5305
  L<Advanced options|/Advanced options>
5295
5306
 
5296
- -api OPT[[^]=[VAL]] Set ExifTool API option
5307
+ -api [OPT[[^]=[VAL]]] Set ExifTool API option
5297
5308
  -common_args Define common arguments
5298
5309
  -config CFGFILE Specify configuration file name
5299
5310
  -echo[NUM] TEXT Echo text to stdout or stderr
@@ -5886,9 +5897,10 @@ Escape characters in output tag values for HTML (B<-E>), XML (B<-ex>) or C
5886
5897
  (B<-ec>). For HTML, all characters with Unicode code points above U+007F
5887
5898
  are escaped as well as the following 5 characters: & (&amp;) E<39> (&#39;)
5888
5899
  E<quot> (&quot;) E<gt> (&gt;) and E<lt> (&lt;). For XML, only these 5
5889
- characters are escaped. The B<-E> option is implied with B<-h>, and B<-ex>
5890
- is implied with B<-X>. For C, all control characters and the backslash are
5891
- escaped. The inverse conversion is applied when writing tags.
5900
+ characters are escaped. The B<-E> option is implied with B<-h>, B<-ex> is
5901
+ implied with B<-X>, B<-ec> is implied with B<-json>, and none of these
5902
+ options apply to the B<-csv> output. For C, all control characters and the
5903
+ backslash are escaped. The inverse conversion is applied when writing tags.
5892
5904
 
5893
5905
  =item B<-f> (B<-forcePrint>)
5894
5906
 
@@ -6147,7 +6159,7 @@ with this command:
6147
6159
 
6148
6160
  produces output like this:
6149
6161
 
6150
- -- Generated by ExifTool 13.53 --
6162
+ -- Generated by ExifTool 13.55 --
6151
6163
  File: a.jpg - 2003:10:31 15:44:19
6152
6164
  (f/5.6, 1/60s, ISO 100)
6153
6165
  File: b.jpg - 2006:05:23 11:57:38
@@ -6297,7 +6309,7 @@ each processed file when writing and the new file name when renaming,
6297
6309
  moving or copying. Verbose levels above B<-v0> do not flush after each
6298
6310
  line. Also see the B<-progress> option.
6299
6311
 
6300
- =item B<-w>[+|!] I<EXT> or I<FMT> (B<-textOut>)
6312
+ =item B<-w>[+][!] I<EXT> or I<FMT> (B<-textOut>)
6301
6313
 
6302
6314
  Write console output to files with names ending in I<EXT>, one for each
6303
6315
  source file. The output file name is obtained by replacing the source file
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
88
88
  sub ProcessExifInfo($$$);
89
89
  sub SwapWords($);
90
90
 
91
- $VERSION = '5.05';
91
+ $VERSION = '5.06';
92
92
 
93
93
  # Note: Removed 'USM' from 'L' lenses since it is redundant - PH
94
94
  # (or is it? Ref 32 shows 5 non-USM L-type lenses)
@@ -10267,6 +10267,19 @@ sub PrintLensID(@)
10267
10267
  }
10268
10268
  @matches = @likely unless @matches;
10269
10269
  @matches = @maybe unless @matches;
10270
+ # use LensModel focal length and aperture if necessary and available
10271
+ if (@matches > 1 and $lensModel and
10272
+ $lensModel =~ /(\d+(?:\.\d+)?(?:-\d+(?:\.\d+)?)?) ?mm ?f\/?(\d+(?:\.\d+)?(?:-\d+(?:\.\d+)?)?)/i)
10273
+ {
10274
+ my ($mm, $fstop) = ($1, $2);
10275
+ my @best;
10276
+ foreach $lens (@matches) {
10277
+ next unless $lens =~ /(\d+(?:\.\d+)?(?:-\d+(?:\.\d+)?)?) ?mm ?f\/?(\d+(?:\.\d+)?(?:-\d+(?:\.\d+)?)?)/i;
10278
+ push @best, $lens if $mm eq $1 and $fstop eq $2;
10279
+ }
10280
+ @matches = @best if @best;
10281
+ }
10282
+
10270
10283
  Image::ExifTool::Exif::MatchLensModel(\@matches, $lensModel);
10271
10284
  return join(' or ', @matches) if @matches;
10272
10285
  } elsif ($lensModel and $lensModel =~ /\d/) {