Skip to content

Commit 8b20bb5

Browse files
Merge pull request #115 from woss/v13.40
Update exiftool to version v13.40
2 parents 992b953 + 17cf36c commit 8b20bb5

10 files changed

Lines changed: 688 additions & 250 deletions

File tree

exiftool/exiftool

Lines changed: 61 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use strict;
1111
use warnings;
1212
require 5.004;
1313

14-
my $version = '13.39';
14+
my $version = '13.40';
1515

1616
$^W = 1; # enable global warnings
1717

@@ -1935,7 +1935,7 @@ if (@fileOrder) {
19351935
# set file count for progress message
19361936
$progressMax = scalar @files if defined $progress;
19371937

1938-
# store duplicate database information under absolute path
1938+
# store duplicate database information under absolute path and with standardized case
19391939
my @dbKeys = keys %database;
19401940
if (@dbKeys) {
19411941
if (eval { require Cwd }) {
@@ -1944,13 +1944,15 @@ if (@dbKeys) {
19441944
foreach (@dbKeys) {
19451945
my $db = $database{$_};
19461946
tr/\\/\// and $database{$_} = $db; # allow for backslashes in SourceFile
1947+
$database{lc} = $db unless $database{lc}; # duplicate entry with lower case
19471948
# (punt on using ConvertFileName here, so $absPath may be a mix of encodings)
19481949
my $absPath = AbsPath($_);
19491950
if (defined $absPath) {
19501951
$database{$absPath} = $db unless $database{$absPath};
19511952
if ($verbose and $verbose > 1) {
19521953
print $vout "Imported entry for '${_}' (full path: '${absPath}')\n";
19531954
}
1955+
$database{lc $absPath} = $db unless $database{lc $absPath};
19541956
} elsif ($verbose and $verbose > 1) {
19551957
print $vout "Imported entry for '${_}' (no full path)\n";
19561958
}
@@ -3259,10 +3261,18 @@ sub SetImageInfo($$$)
32593261
my $csvInfo = $database{$f};
32603262
unless ($csvInfo) {
32613263
next if $f eq '*';
3262-
# check absolute path
3264+
# check absolute path and case-insensitive name
32633265
# (punt on using ConvertFileName here, so $absPath may be a mix of encodings)
32643266
my $absPath = AbsPath($f);
3265-
next unless defined $absPath and $csvInfo = $database{$absPath};
3267+
if (defined $absPath and $database{$absPath}) {
3268+
$csvInfo = $database{$absPath};
3269+
} elsif ($database{lc $f}) {
3270+
$csvInfo = $database{lc $f};
3271+
} elsif (defined $absPath and $database{lc $absPath}) {
3272+
$csvInfo = $database{lc $absPath};
3273+
} else {
3274+
next;
3275+
}
32663276
}
32673277
$found = 1;
32683278
if ($verbose) {
@@ -5079,51 +5089,52 @@ supported by ExifTool (r = read, w = write, c = create):
50795089
50805090
File Types
50815091
------------+-------------+-------------+-------------+------------
5082-
360 r/w | DPX r | J2C r | O r | RIFF r
5083-
3FR r | DR4 r/w/c | JNG r/w | ODP r | RSRC r
5084-
3G2 r/w | DSF r | JP2 r/w | ODS r | RTF r
5085-
3GP r/w | DSS r | JPEG r/w | ODT r | RW2 r/w
5086-
7Z r | DV r | JSON r | OFR r | RWL r/w
5087-
A r | DVB r/w | JXL r/w | OGG r | RWZ r
5088-
AA r | DVR-MS r | K25 r | OGV r | RM r
5089-
AAC r | DYLIB r | KDC r | ONP r | SEQ r
5090-
AAE r | EIP r | KEY r | OPUS r | SKETCH r
5091-
AAX r/w | EPS r/w | LA r | ORF r/w | SO r
5092-
ACR r | EPUB r | LFP r | ORI r/w | SR2 r/w
5093-
AFM r | ERF r/w | LIF r | OTF r | SRF r
5094-
AI r/w | EXE r | LNK r | PAC r | SRW r/w
5095-
AIFF r | EXIF r/w/c | LRV r/w | PAGES r | SVG r
5096-
APE r | EXR r | M2TS r | PBM r/w | SWF r
5097-
ARQ r/w | EXV r/w/c | M4A/V r/w | PCAP r | THM r/w
5098-
ARW r/w | F4A/V r/w | MACOS r | PCAPNG r | TIFF r/w
5099-
ASF r | FFF r/w | MAX r | PCD r | TNEF r
5100-
AVI r | FITS r | MEF r/w | PCX r | TORRENT r
5101-
AVIF r/w | FLA r | MIE r/w/c | PDB r | TTC r
5102-
AZW r | FLAC r | MIFF r | PDF r/w | TTF r
5103-
BMP r | FLIF r/w | MKA r | PEF r/w | TXT r
5104-
BPG r | FLV r | MKS r | PFA r | VCF r
5105-
BTF r | FPF r | MKV r | PFB r | VNT r
5106-
C2PA r | FPX r | MNG r/w | PFM r | VRD r/w/c
5107-
CHM r | GIF r/w | MOBI r | PGF r | VSD r
5108-
COS r | GLV r/w | MODD r | PGM r/w | WAV r
5109-
CR2 r/w | GPR r/w | MOI r | PLIST r | WDP r/w
5110-
CR3 r/w | GZ r | MOS r/w | PICT r | WEBP r/w
5111-
CRM r/w | HDP r/w | MOV r/w | PMP r | WEBM r
5112-
CRW r/w | HDR r | MP3 r | PNG r/w | WMA r
5113-
CS1 r/w | HEIC r/w | MP4 r/w | PPM r/w | WMV r
5114-
CSV r | HEIF r/w | MPC r | PPT r | WPG r
5115-
CUR r | HTML r | MPG r | PPTX r | WTV r
5116-
CZI r | ICC r/w/c | MPO r/w | PS r/w | WV r
5117-
DCM r | ICO r | MQV r/w | PSB r/w | X3F r/w
5118-
DCP r/w | ICS r | MRC r | PSD r/w | XCF r
5119-
DCR r | IDML r | MRW r/w | PSP r | XISF r
5120-
DFONT r | IIQ r/w | MXF r | QTIF r/w | XLS r
5121-
DIVX r | IND r/w | NEF r/w | R3D r | XLSX r
5122-
DJVU r | INSP r/w | NKA r | RA r | XMP r/w/c
5123-
DLL r | INSV r | NKSC r/w | RAF r/w | ZIP r
5124-
DNG r/w | INX r | NRW r/w | RAM r |
5125-
DOC r | ISO r | NUMBERS r | RAR r |
5126-
DOCX r | ITC r | NXD r | RAW r/w |
5092+
360 r/w | DR4 r/w/c | JP2 r/w | ODT r | RWL r/w
5093+
3FR r | DSF r | JPEG r/w | OFR r | RWZ r
5094+
3G2 r/w | DSS r | JSON r | OGG r | RM r
5095+
3GP r/w | DV r | JXL r/w | OGV r | SEQ r
5096+
7Z r | DVB r/w | K25 r | ONP r | SKETCH r
5097+
A r | DVR-MS r | KDC r | OPUS r | SO r
5098+
AA r | DYLIB r | KEY r | ORF r/w | SR2 r/w
5099+
AAC r | EIP r | LA r | ORI r/w | SRF r
5100+
AAE r | EPS r/w | LFP r | OTF r | SRW r/w
5101+
AAX r/w | EPUB r | LIF r | PAC r | SVG r
5102+
ACR r | ERF r/w | LNK r | PAGES r | SWF r
5103+
AFM r | EXE r | LRV r/w | PBM r/w | THM r/w
5104+
AI r/w | EXIF r/w/c | M2TS r | PCAP r | TIFF r/w
5105+
AIFF r | EXR r | M4A/V r/w | PCAPNG r | TNEF r
5106+
APE r | EXV r/w/c | MACOS r | PCD r | TORRENT r
5107+
ARQ r/w | F4A/V r/w | MAX r | PCX r | TTC r
5108+
ARW r/w | FFF r/w | MEF r/w | PDB r | TTF r
5109+
ASF r | FITS r | MIE r/w/c | PDF r/w | TXT r
5110+
AVI r | FLA r | MIFF r | PEF r/w | URL r
5111+
AVIF r/w | FLAC r | MKA r | PFA r | VCF r
5112+
AZW r | FLIF r/w | MKS r | PFB r | VNT r
5113+
BMP r | FLV r | MKV r | PFM r | VRD r/w/c
5114+
BPG r | FPF r | MNG r/w | PGF r | VSD r
5115+
BTF r | FPX r | MOBI r | PGM r/w | VSDX r
5116+
C2PA r | GIF r/w | MODD r | PLIST r | WAV r
5117+
CHM r | GLV r/w | MOI r | PICT r | WDP r/w
5118+
COS r | GPR r/w | MOS r/w | PMP r | WEBP r/w
5119+
CR2 r/w | GZ r | MOV r/w | PNG r/w | WEBM r
5120+
CR3 r/w | HDP r/w | MP3 r | PPM r/w | WMA r
5121+
CRM r/w | HDR r | MP4 r/w | PPT r | WMV r
5122+
CRW r/w | HEIC r/w | MPC r | PPTX r | WOFF r
5123+
CS1 r/w | HEIF r/w | MPG r | PS r/w | WOFF2 r
5124+
CSV r | HTML r | MPO r/w | PSB r/w | WPG r
5125+
CUR r | ICC r/w/c | MQV r/w | PSD r/w | WTV r
5126+
CZI r | ICO r | MRC r | PSP r | WV r
5127+
DCM r | ICS r | MRW r/w | QTIF r/w | X3F r/w
5128+
DCP r/w | IDML r | MXF r | R3D r | XCF r
5129+
DCR r | IIQ r/w | NEF r/w | RA r | XISF r
5130+
DFONT r | IND r/w | NKA r | RAF r/w | XLS r
5131+
DIVX r | INSP r/w | NKSC r/w | RAM r | XLSX r
5132+
DJVU r | INSV r | NRW r/w | RAR r | XMP r/w/c
5133+
DLL r | INX r | NUMBERS r | RAW r/w | ZIP r
5134+
DNG r/w | ISO r | NXD r | RIFF r |
5135+
DOC r | ITC r | O r | RSRC r |
5136+
DOCX r | J2C r | ODP r | RTF r |
5137+
DPX r | JNG r/w | ODS r | RW2 r/w |
51275138
51285139
Meta Information
51295140
----------------------+----------------------+---------------------
@@ -6084,7 +6095,7 @@ with this command:
60846095
60856096
produces output like this:
60866097
6087-
-- Generated by ExifTool 13.39 --
6098+
-- Generated by ExifTool 13.40 --
60886099
File: a.jpg - 2003:10:31 15:44:19
60896100
(f/5.6, 1/60s, ISO 100)
60906101
File: b.jpg - 2006:05:23 11:57:38

exiftool/lib/Image/ExifTool.pm

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
2929
%jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
3030
%static_vars $advFmtSelf $configFile @configFiles $noConfig);
3131

32-
$VERSION = '13.39';
32+
$VERSION = '13.40';
3333
$RELEASE = '';
3434
@ISA = qw(Exporter);
3535
%EXPORT_TAGS = (
@@ -155,7 +155,7 @@ sub ReadValue($$$;$$$);
155155
Real::Audio Real::Metafile Red RIFF AIFF ASF TNEF WTV DICOM FITS XISF MIE
156156
JSON HTML XMP::SVG Palm Palm::MOBI Palm::EXTH Torrent EXE EXE::PEVersion
157157
EXE::PEString EXE::DebugRSDS EXE::DebugNB10 EXE::Misc EXE::MachO EXE::PEF
158-
EXE::ELF EXE::AR EXE::CHM LNK PCAP Font VCard Text VCard::VCalendar
158+
EXE::ELF EXE::AR EXE::CHM LNK LNK::INI PCAP Font VCard Text VCard::VCalendar
159159
VCard::VNote RSRC Rawzor ZIP ZIP::GZIP ZIP::RAR ZIP::RAR5 RTF OOXML iWork
160160
ISO FLIR::AFF FLIR::FPF MacOS MacOS::MDItem FlashPix::DocTable
161161
);
@@ -544,6 +544,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
544544
TTF => ['Font', 'True Type Font'],
545545
TUB => 'PSP',
546546
TXT => ['TXT', 'Text file'],
547+
URL => ['LNK', 'Windows shortcut URL'],
547548
VCARD=> ['VCard','Virtual Card'],
548549
VCF => 'VCARD',
549550
VOB => ['MPEG', 'Video Object'],
@@ -976,7 +977,7 @@ $testLen = 1024; # number of bytes to read when testing for magic number
976977
JXL => '(\xff\x0a|\0\0\0\x0cJXL \x0d\x0a......ftypjxl )',
977978
LFP => '\x89LFP\x0d\x0a\x1a\x0a',
978979
LIF => '\x70\0{3}.{4}\x2a.{4}<\0',
979-
LNK => '.{4}\x01\x14\x02\0{5}\xc0\0{6}\x46',
980+
LNK => '(.{4}\x01\x14\x02\0{5}\xc0\0{6}\x46|\[[InternetShortcut\][\x0d\x0a])',
980981
LRI => 'LELR \0',
981982
M2TS => '.{0,191}?\x47(.{187}|.{191})\x47(.{187}|.{191})\x47',
982983
MacOS=> '\0\x05\x16\x07\0.\0\0Mac OS X ',

exiftool/lib/Image/ExifTool.pod

Lines changed: 46 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -65,51 +65,52 @@ supported by ExifTool (r = read, w = write, c = create):
6565

6666
File Types
6767
------------+-------------+-------------+-------------+------------
68-
360 r/w | DPX r | J2C r | O r | RIFF r
69-
3FR r | DR4 r/w/c | JNG r/w | ODP r | RSRC r
70-
3G2 r/w | DSF r | JP2 r/w | ODS r | RTF r
71-
3GP r/w | DSS r | JPEG r/w | ODT r | RW2 r/w
72-
7Z r | DV r | JSON r | OFR r | RWL r/w
73-
A r | DVB r/w | JXL r/w | OGG r | RWZ r
74-
AA r | DVR-MS r | K25 r | OGV r | RM r
75-
AAC r | DYLIB r | KDC r | ONP r | SEQ r
76-
AAE r | EIP r | KEY r | OPUS r | SKETCH r
77-
AAX r/w | EPS r/w | LA r | ORF r/w | SO r
78-
ACR r | EPUB r | LFP r | ORI r/w | SR2 r/w
79-
AFM r | ERF r/w | LIF r | OTF r | SRF r
80-
AI r/w | EXE r | LNK r | PAC r | SRW r/w
81-
AIFF r | EXIF r/w/c | LRV r/w | PAGES r | SVG r
82-
APE r | EXR r | M2TS r | PBM r/w | SWF r
83-
ARQ r/w | EXV r/w/c | M4A/V r/w | PCAP r | THM r/w
84-
ARW r/w | F4A/V r/w | MACOS r | PCAPNG r | TIFF r/w
85-
ASF r | FFF r/w | MAX r | PCD r | TNEF r
86-
AVI r | FITS r | MEF r/w | PCX r | TORRENT r
87-
AVIF r/w | FLA r | MIE r/w/c | PDB r | TTC r
88-
AZW r | FLAC r | MIFF r | PDF r/w | TTF r
89-
BMP r | FLIF r/w | MKA r | PEF r/w | TXT r
90-
BPG r | FLV r | MKS r | PFA r | VCF r
91-
BTF r | FPF r | MKV r | PFB r | VNT r
92-
C2PA r | FPX r | MNG r/w | PFM r | VRD r/w/c
93-
CHM r | GIF r/w | MOBI r | PGF r | VSD r
94-
COS r | GLV r/w | MODD r | PGM r/w | WAV r
95-
CR2 r/w | GPR r/w | MOI r | PLIST r | WDP r/w
96-
CR3 r/w | GZ r | MOS r/w | PICT r | WEBP r/w
97-
CRM r/w | HDP r/w | MOV r/w | PMP r | WEBM r
98-
CRW r/w | HDR r | MP3 r | PNG r/w | WMA r
99-
CS1 r/w | HEIC r/w | MP4 r/w | PPM r/w | WMV r
100-
CSV r | HEIF r/w | MPC r | PPT r | WPG r
101-
CUR r | HTML r | MPG r | PPTX r | WTV r
102-
CZI r | ICC r/w/c | MPO r/w | PS r/w | WV r
103-
DCM r | ICO r | MQV r/w | PSB r/w | X3F r/w
104-
DCP r/w | ICS r | MRC r | PSD r/w | XCF r
105-
DCR r | IDML r | MRW r/w | PSP r | XISF r
106-
DFONT r | IIQ r/w | MXF r | QTIF r/w | XLS r
107-
DIVX r | IND r/w | NEF r/w | R3D r | XLSX r
108-
DJVU r | INSP r/w | NKA r | RA r | XMP r/w/c
109-
DLL r | INSV r | NKSC r/w | RAF r/w | ZIP r
110-
DNG r/w | INX r | NRW r/w | RAM r |
111-
DOC r | ISO r | NUMBERS r | RAR r |
112-
DOCX r | ITC r | NXD r | RAW r/w |
68+
360 r/w | DR4 r/w/c | JP2 r/w | ODT r | RWL r/w
69+
3FR r | DSF r | JPEG r/w | OFR r | RWZ r
70+
3G2 r/w | DSS r | JSON r | OGG r | RM r
71+
3GP r/w | DV r | JXL r/w | OGV r | SEQ r
72+
7Z r | DVB r/w | K25 r | ONP r | SKETCH r
73+
A r | DVR-MS r | KDC r | OPUS r | SO r
74+
AA r | DYLIB r | KEY r | ORF r/w | SR2 r/w
75+
AAC r | EIP r | LA r | ORI r/w | SRF r
76+
AAE r | EPS r/w | LFP r | OTF r | SRW r/w
77+
AAX r/w | EPUB r | LIF r | PAC r | SVG r
78+
ACR r | ERF r/w | LNK r | PAGES r | SWF r
79+
AFM r | EXE r | LRV r/w | PBM r/w | THM r/w
80+
AI r/w | EXIF r/w/c | M2TS r | PCAP r | TIFF r/w
81+
AIFF r | EXR r | M4A/V r/w | PCAPNG r | TNEF r
82+
APE r | EXV r/w/c | MACOS r | PCD r | TORRENT r
83+
ARQ r/w | F4A/V r/w | MAX r | PCX r | TTC r
84+
ARW r/w | FFF r/w | MEF r/w | PDB r | TTF r
85+
ASF r | FITS r | MIE r/w/c | PDF r/w | TXT r
86+
AVI r | FLA r | MIFF r | PEF r/w | URL r
87+
AVIF r/w | FLAC r | MKA r | PFA r | VCF r
88+
AZW r | FLIF r/w | MKS r | PFB r | VNT r
89+
BMP r | FLV r | MKV r | PFM r | VRD r/w/c
90+
BPG r | FPF r | MNG r/w | PGF r | VSD r
91+
BTF r | FPX r | MOBI r | PGM r/w | VSDX r
92+
C2PA r | GIF r/w | MODD r | PLIST r | WAV r
93+
CHM r | GLV r/w | MOI r | PICT r | WDP r/w
94+
COS r | GPR r/w | MOS r/w | PMP r | WEBP r/w
95+
CR2 r/w | GZ r | MOV r/w | PNG r/w | WEBM r
96+
CR3 r/w | HDP r/w | MP3 r | PPM r/w | WMA r
97+
CRM r/w | HDR r | MP4 r/w | PPT r | WMV r
98+
CRW r/w | HEIC r/w | MPC r | PPTX r | WOFF r
99+
CS1 r/w | HEIF r/w | MPG r | PS r/w | WOFF2 r
100+
CSV r | HTML r | MPO r/w | PSB r/w | WPG r
101+
CUR r | ICC r/w/c | MQV r/w | PSD r/w | WTV r
102+
CZI r | ICO r | MRC r | PSP r | WV r
103+
DCM r | ICS r | MRW r/w | QTIF r/w | X3F r/w
104+
DCP r/w | IDML r | MXF r | R3D r | XCF r
105+
DCR r | IIQ r/w | NEF r/w | RA r | XISF r
106+
DFONT r | IND r/w | NKA r | RAF r/w | XLS r
107+
DIVX r | INSP r/w | NKSC r/w | RAM r | XLSX r
108+
DJVU r | INSV r | NRW r/w | RAR r | XMP r/w/c
109+
DLL r | INX r | NUMBERS r | RAW r/w | ZIP r
110+
DNG r/w | ISO r | NXD r | RIFF r |
111+
DOC r | ITC r | O r | RSRC r |
112+
DOCX r | J2C r | ODP r | RTF r |
113+
DPX r | JNG r/w | ODS r | RW2 r/w |
113114

114115
Meta Information
115116
----------------------+----------------------+---------------------

0 commit comments

Comments
 (0)