exiftool_vendored 11.98.0 → 12.10.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.

Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +198 -2
  3. data/bin/MANIFEST +8 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +43 -42
  7. data/bin/exiftool +102 -75
  8. data/bin/lib/Image/ExifTool.pm +163 -111
  9. data/bin/lib/Image/ExifTool.pod +127 -93
  10. data/bin/lib/Image/ExifTool/AIFF.pm +2 -2
  11. data/bin/lib/Image/ExifTool/APE.pm +2 -2
  12. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +21 -10
  13. data/bin/lib/Image/ExifTool/Canon.pm +202 -14
  14. data/bin/lib/Image/ExifTool/CanonCustom.pm +82 -16
  15. data/bin/lib/Image/ExifTool/DPX.pm +56 -2
  16. data/bin/lib/Image/ExifTool/DarwinCore.pm +22 -3
  17. data/bin/lib/Image/ExifTool/EXE.pm +8 -5
  18. data/bin/lib/Image/ExifTool/Exif.pm +15 -6
  19. data/bin/lib/Image/ExifTool/Font.pm +9 -2
  20. data/bin/lib/Image/ExifTool/GIF.pm +6 -1
  21. data/bin/lib/Image/ExifTool/GeoTiff.pm +2 -0
  22. data/bin/lib/Image/ExifTool/Geotag.pm +2 -2
  23. data/bin/lib/Image/ExifTool/GoPro.pm +48 -22
  24. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  25. data/bin/lib/Image/ExifTool/ID3.pm +91 -12
  26. data/bin/lib/Image/ExifTool/IPTC.pm +1 -0
  27. data/bin/lib/Image/ExifTool/JSON.pm +27 -4
  28. data/bin/lib/Image/ExifTool/Lang/de.pm +3 -1
  29. data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  30. data/bin/lib/Image/ExifTool/M2TS.pm +19 -19
  31. data/bin/lib/Image/ExifTool/MacOS.pm +154 -38
  32. data/bin/lib/Image/ExifTool/Matroska.pm +3 -1
  33. data/bin/lib/Image/ExifTool/Minolta.pm +7 -2
  34. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +11 -10
  35. data/bin/lib/Image/ExifTool/Nikon.pm +164 -20
  36. data/bin/lib/Image/ExifTool/Olympus.pm +39 -17
  37. data/bin/lib/Image/ExifTool/PNG.pm +14 -3
  38. data/bin/lib/Image/ExifTool/PPM.pm +5 -5
  39. data/bin/lib/Image/ExifTool/Panasonic.pm +148 -14
  40. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +34 -0
  41. data/bin/lib/Image/ExifTool/Parrot.pm +2 -1
  42. data/bin/lib/Image/ExifTool/Pentax.pm +3 -1
  43. data/bin/lib/Image/ExifTool/Photoshop.pm +2 -1
  44. data/bin/lib/Image/ExifTool/QuickTime.pm +289 -37
  45. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +419 -60
  46. data/bin/lib/Image/ExifTool/README +26 -22
  47. data/bin/lib/Image/ExifTool/RSRC.pm +17 -11
  48. data/bin/lib/Image/ExifTool/RTF.pm +12 -7
  49. data/bin/lib/Image/ExifTool/Radiance.pm +7 -2
  50. data/bin/lib/Image/ExifTool/Ricoh.pm +19 -1
  51. data/bin/lib/Image/ExifTool/Shift.pl +1 -0
  52. data/bin/lib/Image/ExifTool/SigmaRaw.pm +40 -33
  53. data/bin/lib/Image/ExifTool/Sony.pm +426 -40
  54. data/bin/lib/Image/ExifTool/TagLookup.pm +5799 -5671
  55. data/bin/lib/Image/ExifTool/TagNames.pod +584 -97
  56. data/bin/lib/Image/ExifTool/Validate.pm +4 -4
  57. data/bin/lib/Image/ExifTool/WriteExif.pl +3 -2
  58. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +26 -18
  59. data/bin/lib/Image/ExifTool/Writer.pl +47 -24
  60. data/bin/lib/Image/ExifTool/XMP.pm +99 -17
  61. data/bin/lib/Image/ExifTool/XMP2.pl +1 -0
  62. data/bin/lib/Image/ExifTool/XMPStruct.pl +3 -1
  63. data/bin/lib/Image/ExifTool/ZISRAW.pm +123 -0
  64. data/bin/perl-Image-ExifTool.spec +42 -41
  65. data/lib/exiftool_vendored/version.rb +1 -1
  66. metadata +8 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dd206618b02e9bdc096dbaf8dc497c6bce6a27e5782b42db0a308ba043752c49
4
- data.tar.gz: 783ecd5157f77b7f56d7c85a3ddcb86aebc170e6e937ebfacfa7141a90f74cd8
3
+ metadata.gz: cf0281354d058359e076603ce713b412cd838a4c5ffe326534275ec858cb11a1
4
+ data.tar.gz: a556f35232b6cca374d9b118d8b8b8ac9bf4e09e5714fae9c1f3c216ca658b20
5
5
  SHA512:
6
- metadata.gz: c4e18ca046d054a9a06289921a7ebd70801a64f3ac133de19156969077a1618841926104c9eef4cfdcd57ead9aed13ef2b1cd53b16a7b204fd6bba4342b633ef
7
- data.tar.gz: 397e4a867443f593c3d73be6e549e9b0df9256ef551cad3ff39ef335bada1a47bf63fcdc58435672f39873418d74ecfec7ecc385008da471cd6cb34904f5c26a
6
+ metadata.gz: ec70f7062aaee4ed619bb00bf91fa3d23cee45ebb15b1c3b3c383ee8867ea29b63b01e199a49dd2ef59f727eb8a156015f817ff31271c81ed69d3d560ea90a78
7
+ data.tar.gz: 33512db4034b62eeddecc4b3b8ec5c370d089cc9526ec1e37989bf26fef200ffe563b3c42e4dd3395be867a81e2bd2790b816610d3249a70d49828de1fdecb9e
@@ -4,9 +4,204 @@ 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 11.85. (Other versions are
7
+ Note: The most recent production release is Version 12.00. (Other versions are
8
8
  considered development releases, and are not uploaded to CPAN.)
9
9
 
10
+ Nov. 12, 2020 - Version 12.10
11
+
12
+ - Added -validate test for proper TIFF magic number in JPEG EXIF header
13
+ - Added support for Nikon Z7 LensData version 0801
14
+ - Added a new XMP-GPano tag
15
+ - Decode ColorData for the Canon EOS 1DXmkIII (thanks LibRaw)
16
+ - Decode more tags for the Sony ILCE-7SM3 (thanks Jos Roost)
17
+ - Automatically apply QuickTimeUTC option for CR3 files
18
+ - Improved decoding of XAttrMDLabel from MacOS files
19
+ - Ignore time zones when writing date/time values and using the -d option
20
+ - Enhanced -echo3 and -echo4 options to allow exit status to be returned
21
+ - Changed -execute so the -q option no longer suppresses the "{ready}" message
22
+ when a synchronization number is used (eg. -execute123)
23
+
24
+ Oct. 29, 2020 - Version 12.09
25
+
26
+ - Added ability to copy CanonMakerNotes from CR3 images to other file types
27
+ - Added read support for ON1 presets file (.ONP)
28
+ - Added two new CanonModelID values
29
+ - Added trailing "/" when writing QuickTime:GPSCoordinates
30
+ - Added a number of new XMP-crs tags
31
+ - Added a new Sony LensType (thanks Jos Roost)
32
+ - Added a new Nikon Z lens (thanks LibRaw)
33
+ - Added a new Canon LensType
34
+ - Decode ColorData for Canon EOS R5/R6
35
+ - Decode a couple of new HEIF tags
36
+ - Decode FirmwareVersion for Canon M50
37
+ - Improved decoding of Sony CreativeStyle tags (thanks Jos Roost)
38
+ - Improved parsing of Radiance files to recognize comments
39
+ - Renamed GIF AspectRatio tag to PixelAspectRatio
40
+ - Patched EndDir() feature so subdirectories are always processed when -r is
41
+ used (previously, EndDir() would end processing of a directory completely)
42
+ - Yet another tweak to the EventTime formatting rules (also allow time-only
43
+ values with fractional seconds and a time zone)
44
+ - Avoid loading GoPro module unnecessarily when reading MP4 videos from some
45
+ other cameras
46
+ - Fixed problem with an incorrect naming of CodecID tags in some MKV videos
47
+ - Fixed verbose output to avoid "adding" messages for existing flattened XMP
48
+ tags
49
+
50
+ Oct. 15, 2020 - Version 12.08
51
+
52
+ - Added read support for MacOS "._" sidecar files
53
+ - Added a new Sony LensType (thanks Jos Roost)
54
+ - Recognize Mac OS X xattr files
55
+ - Extract ThumbnailImage from MP4 videos of more dashcam models
56
+ - Improved decoding of a number of Sony tags (thanks Jos Roost)
57
+ - Fixed problem where the special -if EndDir() function didn't work properly
58
+ for directories after the one in which it was initially called
59
+ - Patched to read DLL files which don't have a .rsrc section (thanks Hank)
60
+ - Patched to support new IGC date format when geotagging
61
+ - Patched to read DLL files with an invalid size in the header
62
+
63
+ Oct. 2, 2020 - Version 12.07
64
+
65
+ - Added support for GoPro .360 videos
66
+ - Added some new Canon RF and Nikkor Z lenses (thanks LibRaw)
67
+ - Added some new Sony LensType and CreativeStyle values and decode some
68
+ ILCE-7C tags (thanks Jos Roost)
69
+ - Added a number of new Olympus SceneMode values (thanks Herb)
70
+ - Added a new Nikon LensID
71
+ - Decode more timed metadata from Insta360 videos (thanks Thomas Allen)
72
+ - Decode timed GPS from videos of more Garmin dashcam models
73
+ - Decode a new GoPro video tag
74
+ - Reformat time-only EventTime values when writing and prevent arbitrary
75
+ strings from being written
76
+ - Patched to accept backslashes in SourceFile entries for -csv option
77
+
78
+ Sept. 11, 2020 - Version 12.06
79
+
80
+ - Added read support for Lyrics3 metadata (and fixed problem where APE
81
+ metadata may be ignored if Lyrics3 exists)
82
+ - Added a new Panasonic VideoBurstMode value (thanks Klaus Homeister)
83
+ - Added a new Olympus MultipleExposureMode value
84
+ - Added a new Nikon LensID
85
+ - Added back conversions for XMP-dwc EventTime that were removed in 12.04 with
86
+ a patch to allow time-only values
87
+ - Decode GIF AspectRatio
88
+ - Decode Olympus FocusBracketStepSize (thanks Karsten)
89
+ - Extract PNG iDOT chunk in Binary format with the name AppleDataOffsets
90
+ - Process PNG images which do not start with mandatory IHDR chunk
91
+
92
+ Aug. 24, 2020 - Version 12.05
93
+
94
+ - Added a new Panasonic SelfTimer value (thanks Herb)
95
+ - Decode a few more DPX tags (thanks Harry Mallon)
96
+ - Extract AIFF APPL tag as ApplicationData
97
+ - Fixed bug writing QuickTime ItemList 'gnre' Genre values
98
+ - Fixed an incorrect value for Panasonic VideoBurstResolution (thanks Herb)
99
+ - Fixed problem when applying a time shift to some invalid makernote date/time
100
+ values
101
+
102
+ Aug. 10, 2020 - Version 12.04
103
+
104
+ - Added read support for Zeiss ZISRAW CZI files
105
+ - Added some new values for a couple of Olympus tags (thanks Sebastian)
106
+ - Decode a number of new tags for the Sony ILCE-7SM3 (thanks Jos Roost)
107
+ - Removed formatting restrictions on XMP-dwc:EventTime to allow a time-only
108
+ value to be written
109
+ - Moved new QuckTime ItemList tags added in version 12.02 to the proper group
110
+ (they were incorrectly added to the Keys group)
111
+ - Improved QuickTime -v3 output to show default language codes
112
+ - Patched -lang option to work for the values of somet tags with coded
113
+ translations
114
+ - Patched the format of a number of QuickTime tags when writing for improved
115
+ compatibility with iTunes and AtomicParsley
116
+ - Patched to write a default QuickTime language code of 0x0000 (null) instead
117
+ of 0x55c4 ('und')
118
+
119
+ July 29, 2020 - Version 12.03
120
+
121
+ - Added family 7 group names to allow tag ID's to be specified when reading
122
+ and writing
123
+ - Fixed a couple of typos in tag values (thanks Herb)
124
+ - API Changes:
125
+ - Added HexTagIDs option
126
+ - Enhanced GetNewValue() to allow family 7 groups names to be used
127
+ - Internal Changes:
128
+ - Changed Composite tag ID's to use "-" instead of "::" as a separator
129
+
130
+ July 27, 2020 - Version 12.02
131
+
132
+ - Added support for a number of new QuickTime ItemList tags
133
+ - Added support for writing XMP-xmp:RatingPercent
134
+ - Added a new Sony LensType (thanks Jos Roost and LibRaw)
135
+ - Added a new Pentax LensType (thanks James O'Neill)
136
+ - Decode barcodes from Ricoh APP5 RMETA segment
137
+ - Decode a few new QuickTime tags written by Ricoh and Garmin cameras
138
+ - Decode timed GPS from Sony A7R IV MP4 videos
139
+ - Decode timed GPS from 70mai dashcam videos
140
+ - Decode a few new Panasonic tags (thanks Klaus Homeister)
141
+ - Decode altitude and more accurate latitude/longitude from Transcend Driver
142
+ Pro 230 MP4 videos
143
+ - Improved decoding of some Canon EOS 1DXmkIII custom functions
144
+ - Allow integer QuickTime TrackNumber and DiskNumber values
145
+ - Relax validity check of QuickTime:ContentCreateDate when writing with -n
146
+ - Removed "Com" from the start of some unknown ItemList tag names
147
+ - Patched CanonCustom decoding for bug in Canon EOS-1DX firmware
148
+ - Changed QuickTime CleanAperture tags decode as signed rationals
149
+
150
+ June 24, 2020 - Version 12.01
151
+
152
+ - Added a new NEFCompression value (thanks Warren Hatch)
153
+ - Added a new Sony LensType (thanks Jos Roost)
154
+ - Decode timed GPS from Rove Stealth 4K dashcam videos
155
+ - Fixed bug which would corrupt TIFF images with 16-bit image data offsets
156
+ when writing (these are very rare)
157
+
158
+ June 11, 2020 - Version 12.00 (production release)
159
+
160
+ - Added two new Olympus LensTypes (thanks Don Komarechka for one)
161
+ - Added two new Sony LensType values (thanks Jos Roost)
162
+ - Added a few new Nikon LensID's (thanks Mathieu Carbou)
163
+ - Added support for the Sony ZV-1 (thanks Jos Roost)
164
+ - Added a new CanonModelID (thanks Jos Roost)
165
+ - Added missing MimeType values for HEICS and HEIFS files
166
+ - Added definitions for a number of new XMP-crs tags
167
+ - Recognize WOFF and WOFF2 font files
168
+ - Decode streaming GPS from Roadhawk, EEEkit and 360Fly MP4 videos
169
+ - Decode a number of new tags for the Nikon D6 (thanks Warren Hatch)
170
+ - Decode a couple more AF tags for the D500/D850
171
+ - Decode a number of new Panasonic tags
172
+ - Improved Composite LensID logic (thanks Matt Stancliff)
173
+ - Enhanced -v option to state when a directory has 0 entries
174
+ - Removed a couple of incorrect Validate warnings for bilevel TIFF images
175
+ - Drop ContrastCurve tag when copying from NEF to JPEG
176
+ - Changed -csv output to add "Unknown" group name to column headings for
177
+ missing tags when -f and -G options are used
178
+ - Patched to support new XMP LensID format for Nikon cameras as written by
179
+ Apple Photos (thanks Mattsta)
180
+ - Fixed problem extracting metadata from Sigma DP2 Quattro X3F files
181
+ - Fixed End() and EndDir() functions so they work when writing and when the -v
182
+ option is used
183
+ - Fixed problem recognizing some PGM files
184
+ - Fixed bug in offsets for some Photoshop information in -v3 output
185
+ - Fixed problem writing a list containing empty elements inside an XMP
186
+ structure
187
+ - API Changes:
188
+ - Added NoMultiExif option
189
+ - Changed FilterW option to not write tag if $_ is set to undef
190
+
191
+ May 11, 2020 - Version 11.99
192
+
193
+ - Added a new Nikon LensID (thanks Mykyta Kozlov)
194
+ - Added a new Canon LensType
195
+ - Added a newn PentaxModelID
196
+ - Decode a few new QuickTime tags
197
+ - Decode new ID3 Grouping tag
198
+ - Decode a few more MinoltaRaw tags (thanks LibRaw)
199
+ - Fixed runtime warning which could occur when reading corrupted RTF files
200
+ - Fixed another potential pitfall in M2TS Duration calculation
201
+ - Fixed problem extracting some unknown QuickTime:Keys tags
202
+ - Fixed problem decoding Nikon D850 orientation tags
203
+ - Fixed bug where TIFF image data may not be padded to an even number of bytes
204
+
10
205
  May 1, 2020 - Version 11.98
11
206
 
12
207
  - Added a new Nikon LensID (thanks Warren Hatch)
@@ -30,7 +225,8 @@ Apr. 24, 2020 - Version 11.96
30
225
 
31
226
  Apr. 23, 2020 - Version 11.95
32
227
 
33
- - Added Exit() and ExitDir() functions for use in -if conditions
228
+ - Added Exit() and ExitDir() functions for use in -if conditions (NOTE: these
229
+ function names changed to End() and EndDir() in ExifTool 11.96)
34
230
  - Enhanced -geotag feature to support a more flexible input CSV file format
35
231
  - Enhanced -if and API Filter options to allow access to ExifTool object via
36
232
  $self
@@ -169,6 +169,7 @@ html/TagNames/Vorbis.html
169
169
  html/TagNames/WTV.html
170
170
  html/TagNames/XMP.html
171
171
  html/TagNames/ZIP.html
172
+ html/TagNames/ZISRAW.html
172
173
  html/TagNames/iWork.html
173
174
  html/TagNames/index.html
174
175
  html/TagNames/style.css
@@ -410,6 +411,7 @@ lib/Image/ExifTool/XMP.pm
410
411
  lib/Image/ExifTool/XMP2.pl
411
412
  lib/Image/ExifTool/XMPStruct.pl
412
413
  lib/Image/ExifTool/ZIP.pm
414
+ lib/Image/ExifTool/ZISRAW.pm
413
415
  lib/Image/ExifTool/iWork.pm
414
416
  perl-Image-ExifTool.spec
415
417
  t/AFCP.t
@@ -650,6 +652,8 @@ t/MWG_6.out
650
652
  t/MWG_7.out
651
653
  t/MXF.t
652
654
  t/MXF_2.out
655
+ t/MacOS.t
656
+ t/MacOS_2.out
653
657
  t/Matroska.t
654
658
  t/Matroska_2.out
655
659
  t/Minolta.t
@@ -915,6 +919,8 @@ t/ZIP_4.out
915
919
  t/ZIP_5.out
916
920
  t/ZIP_6.out
917
921
  t/ZIP_7.out
922
+ t/ZISRAW.t
923
+ t/ZISRAW_2.out
918
924
  t/images/AFCP.jpg
919
925
  t/images/AIFF.aif
920
926
  t/images/APE.ape
@@ -1003,6 +1009,7 @@ t/images/MOI.moi
1003
1009
  t/images/MP3.mp3
1004
1010
  t/images/MWG.jpg
1005
1011
  t/images/MXF.mxf
1012
+ t/images/MacOS.macos
1006
1013
  t/images/Matroska.mkv
1007
1014
  t/images/Minolta.jpg
1008
1015
  t/images/Minolta.mrw
@@ -1089,4 +1096,5 @@ t/images/XMP8.xmp
1089
1096
  t/images/XMP9.xmp
1090
1097
  t/images/ZIP.gz
1091
1098
  t/images/ZIP.zip
1099
+ t/images/ZISRAW.czi
1092
1100
  t/images/iWork.numbers
@@ -47,5 +47,5 @@
47
47
  }
48
48
  },
49
49
  "release_status" : "stable",
50
- "version" : "11.98"
50
+ "version" : "12.10"
51
51
  }
@@ -28,4 +28,4 @@ recommends:
28
28
  Time::HiRes: 0
29
29
  requires:
30
30
  perl: 5.004
31
- version: 11.98
31
+ version: 12.10
data/bin/README CHANGED
@@ -14,46 +14,47 @@ supported by ExifTool (r = read, w = write, c = create):
14
14
 
15
15
  File Types
16
16
  ------------+-------------+-------------+-------------+------------
17
- 3FR r | DR4 r/w/c | ITC r | ODP r | RIFF r
18
- 3G2 r/w | DSS r | J2C r | ODS r | RSRC r
19
- 3GP r/w | DV r | JNG r/w | ODT r | RTF r
20
- A r | DVB r/w | JP2 r/w | OFR r | RW2 r/w
21
- AA r | DVR-MS r | JPEG r/w | OGG r | RWL r/w
22
- AAE r | DYLIB r | JSON r | OGV r | RWZ r
23
- AAX r/w | EIP r | K25 r | OPUS r | RM r
24
- ACR r | EPS r/w | KDC r | ORF r/w | SEQ r
25
- AFM r | EPUB r | KEY r | OTF r | SKETCH r
26
- AI r/w | ERF r/w | LA r | PAC r | SO r
27
- AIFF r | EXE r | LFP r | PAGES r | SR2 r/w
28
- APE r | EXIF r/w/c | LNK r | PBM r/w | SRF r
29
- ARQ r/w | EXR r | LRV r/w | PCD r | SRW r/w
30
- ARW r/w | EXV r/w/c | M2TS r | PCX r | SVG r
31
- ASF r | F4A/V r/w | M4A/V r/w | PDB r | SWF r
32
- AVI r | FFF r/w | MAX r | PDF r/w | THM r/w
33
- AVIF r/w | FITS r | MEF r/w | PEF r/w | TIFF r/w
34
- AZW r | FLA r | MIE r/w/c | PFA r | TORRENT r
35
- BMP r | FLAC r | MIFF r | PFB r | TTC r
36
- BPG r | FLIF r/w | MKA r | PFM r | TTF r
37
- BTF r | FLV r | MKS r | PGF r | TXT r
38
- CHM r | FPF r | MKV r | PGM r/w | VCF r
39
- COS r | FPX r | MNG r/w | PLIST r | VRD r/w/c
40
- CR2 r/w | GIF r/w | MOBI r | PICT r | VSD r
41
- CR3 r/w | GPR r/w | MODD r | PMP r | WAV r
42
- CRM r/w | GZ r | MOI r | PNG r/w | WDP r/w
43
- CRW r/w | HDP r/w | MOS r/w | PPM r/w | WEBP r
44
- CS1 r/w | HDR r | MOV r/w | PPT r | WEBM r
45
- CSV r | HEIC r/w | MP3 r | PPTX r | WMA r
46
- DCM r | HEIF r/w | MP4 r/w | PS r/w | WMV r
47
- DCP r/w | HTML r | MPC r | PSB r/w | WTV r
48
- DCR r | ICC r/w/c | MPG r | PSD r/w | WV r
49
- DFONT r | ICS r | MPO r/w | PSP r | X3F r/w
50
- DIVX r | IDML r | MQV r/w | QTIF r/w | XCF r
51
- DJVU r | IIQ r/w | MRW r/w | R3D r | XLS r
52
- DLL r | IND r/w | MXF r | RA r | XLSX r
53
- DNG r/w | INSP r/w | NEF r/w | RAF r/w | XMP r/w/c
54
- DOC r | INSV r | NRW r/w | RAM r | ZIP r
55
- DOCX r | INX r | NUMBERS r | RAR r |
56
- DPX r | ISO r | O r | RAW r/w |
17
+ 360 r/w | DPX r | ITC r | ODP r | RIFF r
18
+ 3FR r | DR4 r/w/c | J2C r | ODS r | RSRC r
19
+ 3G2 r/w | DSS r | JNG r/w | ODT r | RTF r
20
+ 3GP r/w | DV r | JP2 r/w | OFR r | RW2 r/w
21
+ A r | DVB r/w | JPEG r/w | OGG r | RWL r/w
22
+ AA r | DVR-MS r | JSON r | OGV r | RWZ r
23
+ AAE r | DYLIB r | K25 r | ONP r | RM r
24
+ AAX r/w | EIP r | KDC r | OPUS r | SEQ r
25
+ ACR r | EPS r/w | KEY r | ORF r/w | SKETCH r
26
+ AFM r | EPUB r | LA r | OTF r | SO r
27
+ AI r/w | ERF r/w | LFP r | PAC r | SR2 r/w
28
+ AIFF r | EXE r | LNK r | PAGES r | SRF r
29
+ APE r | EXIF r/w/c | LRV r/w | PBM r/w | SRW r/w
30
+ ARQ r/w | EXR r | M2TS r | PCD r | SVG r
31
+ ARW r/w | EXV r/w/c | M4A/V r/w | PCX r | SWF r
32
+ ASF r | F4A/V r/w | MACOS r | PDB r | THM r/w
33
+ AVI r | FFF r/w | MAX r | PDF r/w | TIFF r/w
34
+ AVIF r/w | FITS r | MEF r/w | PEF r/w | TORRENT r
35
+ AZW r | FLA r | MIE r/w/c | PFA r | TTC r
36
+ BMP r | FLAC r | MIFF r | PFB r | TTF r
37
+ BPG r | FLIF r/w | MKA r | PFM r | TXT r
38
+ BTF r | FLV r | MKS r | PGF r | VCF r
39
+ CHM r | FPF r | MKV r | PGM r/w | VRD r/w/c
40
+ COS r | FPX r | MNG r/w | PLIST r | VSD r
41
+ CR2 r/w | GIF r/w | MOBI r | PICT r | WAV r
42
+ CR3 r/w | GPR r/w | MODD r | PMP r | WDP r/w
43
+ CRM r/w | GZ r | MOI r | PNG r/w | WEBP r
44
+ CRW r/w | HDP r/w | MOS r/w | PPM r/w | WEBM r
45
+ CS1 r/w | HDR r | MOV r/w | PPT r | WMA r
46
+ CSV r | HEIC r/w | MP3 r | PPTX r | WMV r
47
+ CZI r | HEIF r/w | MP4 r/w | PS r/w | WTV r
48
+ DCM r | HTML r | MPC r | PSB r/w | WV r
49
+ DCP r/w | ICC r/w/c | MPG r | PSD r/w | X3F r/w
50
+ DCR r | ICS r | MPO r/w | PSP r | XCF r
51
+ DFONT r | IDML r | MQV r/w | QTIF r/w | XLS r
52
+ DIVX r | IIQ r/w | MRW r/w | R3D r | XLSX r
53
+ DJVU r | IND r/w | MXF r | RA r | XMP r/w/c
54
+ DLL r | INSP r/w | NEF r/w | RAF r/w | ZIP r
55
+ DNG r/w | INSV r | NRW r/w | RAM r |
56
+ DOC r | INX r | NUMBERS r | RAR r |
57
+ DOCX r | ISO r | O r | RAW r/w |
57
58
 
58
59
  Meta Information
59
60
  ----------------------+----------------------+---------------------
@@ -105,8 +106,8 @@ your home directory, then you would type the following commands in a
105
106
  terminal window to extract and run ExifTool:
106
107
 
107
108
  cd ~/Desktop
108
- gzip -dc Image-ExifTool-11.98.tar.gz | tar -xf -
109
- cd Image-ExifTool-11.98
109
+ gzip -dc Image-ExifTool-12.10.tar.gz | tar -xf -
110
+ cd Image-ExifTool-12.10
110
111
  ./exiftool t/images/ExifTool.jpg
111
112
 
112
113
  Note: These commands extract meta information from one of the test images.
@@ -10,7 +10,7 @@
10
10
  use strict;
11
11
  require 5.004;
12
12
 
13
- my $version = '11.98';
13
+ my $version = '12.10';
14
14
 
15
15
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
16
16
  my $exeDir;
@@ -141,6 +141,7 @@ my $deleteOrig; # 0=restore original files, 1=delete originals, 2=delete w/o
141
141
  my $disableOutput; # flag to disable normal output
142
142
  my $doSetFileName; # flag set if FileName may be written
143
143
  my $doUnzip; # flag to extract info from .gz and .bz2 files
144
+ my ($end,$endDir); # flags to end processing
144
145
  my $escapeC; # C-style escape
145
146
  my $escapeHTML; # flag to escape printed values for html
146
147
  my $evalWarning; # warning from eval
@@ -293,8 +294,8 @@ my %altRecommends = (
293
294
  my %unescapeChar = ( 't'=>"\t", 'n'=>"\n", 'r'=>"\r" );
294
295
 
295
296
  # special subroutines used in -if condition
296
- sub Image::ExifTool::EndDir() { return $$mt{EndDir} = 1 }
297
- sub Image::ExifTool::End() { return $$mt{End} = 1 }
297
+ sub Image::ExifTool::EndDir() { return $endDir = 1 }
298
+ sub Image::ExifTool::End() { return $end = 1 }
298
299
 
299
300
  # exit routine
300
301
  sub Exit {
@@ -365,13 +366,21 @@ if (grep /^-common_args$/i, @ARGV) {
365
366
  # loop over sets of command-line arguments separated by "-execute"
366
367
  Command: for (;;) {
367
368
 
368
- @echo3 and print STDOUT join("\n", @echo3), "\n";
369
- @echo4 and print STDERR join("\n", @echo4), "\n";
369
+ if (@echo3) {
370
+ my $str = join "\n", @echo3, "\n";
371
+ $str =~ s/\$\{status\}/$rtnVal/ig;
372
+ print STDOUT $str;
373
+ }
374
+ if (@echo4) {
375
+ my $str = join "\n", @echo4, "\n";
376
+ $str =~ s/\$\{status\}/$rtnVal/ig;
377
+ print STDERR $str;
378
+ }
370
379
 
371
380
  $rafStdin->Close() if $rafStdin;
372
381
  undef $rafStdin;
373
382
 
374
- # save or previous return codes
383
+ # save our previous return codes
375
384
  $rtnValPrev = $rtnVal;
376
385
  $rtnValApp = $rtnVal if $rtnVal;
377
386
 
@@ -386,7 +395,7 @@ if ($binaryStdout) {
386
395
 
387
396
  # flush console and print "{ready}" message if -stay_open is in effect
388
397
  if ($stayOpen >= 2) {
389
- if ($quiet) {
398
+ if ($quiet and not defined $executeID) {
390
399
  # flush output if possible
391
400
  eval { require IO::Handle } and STDERR->flush(), STDOUT->flush();
392
401
  } else {
@@ -443,6 +452,8 @@ undef $deleteOrig;
443
452
  undef $disableOutput;
444
453
  undef $doSetFileName;
445
454
  undef $doUnzip;
455
+ undef $end;
456
+ undef $endDir;
446
457
  undef $escapeHTML;
447
458
  undef $escapeC;
448
459
  undef $evalWarning;
@@ -551,7 +562,7 @@ if (not $preserveTime and $^O eq 'MSWin32') {
551
562
  for (;;) {
552
563
 
553
564
  # execute the command now if no more arguments or -execute is used
554
- if (not @ARGV or ($ARGV[0] =~ /^(-|\xe2\x88\x92)execute(\d*)$/i and not $endOfOpts)) {
565
+ if (not @ARGV or ($ARGV[0] =~ /^(-|\xe2\x88\x92)execute(\d+)?$/i and not $endOfOpts)) {
555
566
  if (@ARGV) {
556
567
  $executeID = $2; # save -execute number for "{ready}" response
557
568
  $helped = 1; # don't show help if we used -execute
@@ -1755,13 +1766,17 @@ if (@dbKeys) {
1755
1766
  undef $evalWarning;
1756
1767
  local $SIG{'__WARN__'} = sub { $evalWarning = $_[0] };
1757
1768
  foreach (@dbKeys) {
1769
+ my $db = $database{$_};
1770
+ tr/\\/\// and $database{$_} = $db; # allow for backslashes in SourceFile
1758
1771
  # (punt on using ConvertFileName here, so $absPath may be a mix of encodings)
1759
1772
  my $absPath = AbsPath($_);
1760
1773
  if (defined $absPath) {
1761
- $database{$absPath} = $database{$_} unless $database{$absPath};
1774
+ $database{$absPath} = $db unless $database{$absPath};
1762
1775
  if ($verbose and $verbose > 1) {
1763
1776
  print $vout "Imported entry for '${_}' (full path: '${absPath}')\n";
1764
1777
  }
1778
+ } elsif ($verbose and $verbose > 1) {
1779
+ print $vout "Imported entry for '${_}' (non-existent file)\n";
1765
1780
  }
1766
1781
  }
1767
1782
  }
@@ -2271,7 +2286,7 @@ TAG: foreach $tag (@foundTags) {
2271
2286
  # the same group, and if so suppress this tag instead
2272
2287
  next if $noDups and $tag =~ /^(.*?) ?\(/ and defined $$info{$1} and
2273
2288
  $group eq $et->GetGroup($1, $showGroup);
2274
- $group = 'Unknown' if not $group and ($xml or $json);
2289
+ $group = 'Unknown' if not $group and ($xml or $json or $csv);
2275
2290
  if ($fp and not ($allGroup or $csv)) {
2276
2291
  if ($lastGroup ne $group) {
2277
2292
  if ($html) {
@@ -3546,11 +3561,11 @@ sub ProcessFiles($;$)
3546
3561
  push(@$list, $file);
3547
3562
  } else {
3548
3563
  GetImageInfo($et, $file);
3549
- $$et{End} and Warn("End called - $file\n");
3564
+ $end and Warn("End called - $file\n");
3550
3565
  }
3551
3566
  }
3552
3567
  $et->Options(CharsetFileName => $enc) if $utf8FileName{$file};
3553
- last if $$et{End};
3568
+ last if $end;
3554
3569
  }
3555
3570
  }
3556
3571
 
@@ -3561,7 +3576,7 @@ sub ScanDir($$;$)
3561
3576
  {
3562
3577
  local $_;
3563
3578
  my ($et, $dir, $list) = @_;
3564
- my (@fileList, $done, $file, $utf8Name, $winSurrogate);
3579
+ my (@fileList, $done, $file, $utf8Name, $winSurrogate, $endThisDir);
3565
3580
  my $enc = $et->Options('CharsetFileName');
3566
3581
  # recode as UTF-8 if necessary
3567
3582
  if ($enc) {
@@ -3628,9 +3643,10 @@ sub ScanDir($$;$)
3628
3643
  next if $file =~ /^\./ and ($recurse == 1 or $file eq '.' or $file eq '..');
3629
3644
  next if $ignore{$file} or ($ignore{SYMLINKS} and -l $path);
3630
3645
  ScanDir($et, $path, $list);
3631
- last if $$et{End};
3646
+ last if $end;
3632
3647
  next;
3633
3648
  }
3649
+ next if $endThisDir;
3634
3650
  # apply rules from -ext options
3635
3651
  my $accepted;
3636
3652
  if ($filterFlag) {
@@ -3668,14 +3684,15 @@ sub ScanDir($$;$)
3668
3684
  push(@$list, $path);
3669
3685
  } else {
3670
3686
  GetImageInfo($et, $path);
3671
- if ($$et{End}) {
3687
+ if ($end) {
3672
3688
  Warn("End called - $file\n");
3673
3689
  last;
3674
3690
  }
3675
- if ($$et{EndDir}) {
3676
- $dir =~ s(/$)();
3691
+ if ($endDir) {
3692
+ $path =~ s(/$)();
3677
3693
  Warn("EndDir called - $path\n");
3678
- last;
3694
+ undef $endDir;
3695
+ $endThisDir = 1;
3679
3696
  }
3680
3697
  }
3681
3698
  }
@@ -4379,46 +4396,47 @@ supported by ExifTool (r = read, w = write, c = create):
4379
4396
 
4380
4397
  File Types
4381
4398
  ------------+-------------+-------------+-------------+------------
4382
- 3FR r | DR4 r/w/c | ITC r | ODP r | RIFF r
4383
- 3G2 r/w | DSS r | J2C r | ODS r | RSRC r
4384
- 3GP r/w | DV r | JNG r/w | ODT r | RTF r
4385
- A r | DVB r/w | JP2 r/w | OFR r | RW2 r/w
4386
- AA r | DVR-MS r | JPEG r/w | OGG r | RWL r/w
4387
- AAE r | DYLIB r | JSON r | OGV r | RWZ r
4388
- AAX r/w | EIP r | K25 r | OPUS r | RM r
4389
- ACR r | EPS r/w | KDC r | ORF r/w | SEQ r
4390
- AFM r | EPUB r | KEY r | OTF r | SKETCH r
4391
- AI r/w | ERF r/w | LA r | PAC r | SO r
4392
- AIFF r | EXE r | LFP r | PAGES r | SR2 r/w
4393
- APE r | EXIF r/w/c | LNK r | PBM r/w | SRF r
4394
- ARQ r/w | EXR r | LRV r/w | PCD r | SRW r/w
4395
- ARW r/w | EXV r/w/c | M2TS r | PCX r | SVG r
4396
- ASF r | F4A/V r/w | M4A/V r/w | PDB r | SWF r
4397
- AVI r | FFF r/w | MAX r | PDF r/w | THM r/w
4398
- AVIF r/w | FITS r | MEF r/w | PEF r/w | TIFF r/w
4399
- AZW r | FLA r | MIE r/w/c | PFA r | TORRENT r
4400
- BMP r | FLAC r | MIFF r | PFB r | TTC r
4401
- BPG r | FLIF r/w | MKA r | PFM r | TTF r
4402
- BTF r | FLV r | MKS r | PGF r | TXT r
4403
- CHM r | FPF r | MKV r | PGM r/w | VCF r
4404
- COS r | FPX r | MNG r/w | PLIST r | VRD r/w/c
4405
- CR2 r/w | GIF r/w | MOBI r | PICT r | VSD r
4406
- CR3 r/w | GPR r/w | MODD r | PMP r | WAV r
4407
- CRM r/w | GZ r | MOI r | PNG r/w | WDP r/w
4408
- CRW r/w | HDP r/w | MOS r/w | PPM r/w | WEBP r
4409
- CS1 r/w | HDR r | MOV r/w | PPT r | WEBM r
4410
- CSV r | HEIC r/w | MP3 r | PPTX r | WMA r
4411
- DCM r | HEIF r/w | MP4 r/w | PS r/w | WMV r
4412
- DCP r/w | HTML r | MPC r | PSB r/w | WTV r
4413
- DCR r | ICC r/w/c | MPG r | PSD r/w | WV r
4414
- DFONT r | ICS r | MPO r/w | PSP r | X3F r/w
4415
- DIVX r | IDML r | MQV r/w | QTIF r/w | XCF r
4416
- DJVU r | IIQ r/w | MRW r/w | R3D r | XLS r
4417
- DLL r | IND r/w | MXF r | RA r | XLSX r
4418
- DNG r/w | INSP r/w | NEF r/w | RAF r/w | XMP r/w/c
4419
- DOC r | INSV r | NRW r/w | RAM r | ZIP r
4420
- DOCX r | INX r | NUMBERS r | RAR r |
4421
- DPX r | ISO r | O r | RAW r/w |
4399
+ 360 r/w | DPX r | ITC r | ODP r | RIFF r
4400
+ 3FR r | DR4 r/w/c | J2C r | ODS r | RSRC r
4401
+ 3G2 r/w | DSS r | JNG r/w | ODT r | RTF r
4402
+ 3GP r/w | DV r | JP2 r/w | OFR r | RW2 r/w
4403
+ A r | DVB r/w | JPEG r/w | OGG r | RWL r/w
4404
+ AA r | DVR-MS r | JSON r | OGV r | RWZ r
4405
+ AAE r | DYLIB r | K25 r | ONP r | RM r
4406
+ AAX r/w | EIP r | KDC r | OPUS r | SEQ r
4407
+ ACR r | EPS r/w | KEY r | ORF r/w | SKETCH r
4408
+ AFM r | EPUB r | LA r | OTF r | SO r
4409
+ AI r/w | ERF r/w | LFP r | PAC r | SR2 r/w
4410
+ AIFF r | EXE r | LNK r | PAGES r | SRF r
4411
+ APE r | EXIF r/w/c | LRV r/w | PBM r/w | SRW r/w
4412
+ ARQ r/w | EXR r | M2TS r | PCD r | SVG r
4413
+ ARW r/w | EXV r/w/c | M4A/V r/w | PCX r | SWF r
4414
+ ASF r | F4A/V r/w | MACOS r | PDB r | THM r/w
4415
+ AVI r | FFF r/w | MAX r | PDF r/w | TIFF r/w
4416
+ AVIF r/w | FITS r | MEF r/w | PEF r/w | TORRENT r
4417
+ AZW r | FLA r | MIE r/w/c | PFA r | TTC r
4418
+ BMP r | FLAC r | MIFF r | PFB r | TTF r
4419
+ BPG r | FLIF r/w | MKA r | PFM r | TXT r
4420
+ BTF r | FLV r | MKS r | PGF r | VCF r
4421
+ CHM r | FPF r | MKV r | PGM r/w | VRD r/w/c
4422
+ COS r | FPX r | MNG r/w | PLIST r | VSD r
4423
+ CR2 r/w | GIF r/w | MOBI r | PICT r | WAV r
4424
+ CR3 r/w | GPR r/w | MODD r | PMP r | WDP r/w
4425
+ CRM r/w | GZ r | MOI r | PNG r/w | WEBP r
4426
+ CRW r/w | HDP r/w | MOS r/w | PPM r/w | WEBM r
4427
+ CS1 r/w | HDR r | MOV r/w | PPT r | WMA r
4428
+ CSV r | HEIC r/w | MP3 r | PPTX r | WMV r
4429
+ CZI r | HEIF r/w | MP4 r/w | PS r/w | WTV r
4430
+ DCM r | HTML r | MPC r | PSB r/w | WV r
4431
+ DCP r/w | ICC r/w/c | MPG r | PSD r/w | X3F r/w
4432
+ DCR r | ICS r | MPO r/w | PSP r | XCF r
4433
+ DFONT r | IDML r | MQV r/w | QTIF r/w | XLS r
4434
+ DIVX r | IIQ r/w | MRW r/w | R3D r | XLSX r
4435
+ DJVU r | IND r/w | MXF r | RA r | XMP r/w/c
4436
+ DLL r | INSP r/w | NEF r/w | RAF r/w | ZIP r
4437
+ DNG r/w | INSV r | NRW r/w | RAM r |
4438
+ DOC r | INX r | NUMBERS r | RAR r |
4439
+ DOCX r | ISO r | O r | RAW r/w |
4422
4440
 
4423
4441
  Meta Information
4424
4442
  ----------------------+----------------------+---------------------
@@ -4474,7 +4492,7 @@ L<Input-output text formatting|/Input-output text formatting>
4474
4492
  -f (-forcePrint) Force printing of all specified tags
4475
4493
  -g[NUM...] (-groupHeadings) Organize output by tag group
4476
4494
  -G[NUM...] (-groupNames) Print group name for each tag
4477
- -h (-htmlFormat) Use HMTL formatting for output
4495
+ -h (-htmlFormat) Use HTML formatting for output
4478
4496
  -H (-hex) Show tag ID numbers in hexadecimal
4479
4497
  -htmlDump[OFFSET] Generate HTML-format binary dump
4480
4498
  -j[[+]=JSONFILE] (-json) Export/import tags in JSON format
@@ -4620,7 +4638,7 @@ delete or replace a tag (see L</WRITING EXAMPLES> for examples). C<^=> is
4620
4638
  used to write an empty string instead of deleting the tag when no I<VALUE>
4621
4639
  is given, but otherwise it is equivalent to C<=>.
4622
4640
 
4623
- I<TAG> may contain one or more leading family 0, 1 or 2 group names,
4641
+ I<TAG> may contain one or more leading family 0, 1, 2 or 7 group names,
4624
4642
  prefixed by optional family numbers, and separated colons. If no group name
4625
4643
  is specified, the tag is created in the preferred group, and updated in any
4626
4644
  other location where a same-named tag already exists. The preferred group
@@ -4675,7 +4693,7 @@ the specified group(s) are removed individually, and in this case is it
4675
4693
  possible to exclude individual tags from a mass delete. For example,
4676
4694
  C<-time:all --Exif:Time:All> removes all deletable Time tags except those in
4677
4695
  the EXIF. This difference also applies if family 2 is specified when
4678
- deleting all groups. For example, C<-2all:all=> deletes tags individually,
4696
+ deleting all groups. For example, C<-2all:all=> deletes tags individually,
4679
4697
  while C<-all:all=> deletes entire blocks.
4680
4698
 
4681
4699
  5) The "APP" group names ("APP0" through "APP15") are used to delete JPEG
@@ -5075,13 +5093,13 @@ B<-csv>=I<CSVFILE> feature.
5075
5093
 
5076
5094
  Organize output by tag group. I<NUM> specifies a group family number, and
5077
5095
  may be 0 (general location), 1 (specific location), 2 (category), 3
5078
- (document number), 4 (instance number), 5 (metadata path) or 6 (EXIF/TIFF
5079
- format). B<-g0> is assumed if a family number is not specified, and family
5080
- numbers may be added wherever B<-g> is mentioned in the documentation.
5081
- Multiple families may be specified by separating them with colons. By
5082
- default the resulting group name is simplified by removing any leading
5096
+ (document number), 4 (instance number), 5 (metadata path), 6 (EXIF/TIFF
5097
+ format) or 7 (tag ID). B<-g0> is assumed if a family number is not
5098
+ specified. May be combined with other options to add group names to the
5099
+ output. Multiple families may be specified by separating them with colons.
5100
+ By default the resulting group name is simplified by removing any leading
5083
5101
  C<Main:> and collapsing adjacent identical group names, but this can be
5084
- avoided by placing a colon before the first family number (eg. B<-g:3:1>).
5102
+ avoided by placing a colon before the first family number (eg. B<-g:3:1>).
5085
5103
  Use the B<-listg> option to list group names for a specified family. The
5086
5104
  SavePath and SaveFormat API options are automatically enabled if the
5087
5105
  respective family 5 or 6 group names are requested. See the
@@ -5286,7 +5304,7 @@ with this command:
5286
5304
 
5287
5305
  produces output like this:
5288
5306
 
5289
- -- Generated by ExifTool 11.98 --
5307
+ -- Generated by ExifTool 12.10 --
5290
5308
  File: a.jpg - 2003:10:31 15:44:19
5291
5309
  (f/5.6, 1/60s, ISO 100)
5292
5310
  File: b.jpg - 2006:05:23 11:57:38
@@ -5719,7 +5737,9 @@ involves an additional processing pass of each file, but this impact may be
5719
5737
  reduced by specifying a I<NUM> for the B<-fast> level used during the
5720
5738
  metadata-extraction phase. For example, B<-fileOrder4> may be used if
5721
5739
  I<TAG> is a pseudo System tag. If multiple B<-fileOrder> options are used,
5722
- the extraction is done at the lowest B<-fast> level.
5740
+ the extraction is done at the lowest B<-fast> level. Note that files are
5741
+ sorted across directory boundaries if multiple input directories are
5742
+ specified.
5723
5743
 
5724
5744
  =item B<-i> I<DIR> (B<-ignore>)
5725
5745
 
@@ -5769,7 +5789,8 @@ of the file processing. Both functions have a return value of 1. Case is
5769
5789
  significant for function names.
5770
5790
 
5771
5791
  End() - end processing after this file
5772
- EndDir() - end processing of files in this directory
5792
+ EndDir() - end processing of files in this directory (not
5793
+ compatible with the B<-fileOrder> option)
5773
5794
 
5774
5795
  Notes:
5775
5796
 
@@ -6231,7 +6252,9 @@ about the configuration file syntax.
6231
6252
  Echo I<TEXT> to stdout (B<-echo> or B<-echo1>) or stderr (B<-echo2>). Text
6232
6253
  is output as the command line is parsed, before the processing of any input
6233
6254
  files. I<NUM> may also be 3 or 4 to output text (to stdout or stderr
6234
- respectively) after processing is complete.
6255
+ respectively) after processing is complete. For B<-echo3> and B<-echo4>,
6256
+ "${status}" may be used in the I<TEXT> string to represent the numerical
6257
+ exit status of the command (see L</EXIT STATUS>).
6235
6258
 
6236
6259
  =item B<-efile>[I<NUM>][!] I<ERRFILE>
6237
6260
 
@@ -6252,7 +6275,8 @@ commands were executed as separate command lines (with the exception of the
6252
6275
  B<-config> and B<-use> options which remain in effect for subsequent
6253
6276
  commands). Allows multiple commands to be executed from a single command
6254
6277
  line. I<NUM> is an optional number that is echoed in the "{ready}" message
6255
- when using the B<-stay_open> feature.
6278
+ when using the B<-stay_open> feature. If a I<NUM> is specified, the B<-q>
6279
+ option no longer suppresses the output "{readyNUM}" message.
6256
6280
 
6257
6281
  =item B<-srcfile> I<FMT>
6258
6282
 
@@ -6297,12 +6321,15 @@ line (see the B<-@> option for details).
6297
6321
 
6298
6322
  3) Write C<-execute\n> to I<ARGFILE>, where C<\n> represents a newline
6299
6323
  sequence. (Note: You may need to flush your write buffers here if using
6300
- buffered output.) Exiftool will then execute the command with the arguments
6324
+ buffered output.) ExifTool will then execute the command with the arguments
6301
6325
  received up to this point, send a "{ready}" message to stdout when done
6302
6326
  (unless the B<-q> or B<-T> option is used), and continue trying to read
6303
6327
  arguments for the next command from I<ARGFILE>. To aid in command/response
6304
6328
  synchronization, any number appended to the C<-execute> option is echoed in
6305
- the "{ready}" message. For example, C<-execute613> results in "{ready613}".
6329
+ the "{ready}" message. For example, C<-execute613> results in "{ready613}".
6330
+ When this number is added, B<-q> no longer suppresses the "{ready}" message.
6331
+ (Also, see the B<-echo3> and B<-echo4> options for additional ways to pass
6332
+ signals back to your application.)
6306
6333
 
6307
6334
  4) Repeat steps 2 and 3 for each command.
6308
6335
 
@@ -6317,7 +6344,7 @@ writing the following lines to the currently open I<ARGFILE>:
6317
6344
  -@
6318
6345
  NEWARGFILE
6319
6346
 
6320
- This causes I<ARGFILE> to be closed, and I<NEWARGFILE> to be kept open.
6347
+ This causes I<ARGFILE> to be closed, and I<NEWARGFILE> to be kept open.
6321
6348
  (Without the B<-stay_open> here, exiftool would have returned to reading
6322
6349
  arguments from I<ARGFILE> after reaching the end of I<NEWARGFILE>.)
6323
6350