exiftool_vendored 13.30.0 → 13.33.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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +57 -1
  3. data/bin/MANIFEST +5 -0
  4. data/bin/META.json +4 -3
  5. data/bin/META.yml +3 -2
  6. data/bin/README +47 -46
  7. data/bin/exiftool +88 -60
  8. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +7 -5
  9. data/bin/lib/Image/ExifTool/Canon.pm +16 -5
  10. data/bin/lib/Image/ExifTool/Exif.pm +7 -4
  11. data/bin/lib/Image/ExifTool/FlashPix.pm +4 -159
  12. data/bin/lib/Image/ExifTool/FujiFilm.pm +13 -3
  13. data/bin/lib/Image/ExifTool/Geotag.pm +5 -3
  14. data/bin/lib/Image/ExifTool/GoPro.pm +23 -4
  15. data/bin/lib/Image/ExifTool/LNK.pm +24 -3
  16. data/bin/lib/Image/ExifTool/Lang/cs.pm +0 -1
  17. data/bin/lib/Image/ExifTool/Lang/de.pm +2 -2
  18. data/bin/lib/Image/ExifTool/Lang/fr.pm +2 -2
  19. data/bin/lib/Image/ExifTool/Lang/it.pm +0 -1
  20. data/bin/lib/Image/ExifTool/Lang/ja.pm +0 -1
  21. data/bin/lib/Image/ExifTool/Lang/nl.pm +0 -1
  22. data/bin/lib/Image/ExifTool/Lang/pl.pm +0 -1
  23. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +0 -1
  24. data/bin/lib/Image/ExifTool/LigoGPS.pm +14 -6
  25. data/bin/lib/Image/ExifTool/Microsoft.pm +158 -1
  26. data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  27. data/bin/lib/Image/ExifTool/Nikon.pm +80 -39
  28. data/bin/lib/Image/ExifTool/NikonCustom.pm +40 -10
  29. data/bin/lib/Image/ExifTool/Olympus.pm +240 -35
  30. data/bin/lib/Image/ExifTool/PDF.pm +1 -0
  31. data/bin/lib/Image/ExifTool/Panasonic.pm +4 -4
  32. data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  33. data/bin/lib/Image/ExifTool/Pentax.pm +276 -56
  34. data/bin/lib/Image/ExifTool/Plot.pm +2 -3
  35. data/bin/lib/Image/ExifTool/QuickTime.pm +13 -5
  36. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +41 -17
  37. data/bin/lib/Image/ExifTool/Sigma.pm +19 -1
  38. data/bin/lib/Image/ExifTool/Sony.pm +5 -2
  39. data/bin/lib/Image/ExifTool/TNEF.pm +487 -0
  40. data/bin/lib/Image/ExifTool/TagLookup.pm +4374 -4262
  41. data/bin/lib/Image/ExifTool/TagNames.pod +259 -22
  42. data/bin/lib/Image/ExifTool/WriteExif.pl +14 -12
  43. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -0
  44. data/bin/lib/Image/ExifTool/Writer.pl +142 -139
  45. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  46. data/bin/lib/Image/ExifTool.pm +16 -7
  47. data/bin/lib/Image/ExifTool.pod +45 -44
  48. data/bin/perl-Image-ExifTool.spec +46 -45
  49. data/lib/exiftool_vendored/version.rb +1 -1
  50. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 407bb495700282a96cd7754a1e9ce3a6a7dcf4813d87e827aaee71072c30c3db
4
- data.tar.gz: 062ad0aa55b80eec46031dbc893626cd378be12829be2cd70752170f8084e52a
3
+ metadata.gz: 5188f2fb9bb03c179101219cd17d5129411b4f517c3e6acd10c915336d0fa89e
4
+ data.tar.gz: 953b6ce7f3f1a259cbc4f34e7b72a4851460d762297132f9498306644aede5e5
5
5
  SHA512:
6
- metadata.gz: aee8809f7201113e2d5d4e0af3818fc9a2d6336b6300adc85406d55bc18af20e5e6944b6370caff28e4d472a80d8d35f4e182782bfb96b96c52f73daeb8c6438
7
- data.tar.gz: 8926eb6ea49420269786c0addbdc87e4c0fe3aa19e113369e7591bf59bed98308494de80a797c8e9b3c6941d580ade0e210680960ebc2513c13d67d446e7cd33
6
+ metadata.gz: 6bc2708043ba0de2e7f492c456f0257a342771e7d962a306620ded3ce97a30727087a0d5200ed615ac083b394f8dee318b4e7e68e472739028df1c98d91e17fa
7
+ data.tar.gz: b2ce97b5597a47050ed22df9baec8a3b760f3da83956fd7c842e0d4eddbcc6b44597b0c40f024bfca54421141f27c954aae6bee6f51dbdb3eba271fa84cfb69f
data/bin/Changes CHANGED
@@ -7,6 +7,60 @@ RSS feed: https://exiftool.org/rss.xml
7
7
  Note: The most recent production release is Version 13.30. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ July 25, 2025 - Version 13.33
11
+
12
+ - Added read support for TNEF files (eg. "winmail.dat")
13
+ - Added a new Canon HighlightTonePriority value (github #339)
14
+ - Decode Canon FocusBracketing tag (github #340)
15
+ - Decode more tags for newer Nikon Z models (thanks Warren Hatch)
16
+ - Decode a few more Olympus tags (thanks Karsten Gieselmann)
17
+ - Decode a few more FujiFilm tags (github #343)
18
+ - Handle Olympus RawDev2IFD tag 0x8000 (named it RawDevSubIFD)
19
+ - Improved recognition of some Sony lenses (github #342)
20
+ - Enhanced the -p option to cycle through sub-subdocuments
21
+ - Improved extraction of GoPro timed GPS to use sub-subdocuments to separate
22
+ the individual fixes, allowing -p to extract all fixes at sub-second
23
+ resolution (althought for earlier models these don't all contain timestamps)
24
+ - Extract EXIF information from Sigma fp MOV videos
25
+ - Patched to avoid "multi-segment EXIF with external pointers" error when
26
+ writing Olympus OM-1 JPG files converted by some utilities
27
+ - Fixed decoding of Panasonic LongExposureNRUsed (thanks AndrewJ)
28
+ - Fixed long-standing bug when using special characters in the -d option
29
+ argument
30
+
31
+ July 2, 2025 - Version 13.32
32
+
33
+ - Added a new Olympus CameraType (thanks Herb and Albert Shan)
34
+ - Added a new Sony LensType (github #335)
35
+ - Added a new Nikon CropHiSpeed value (thanks Albert Shan)
36
+ - Added a warning if a tag value couldn't be packed for writing to a binary
37
+ data structure
38
+ - Decode more Ricoh/Pentax AF tags for some models (thanks Karsten Gieselmann)
39
+ - Decode Canon HDR-PQ tag (github #336)
40
+ - Extract a couple more EXIF tags
41
+ - Patched to allow a dot (.) in the name of a structure element when writing
42
+ - Fixed "uninitialized value" bug when using -w with the -stay_open feature
43
+ - Fixed bug in -file option when using tag names to specify the name of the
44
+ alternate file (the tags were taken only from the first input file unless a
45
+ file name formatting code was also specified)
46
+
47
+ June 19, 2025 - Version 13.31
48
+
49
+ - Added a new CanonModelID and RFLensType (thanks Norbert Wasser)
50
+ - Added some new FujiFilm AdvancedFilter values (thanks Greybeard)
51
+ - Added a new Nikon Z LensID (thanks Warren Hatch)
52
+ - Decode a few new Sigma tags
53
+ - Decode two more types of timed GPS from MP4 videos
54
+ - Decode more Pentax AF tags for some models (thanks Karsten Gieselmann)
55
+ - Extract Pages MediaBox from PDF files (github #333)
56
+ - Enhanced Validate feature to check some embedded images
57
+ - Remove sub-seconds if they exist when writing a PDF date
58
+ - Removed a debugging warning left in the -plot update of 13.28
59
+ - Changed DNG ProfileIFD RGBTables to Binary-type tag (github #334)
60
+ - Internal code improvements in the handling of some trailers
61
+ - Patched LNK string parsing for Windows nonconformity (github #332)
62
+ - Fixed a few possible "uninitialized value" warnings
63
+
10
64
  May 22, 2025 - Version 13.30 (production release)
11
65
 
12
66
  - Added a new Canon RF lens (thanks Norbert Wasser)
@@ -50,6 +104,8 @@ Apr. 25, 2025 - Version 13.28
50
104
  - Decode ShutterCount for Canon EOS R8 and R50 (github #325)
51
105
  - Decode ThumbnailTIFF from some Insta360 videos
52
106
  - Decode AROT:HDRGainCurveSize from APP10
107
+ - Enhanced the -plot feature to allow Multi option to specify a different
108
+ number of datasets for each plot
53
109
  - Updated to the 2025 MPF specification
54
110
  - Renamed K-3III AFPoints to AFPointsSelected and changed decoding
55
111
  - Fixed bug introduced in 13.23 that could cause an incorrect parsing of XMP
@@ -388,7 +444,7 @@ Nov. 12, 2024 - Version 13.03
388
444
  Nov. 5, 2024 - Version 13.02
389
445
 
390
446
  - Enhanced -j -l output to add optional "fmt" and "hex" fields
391
- - Enhanced -geotag option to support Android "Export Timeline data" JSON
447
+ - Enhanced -geotag option to support Google Maps "Export Timeline data" JSON
392
448
  format
393
449
  - Changed ProductVersion of Windows launcher to match ExifTool version
394
450
  - Patched to use empty group name instead of "Copy0" for family 4 group name
data/bin/MANIFEST CHANGED
@@ -177,6 +177,7 @@ html/TagNames/SigmaRaw.html
177
177
  html/TagNames/Sony.html
178
178
  html/TagNames/SonyIDC.html
179
179
  html/TagNames/Stim.html
180
+ html/TagNames/TNEF.html
180
181
  html/TagNames/Text.html
181
182
  html/TagNames/Theora.html
182
183
  html/TagNames/Torrent.html
@@ -434,6 +435,7 @@ lib/Image/ExifTool/SigmaRaw.pm
434
435
  lib/Image/ExifTool/Sony.pm
435
436
  lib/Image/ExifTool/SonyIDC.pm
436
437
  lib/Image/ExifTool/Stim.pm
438
+ lib/Image/ExifTool/TNEF.pm
437
439
  lib/Image/ExifTool/TagInfoXML.pm
438
440
  lib/Image/ExifTool/TagLookup.pm
439
441
  lib/Image/ExifTool/TagNames.pod
@@ -887,6 +889,8 @@ t/Sony.t
887
889
  t/Sony_2.out
888
890
  t/Sony_3.out
889
891
  t/Sony_5.out
892
+ t/TNEF.t
893
+ t/TNEF_2.out
890
894
  t/TestLib.pm
891
895
  t/Text.t
892
896
  t/Text_2.out
@@ -1179,6 +1183,7 @@ t/images/Sigma.x3f
1179
1183
  t/images/SigmaDP2.x3f
1180
1184
  t/images/Sony.jpg
1181
1185
  t/images/Sony.pmp
1186
+ t/images/TNEF.tnef
1182
1187
  t/images/Text.csv
1183
1188
  t/images/Text1.txt
1184
1189
  t/images/Text2.txt
data/bin/META.json CHANGED
@@ -4,13 +4,13 @@
4
4
  "Phil Harvey (philharvey66 at gmail.com)"
5
5
  ],
6
6
  "dynamic_config" : 1,
7
- "generated_by" : "ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter version 2.143240",
7
+ "generated_by" : "ExtUtils::MakeMaker version 7.62, CPAN::Meta::Converter version 2.150010",
8
8
  "license" : [
9
9
  "perl_5"
10
10
  ],
11
11
  "meta-spec" : {
12
12
  "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
13
- "version" : "2"
13
+ "version" : 2
14
14
  },
15
15
  "name" : "Image-ExifTool",
16
16
  "no_index" : {
@@ -50,5 +50,6 @@
50
50
  }
51
51
  },
52
52
  "release_status" : "stable",
53
- "version" : "13.30"
53
+ "version" : "13.33",
54
+ "x_serialization_backend" : "JSON::PP version 4.06"
54
55
  }
data/bin/META.yml CHANGED
@@ -7,7 +7,7 @@ build_requires:
7
7
  configure_requires:
8
8
  ExtUtils::MakeMaker: '0'
9
9
  dynamic_config: 1
10
- generated_by: 'ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter version 2.143240'
10
+ generated_by: 'ExtUtils::MakeMaker version 7.62, CPAN::Meta::Converter version 2.150010'
11
11
  license: perl
12
12
  meta-spec:
13
13
  url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -31,4 +31,5 @@ recommends:
31
31
  Time::HiRes: '0'
32
32
  requires:
33
33
  perl: '5.004'
34
- version: '13.30'
34
+ version: '13.33'
35
+ x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
data/bin/README CHANGED
@@ -14,50 +14,51 @@ supported by ExifTool (r = read, w = write, c = create):
14
14
 
15
15
  File Types
16
16
  ------------+-------------+-------------+-------------+------------
17
- 360 r/w | DOCX r | ITC r | NUMBERS r | RAM r
18
- 3FR r | DPX r | J2C r | NXD r | RAR r
19
- 3G2 r/w | DR4 r/w/c | JNG r/w | O r | RAW r/w
20
- 3GP r/w | DSS r | JP2 r/w | ODP r | RIFF r
21
- 7Z r | DV r | JPEG r/w | ODS r | RSRC r
22
- A r | DVB r/w | JSON r | ODT r | RTF r
23
- AA r | DVR-MS r | JXL r/w | OFR r | RW2 r/w
24
- AAC r | DYLIB r | K25 r | OGG r | RWL r/w
25
- AAE r | EIP r | KDC r | OGV r | RWZ r
26
- AAX r/w | EPS r/w | KEY r | ONP r | RM r
27
- ACR r | EPUB r | LA r | OPUS r | SEQ r
28
- AFM r | ERF r/w | LFP r | ORF r/w | SKETCH r
29
- AI r/w | EXE r | LIF r | ORI r/w | SO r
30
- AIFF r | EXIF r/w/c | LNK r | OTF r | SR2 r/w
31
- APE r | EXR r | LRV r/w | PAC r | SRF r
32
- ARQ r/w | EXV r/w/c | M2TS r | PAGES r | SRW r/w
33
- ARW r/w | F4A/V r/w | M4A/V r/w | PBM r/w | SVG r
34
- ASF r | FFF r/w | MACOS r | PCAP r | SWF r
35
- AVI r | FITS r | MAX r | PCAPNG r | THM r/w
36
- AVIF r/w | FLA r | MEF r/w | PCD r | TIFF r/w
37
- AZW r | FLAC r | MIE r/w/c | PCX r | TORRENT r
38
- BMP r | FLIF r/w | MIFF r | PDB r | TTC r
39
- BPG r | FLV r | MKA r | PDF r/w | TTF r
40
- BTF r | FPF r | MKS r | PEF r/w | TXT r
41
- C2PA r | FPX r | MKV r | PFA r | VCF r
42
- CHM r | GIF r/w | MNG r/w | PFB r | VNT r
43
- COS r | GLV r/w | MOBI r | PFM r | VRD r/w/c
44
- CR2 r/w | GPR r/w | MODD r | PGF r | VSD r
45
- CR3 r/w | GZ r | MOI r | PGM r/w | WAV r
46
- CRM r/w | HDP r/w | MOS r/w | PLIST r | WDP r/w
47
- CRW r/w | HDR r | MOV r/w | PICT r | WEBP r/w
48
- CS1 r/w | HEIC r/w | MP3 r | PMP r | WEBM r
49
- CSV r | HEIF r/w | MP4 r/w | PNG r/w | WMA r
50
- CUR r | HTML r | MPC r | PPM r/w | WMV r
51
- CZI r | ICC r/w/c | MPG r | PPT r | WPG r
52
- DCM r | ICO r | MPO r/w | PPTX r | WTV r
53
- DCP r/w | ICS r | MQV r/w | PS r/w | WV r
54
- DCR r | IDML r | MRC r | PSB r/w | X3F r/w
55
- DFONT r | IIQ r/w | MRW r/w | PSD r/w | XCF r
56
- DIVX r | IND r/w | MXF r | PSP r | XISF r
57
- DJVU r | INSP r/w | NEF r/w | QTIF r/w | XLS r
58
- DLL r | INSV r | NKA r | R3D r | XLSX r
59
- DNG r/w | INX r | NKSC r/w | RA r | XMP r/w/c
60
- DOC r | ISO r | NRW r/w | RAF r/w | ZIP r
17
+ 360 r/w | DPX r | JNG r/w | ODP r | RSRC r
18
+ 3FR r | DR4 r/w/c | JP2 r/w | ODS r | RTF r
19
+ 3G2 r/w | DSS r | JPEG r/w | ODT r | RW2 r/w
20
+ 3GP r/w | DV r | JSON r | OFR r | RWL r/w
21
+ 7Z r | DVB r/w | JXL r/w | OGG r | RWZ r
22
+ A r | DVR-MS r | K25 r | OGV r | RM r
23
+ AA r | DYLIB r | KDC r | ONP r | SEQ r
24
+ AAC r | EIP r | KEY r | OPUS r | SKETCH r
25
+ AAE r | EPS r/w | LA r | ORF r/w | SO r
26
+ AAX r/w | EPUB r | LFP r | ORI r/w | SR2 r/w
27
+ ACR r | ERF r/w | LIF r | OTF r | SRF r
28
+ AFM r | EXE r | LNK r | PAC r | SRW r/w
29
+ AI r/w | EXIF r/w/c | LRV r/w | PAGES r | SVG r
30
+ AIFF r | EXR r | M2TS r | PBM r/w | SWF r
31
+ APE r | EXV r/w/c | M4A/V r/w | PCAP r | THM r/w
32
+ ARQ r/w | F4A/V r/w | MACOS r | PCAPNG r | TIFF r/w
33
+ ARW r/w | FFF r/w | MAX r | PCD r | TNEF r
34
+ ASF r | FITS r | MEF r/w | PCX r | TORRENT r
35
+ AVI r | FLA r | MIE r/w/c | PDB r | TTC r
36
+ AVIF r/w | FLAC r | MIFF r | PDF r/w | TTF r
37
+ AZW r | FLIF r/w | MKA r | PEF r/w | TXT r
38
+ BMP r | FLV r | MKS r | PFA r | VCF r
39
+ BPG r | FPF r | MKV r | PFB r | VNT r
40
+ BTF r | FPX r | MNG r/w | PFM r | VRD r/w/c
41
+ C2PA r | GIF r/w | MOBI r | PGF r | VSD r
42
+ CHM r | GLV r/w | MODD r | PGM r/w | WAV r
43
+ COS r | GPR r/w | MOI r | PLIST r | WDP r/w
44
+ CR2 r/w | GZ r | MOS r/w | PICT r | WEBP r/w
45
+ CR3 r/w | HDP r/w | MOV r/w | PMP r | WEBM r
46
+ CRM r/w | HDR r | MP3 r | PNG r/w | WMA r
47
+ CRW r/w | HEIC r/w | MP4 r/w | PPM r/w | WMV r
48
+ CS1 r/w | HEIF r/w | MPC r | PPT r | WPG r
49
+ CSV r | HTML r | MPG r | PPTX r | WTV r
50
+ CUR r | ICC r/w/c | MPO r/w | PS r/w | WV r
51
+ CZI r | ICO r | MQV r/w | PSB r/w | X3F r/w
52
+ DCM r | ICS r | MRC r | PSD r/w | XCF r
53
+ DCP r/w | IDML r | MRW r/w | PSP r | XISF r
54
+ DCR r | IIQ r/w | MXF r | QTIF r/w | XLS r
55
+ DFONT r | IND r/w | NEF r/w | R3D r | XLSX r
56
+ DIVX r | INSP r/w | NKA r | RA r | XMP r/w/c
57
+ DJVU r | INSV r | NKSC r/w | RAF r/w | ZIP r
58
+ DLL r | INX r | NRW r/w | RAM r |
59
+ DNG r/w | ISO r | NUMBERS r | RAR r |
60
+ DOC r | ITC r | NXD r | RAW r/w |
61
+ DOCX r | J2C r | O r | RIFF r |
61
62
 
62
63
  Meta Information
63
64
  ----------------------+----------------------+---------------------
@@ -109,8 +110,8 @@ your home directory, then you would type the following commands in a
109
110
  terminal window to extract and run ExifTool:
110
111
 
111
112
  cd ~/Desktop
112
- gzip -dc Image-ExifTool-13.30.tar.gz | tar -xf -
113
- cd Image-ExifTool-13.30
113
+ gzip -dc Image-ExifTool-13.33.tar.gz | tar -xf -
114
+ cd Image-ExifTool-13.33
114
115
  ./exiftool t/images/ExifTool.jpg
115
116
 
116
117
  Note: These commands extract meta information from one of the test images.
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.30';
14
+ my $version = '13.33';
15
15
 
16
16
  $^W = 1; # enable global warnings
17
17
 
@@ -101,9 +101,9 @@ my @csvFiles; # list of files when reading with CSV option (in ExifTool Ch
101
101
  my @csvTags; # order of tags for first file with CSV option (lower case)
102
102
  my @delFiles; # list of files to delete
103
103
  my @dynamicFiles; # list of -tagsFromFile files with dynamic names and -TAG<=FMT pairs
104
+ my (@echo3, @echo4);# stdout and stderr echo after processing is complete
104
105
  my @efile; # files for writing list of error/fail/same file names
105
106
  my @exclude; # list of excluded tags
106
- my (@echo3, @echo4);# stdout and stderr echo after processing is complete
107
107
  my @files; # list of files and directories to scan
108
108
  my @moreArgs; # more arguments to process after -stay_open -@
109
109
  my @newValues; # list of new tag values to set
@@ -118,7 +118,6 @@ my %csvTags; # lookup for all found tags with CSV option (lower case keys
118
118
  my %database; # lookup for database information based on file name (in ExifTool Charset)
119
119
  my %filterExt; # lookup for filtered extensions
120
120
  my %ignore; # directory names to ignore
121
- my $ignoreHidden; # flag to ignore hidden files
122
121
  my %outComma; # flag that output text file needs a comma
123
122
  my %outTrailer; # trailer for output text file
124
123
  my %preserveTime; # preserved timestamps for files
@@ -130,6 +129,7 @@ my %usedFileName; # lookup for file names we already used in TestName feature
130
129
  my %utf8FileName; # lookup for file names that are UTF-8 encoded
131
130
  my %warnedOnce; # lookup for once-only warnings
132
131
  my %wext; # -W extensions to write
132
+ my %wroteHEAD; # list of output txt files to which we wrote HEAD
133
133
  my $allGroup; # show group name for all tags
134
134
  my $altEnc; # alternate character encoding if not UTF-8
135
135
  my $argFormat; # use exiftool argument-format output
@@ -175,6 +175,7 @@ my $forcePrint; # string to use for missing tag values (undef to not print t
175
175
  my $geoOnly; # flag to extract Geolocation tags only
176
176
  my $helped; # flag to avoid printing help if no tags specified
177
177
  my $html; # flag for html-formatted output (2=html dump)
178
+ my $ignoreHidden; # flag to ignore hidden files
178
179
  my $interrupted; # flag set if CTRL-C is pressed during a critical process
179
180
  my $isBinary; # true if value is a SCALAR ref
180
181
  my $isWriting; # flag set if we are writing tags
@@ -227,7 +228,6 @@ my $validFile; # flag indicating we processed a valid file
227
228
  my $verbose; # verbose setting
228
229
  my $vout; # verbose output file reference (\*STDOUT or \*STDERR by default)
229
230
  my $windowTitle; # title for console window
230
- my %wroteHEAD; # list of output txt files to which we wrote HEAD
231
231
  my $xml; # flag for XML-formatted output
232
232
 
233
233
  # flag to keep the input -@ argfile open:
@@ -451,8 +451,10 @@ undef @efile;
451
451
  undef @exclude;
452
452
  undef @files;
453
453
  undef @newValues;
454
+ undef @requestTags;
454
455
  undef @srcFmt;
455
456
  undef @tags;
457
+ undef %altFile;
456
458
  undef %appended;
457
459
  undef %countLink;
458
460
  undef %created;
@@ -472,6 +474,7 @@ undef %usedFileName;
472
474
  undef %utf8FileName;
473
475
  undef %warnedOnce;
474
476
  undef %wext;
477
+ undef %wroteHEAD;
475
478
  undef $allGroup;
476
479
  undef $altEnc;
477
480
  undef $argFormat;
@@ -488,8 +491,8 @@ undef $doSetFileName;
488
491
  undef $doUnzip;
489
492
  undef $end;
490
493
  undef $endDir;
491
- undef $escapeHTML;
492
494
  undef $escapeC;
495
+ undef $escapeHTML;
493
496
  undef $evalWarning;
494
497
  undef $executeID;
495
498
  undef $failCondition;
@@ -500,18 +503,22 @@ undef $fixLen;
500
503
  undef $forcePrint;
501
504
  undef $geoOnly;
502
505
  undef $ignoreHidden;
506
+ undef $isBinary;
503
507
  undef $joinLists;
504
508
  undef $langOpt;
509
+ undef $listDir;
505
510
  undef $listItem;
506
511
  undef $multiFile;
507
512
  undef $noBinary;
508
513
  undef $outOpt;
514
+ undef $plot;
509
515
  undef $preserveTime;
510
516
  undef $progress;
511
517
  undef $progressCount;
512
518
  undef $progressIncr;
513
519
  undef $progressMax;
514
520
  undef $progressNext;
521
+ undef $rafStdin;
515
522
  undef $recurse;
516
523
  undef $scanWritable;
517
524
  undef $sectHeader;
@@ -521,6 +528,7 @@ undef $showTagID;
521
528
  undef $structOpt;
522
529
  undef $tagOut;
523
530
  undef $textOut;
531
+ undef $textOut2;
524
532
  undef $textOverwrite;
525
533
  undef $tmpFile;
526
534
  undef $tmpText;
@@ -2529,7 +2537,7 @@ T2: foreach $t2 (@tags2) {
2529
2537
  # print the results for this file
2530
2538
  if (%printFmt) {
2531
2539
  # output using print format file (-p) option
2532
- my ($type, $doc, $grp, $lastDoc, $cache);
2540
+ my ($type, @doc, $grp, $lastDoc, $cache);
2533
2541
  $fileTrailer = '';
2534
2542
  # repeat for each embedded document if necessary (only if -ee used)
2535
2543
  if ($et->Options('ExtractEmbedded')) {
@@ -2538,7 +2546,8 @@ T2: foreach $t2 (@tags2) {
2538
2546
  } else {
2539
2547
  $lastDoc = 0;
2540
2548
  }
2541
- for ($doc=0; $doc<=$lastDoc; ++$doc) {
2549
+ for ($doc[0]=0; $doc[0]<=$lastDoc; ) {
2550
+ my $doc = join '-', @doc;
2542
2551
  my ($skipBody, $opt);
2543
2552
  foreach $type (qw(HEAD SECT IF BODY ENDS TAIL)) {
2544
2553
  my $prf = $printFmt{$type} or next;
@@ -2548,7 +2557,7 @@ T2: foreach $t2 (@tags2) {
2548
2557
  }
2549
2558
  next if $type eq 'BODY' and $skipBody;
2550
2559
  # silence "IF" warnings and warnings for subdocuments > 1
2551
- if ($type eq 'IF' or ($doc > 1 and not $$et{OPTIONS}{IgnoreMinorErrors})) {
2560
+ if ($type eq 'IF' or (($doc[0] > 1 or @doc > 1) and not $$et{OPTIONS}{IgnoreMinorErrors})) {
2552
2561
  $opt = 'Silent';
2553
2562
  } else {
2554
2563
  $opt = 'Warn';
@@ -2587,6 +2596,14 @@ T2: foreach $t2 (@tags2) {
2587
2596
  print $fp @lines;
2588
2597
  }
2589
2598
  }
2599
+ # find next available doc-subdoc
2600
+ push @doc, 1;
2601
+ while (@doc > 1) {
2602
+ my $nextDoc = join '-', @doc;
2603
+ last if $$et{HAS_DOC}{$nextDoc};
2604
+ pop @doc;
2605
+ ++$doc[-1];
2606
+ }
2590
2607
  }
2591
2608
  delete $printFmt{HEAD} unless defined $outfile; # print header only once per output file
2592
2609
  my $errs = $et->GetInfo('Warning', 'Error');
@@ -4518,6 +4535,10 @@ sub SuggestedExtension($$$)
4518
4535
  } elsif ($$valPt =~ /^.{4}ftyp(3gp|mp4|f4v|qt )/s) {
4519
4536
  my %movType = ( 'qt ' => 'mov' );
4520
4537
  $ext = $movType{$1} || $1;
4538
+ } elsif ($$valPt =~ /^<(!DOCTYPE )?html/i) {
4539
+ $ext = 'html';
4540
+ } elsif ($$valPt =~ /^[\n\r]*\{[\n\r]*\\rtf/) {
4541
+ $ext = 'rtf';
4521
4542
  } elsif ($$valPt !~ /^.{0,4096}\0/s) {
4522
4543
  $ext = 'txt';
4523
4544
  } elsif ($$valPt =~ /^BM.{15}\0/s) {
@@ -5054,50 +5075,51 @@ supported by ExifTool (r = read, w = write, c = create):
5054
5075
 
5055
5076
  File Types
5056
5077
  ------------+-------------+-------------+-------------+------------
5057
- 360 r/w | DOCX r | ITC r | NUMBERS r | RAM r
5058
- 3FR r | DPX r | J2C r | NXD r | RAR r
5059
- 3G2 r/w | DR4 r/w/c | JNG r/w | O r | RAW r/w
5060
- 3GP r/w | DSS r | JP2 r/w | ODP r | RIFF r
5061
- 7Z r | DV r | JPEG r/w | ODS r | RSRC r
5062
- A r | DVB r/w | JSON r | ODT r | RTF r
5063
- AA r | DVR-MS r | JXL r/w | OFR r | RW2 r/w
5064
- AAC r | DYLIB r | K25 r | OGG r | RWL r/w
5065
- AAE r | EIP r | KDC r | OGV r | RWZ r
5066
- AAX r/w | EPS r/w | KEY r | ONP r | RM r
5067
- ACR r | EPUB r | LA r | OPUS r | SEQ r
5068
- AFM r | ERF r/w | LFP r | ORF r/w | SKETCH r
5069
- AI r/w | EXE r | LIF r | ORI r/w | SO r
5070
- AIFF r | EXIF r/w/c | LNK r | OTF r | SR2 r/w
5071
- APE r | EXR r | LRV r/w | PAC r | SRF r
5072
- ARQ r/w | EXV r/w/c | M2TS r | PAGES r | SRW r/w
5073
- ARW r/w | F4A/V r/w | M4A/V r/w | PBM r/w | SVG r
5074
- ASF r | FFF r/w | MACOS r | PCAP r | SWF r
5075
- AVI r | FITS r | MAX r | PCAPNG r | THM r/w
5076
- AVIF r/w | FLA r | MEF r/w | PCD r | TIFF r/w
5077
- AZW r | FLAC r | MIE r/w/c | PCX r | TORRENT r
5078
- BMP r | FLIF r/w | MIFF r | PDB r | TTC r
5079
- BPG r | FLV r | MKA r | PDF r/w | TTF r
5080
- BTF r | FPF r | MKS r | PEF r/w | TXT r
5081
- C2PA r | FPX r | MKV r | PFA r | VCF r
5082
- CHM r | GIF r/w | MNG r/w | PFB r | VNT r
5083
- COS r | GLV r/w | MOBI r | PFM r | VRD r/w/c
5084
- CR2 r/w | GPR r/w | MODD r | PGF r | VSD r
5085
- CR3 r/w | GZ r | MOI r | PGM r/w | WAV r
5086
- CRM r/w | HDP r/w | MOS r/w | PLIST r | WDP r/w
5087
- CRW r/w | HDR r | MOV r/w | PICT r | WEBP r/w
5088
- CS1 r/w | HEIC r/w | MP3 r | PMP r | WEBM r
5089
- CSV r | HEIF r/w | MP4 r/w | PNG r/w | WMA r
5090
- CUR r | HTML r | MPC r | PPM r/w | WMV r
5091
- CZI r | ICC r/w/c | MPG r | PPT r | WPG r
5092
- DCM r | ICO r | MPO r/w | PPTX r | WTV r
5093
- DCP r/w | ICS r | MQV r/w | PS r/w | WV r
5094
- DCR r | IDML r | MRC r | PSB r/w | X3F r/w
5095
- DFONT r | IIQ r/w | MRW r/w | PSD r/w | XCF r
5096
- DIVX r | IND r/w | MXF r | PSP r | XISF r
5097
- DJVU r | INSP r/w | NEF r/w | QTIF r/w | XLS r
5098
- DLL r | INSV r | NKA r | R3D r | XLSX r
5099
- DNG r/w | INX r | NKSC r/w | RA r | XMP r/w/c
5100
- DOC r | ISO r | NRW r/w | RAF r/w | ZIP r
5078
+ 360 r/w | DPX r | JNG r/w | ODP r | RSRC r
5079
+ 3FR r | DR4 r/w/c | JP2 r/w | ODS r | RTF r
5080
+ 3G2 r/w | DSS r | JPEG r/w | ODT r | RW2 r/w
5081
+ 3GP r/w | DV r | JSON r | OFR r | RWL r/w
5082
+ 7Z r | DVB r/w | JXL r/w | OGG r | RWZ r
5083
+ A r | DVR-MS r | K25 r | OGV r | RM r
5084
+ AA r | DYLIB r | KDC r | ONP r | SEQ r
5085
+ AAC r | EIP r | KEY r | OPUS r | SKETCH r
5086
+ AAE r | EPS r/w | LA r | ORF r/w | SO r
5087
+ AAX r/w | EPUB r | LFP r | ORI r/w | SR2 r/w
5088
+ ACR r | ERF r/w | LIF r | OTF r | SRF r
5089
+ AFM r | EXE r | LNK r | PAC r | SRW r/w
5090
+ AI r/w | EXIF r/w/c | LRV r/w | PAGES r | SVG r
5091
+ AIFF r | EXR r | M2TS r | PBM r/w | SWF r
5092
+ APE r | EXV r/w/c | M4A/V r/w | PCAP r | THM r/w
5093
+ ARQ r/w | F4A/V r/w | MACOS r | PCAPNG r | TIFF r/w
5094
+ ARW r/w | FFF r/w | MAX r | PCD r | TNEF r
5095
+ ASF r | FITS r | MEF r/w | PCX r | TORRENT r
5096
+ AVI r | FLA r | MIE r/w/c | PDB r | TTC r
5097
+ AVIF r/w | FLAC r | MIFF r | PDF r/w | TTF r
5098
+ AZW r | FLIF r/w | MKA r | PEF r/w | TXT r
5099
+ BMP r | FLV r | MKS r | PFA r | VCF r
5100
+ BPG r | FPF r | MKV r | PFB r | VNT r
5101
+ BTF r | FPX r | MNG r/w | PFM r | VRD r/w/c
5102
+ C2PA r | GIF r/w | MOBI r | PGF r | VSD r
5103
+ CHM r | GLV r/w | MODD r | PGM r/w | WAV r
5104
+ COS r | GPR r/w | MOI r | PLIST r | WDP r/w
5105
+ CR2 r/w | GZ r | MOS r/w | PICT r | WEBP r/w
5106
+ CR3 r/w | HDP r/w | MOV r/w | PMP r | WEBM r
5107
+ CRM r/w | HDR r | MP3 r | PNG r/w | WMA r
5108
+ CRW r/w | HEIC r/w | MP4 r/w | PPM r/w | WMV r
5109
+ CS1 r/w | HEIF r/w | MPC r | PPT r | WPG r
5110
+ CSV r | HTML r | MPG r | PPTX r | WTV r
5111
+ CUR r | ICC r/w/c | MPO r/w | PS r/w | WV r
5112
+ CZI r | ICO r | MQV r/w | PSB r/w | X3F r/w
5113
+ DCM r | ICS r | MRC r | PSD r/w | XCF r
5114
+ DCP r/w | IDML r | MRW r/w | PSP r | XISF r
5115
+ DCR r | IIQ r/w | MXF r | QTIF r/w | XLS r
5116
+ DFONT r | IND r/w | NEF r/w | R3D r | XLSX r
5117
+ DIVX r | INSP r/w | NKA r | RA r | XMP r/w/c
5118
+ DJVU r | INSV r | NKSC r/w | RAF r/w | ZIP r
5119
+ DLL r | INX r | NRW r/w | RAM r |
5120
+ DNG r/w | ISO r | NUMBERS r | RAR r |
5121
+ DOC r | ITC r | NXD r | RAW r/w |
5122
+ DOCX r | J2C r | O r | RIFF r |
5101
5123
 
5102
5124
  Meta Information
5103
5125
  ----------------------+----------------------+---------------------
@@ -5595,7 +5617,9 @@ Output requested metadata in binary format without tag names or descriptions
5595
5617
  images or other binary data, but it may also be useful for some text strings
5596
5618
  since control characters (such as newlines) are not replaced by '.' as they
5597
5619
  are in the default output. By default, list items are separated by a
5598
- newline when extracted with the B<-b> option, but this may be changed (see
5620
+ newline when extracted with the B<-b> option and no terminator is added
5621
+ after each tag value, but the list separator may be changed with a B<-sep>
5622
+ option and a terminator may be set by adding a second B<-sep> option (see
5599
5623
  the B<-sep> option for details). May be combined with B<-j>, B<-php> or
5600
5624
  B<-X> to extract binary data in JSON, PHP or XML format, but note that
5601
5625
  "Unsafe" tags are not extracted as binary unless they are specified
@@ -5977,7 +6001,7 @@ translation, follow these steps (you must have Perl installed for this):
5977
6001
  6. Edit the generated language module lib/Image/ExifTool/Lang/ru.pm, and
5978
6002
  search and replace all 'MISSING' strings in the file with your translations.
5979
6003
 
5980
- 7. Email the module ('ru.pm' in this example) to philharvey66 at gmail.com
6004
+ 7. Email the module ('ru.pm' in this example) to exiftool.team@gmail.com
5981
6005
 
5982
6006
  8. Thank you!!
5983
6007
 
@@ -6052,7 +6076,7 @@ with this command:
6052
6076
 
6053
6077
  produces output like this:
6054
6078
 
6055
- -- Generated by ExifTool 13.30 --
6079
+ -- Generated by ExifTool 13.33 --
6056
6080
  File: a.jpg - 2003:10:31 15:44:19
6057
6081
  (f/5.6, 1/60s, ISO 100)
6058
6082
  File: b.jpg - 2006:05:23 11:57:38
@@ -6629,6 +6653,9 @@ condition (ie. "$OK").
6629
6653
  7) The API RequestTags option is automatically set for all tags used in the
6630
6654
  B<-if> condition.
6631
6655
 
6656
+ 8) The condition fails if a Perl error occurs. This could happen for
6657
+ instance if an undefined value (eg. a missing tag) is used improperly.
6658
+
6632
6659
  =item B<-m> (B<-ignoreMinorErrors>)
6633
6660
 
6634
6661
  Ignore minor errors and warnings. This enables writing to files with minor
@@ -6863,9 +6890,10 @@ otherwise family 0 is assumed. The B<-l> or B<-v> option may be combined
6863
6890
  with B<-listf>, B<-listr> or B<-listwf> to add file descriptions to the
6864
6891
  list. The B<-lang> option may be combined with B<-listx> to output
6865
6892
  descriptions in a single language, and the B<-sort> and/or B<-lang> options
6866
- may be combined with B<-listgeo>. Also, the API GeolocMinPop, GeolocFeature
6867
- and GeolocAltNames options apply to the B<-listgeo> output. Here are some
6868
- examples:
6893
+ may be combined with B<-listgeo> (installation of the alternate database is
6894
+ required for the additional languages). Also, the API GeolocMinPop,
6895
+ GeolocFeature and GeolocAltNames options apply to the B<-listgeo> output.
6896
+ Here are some examples:
6869
6897
 
6870
6898
  -list # list all tag names
6871
6899
  -list -EXIF:All # list all EXIF tags
@@ -7295,6 +7323,8 @@ used in file names.)
7295
7323
 
7296
7324
  =head4 Helper functions
7297
7325
 
7326
+ Note that function names are case sensitive.
7327
+
7298
7328
  C<DateFmt>
7299
7329
 
7300
7330
  Simplifies reformatting of individual date/time values. This function acts
@@ -7332,8 +7362,6 @@ rewritten unnecessarily:
7332
7362
 
7333
7363
  exiftool -sep '##' '-keywords<${keywords;NoDups(1)}' a.jpg
7334
7364
 
7335
- Note that function names are case sensitive.
7336
-
7337
7365
  ExifTool 12.64 adds an API NoDups option which makes the NoDups helper
7338
7366
  function largely redundant, with all the functionality except the ability to
7339
7367
  avoid rewriting the file if there are no duplicates, but with the advantage