exiftool_vendored 12.06.0 → 12.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/Changes +96 -2
- data/bin/MANIFEST +5 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +43 -42
- data/bin/exiftool +156 -82
- data/bin/lib/Image/ExifTool.pm +22 -13
- data/bin/lib/Image/ExifTool.pod +59 -50
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +11 -5
- data/bin/lib/Image/ExifTool/Canon.pm +202 -13
- data/bin/lib/Image/ExifTool/DarwinCore.pm +9 -3
- data/bin/lib/Image/ExifTool/EXE.pm +8 -5
- data/bin/lib/Image/ExifTool/GIF.pm +2 -2
- data/bin/lib/Image/ExifTool/Geotag.pm +30 -11
- data/bin/lib/Image/ExifTool/GoPro.pm +47 -30
- data/bin/lib/Image/ExifTool/IPTC.pm +1 -0
- data/bin/lib/Image/ExifTool/Import.pm +14 -11
- data/bin/lib/Image/ExifTool/JSON.pm +27 -4
- data/bin/lib/Image/ExifTool/MPF.pm +2 -2
- data/bin/lib/Image/ExifTool/MacOS.pm +153 -37
- data/bin/lib/Image/ExifTool/Matroska.pm +3 -1
- data/bin/lib/Image/ExifTool/Minolta.pm +5 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +11 -3
- data/bin/lib/Image/ExifTool/Olympus.pm +8 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +12 -12
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -0
- data/bin/lib/Image/ExifTool/Pentax.pm +10 -3
- data/bin/lib/Image/ExifTool/QuickTime.pm +51 -16
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +68 -45
- data/bin/lib/Image/ExifTool/README +5 -2
- data/bin/lib/Image/ExifTool/RSRC.pm +17 -11
- data/bin/lib/Image/ExifTool/Radiance.pm +7 -2
- data/bin/lib/Image/ExifTool/Sony.pm +56 -35
- data/bin/lib/Image/ExifTool/Stim.pm +2 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +5756 -5710
- data/bin/lib/Image/ExifTool/TagNames.pod +248 -49
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +7 -6
- data/bin/lib/Image/ExifTool/Writer.pl +5 -3
- data/bin/lib/Image/ExifTool/XMP.pm +63 -18
- data/bin/lib/Image/ExifTool/XMP2.pl +1 -0
- data/bin/perl-Image-ExifTool.spec +42 -41
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb85849da2fdeb7f34dcbd03ba9548e5744c692f93d8163cf3029a5189f75d2c
|
4
|
+
data.tar.gz: 0fd722ec987c17f4449f7eb9d18101286ceff673134d784833acd811cd376a09
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8273b84dd45c1b266eec1a0c13c14e0c60e6f68c3bbd76fce169002a9983606b76f70e636199b751dda2f8f6992ea39b164f4d24c29849fa494b30b4ad14b1fa
|
7
|
+
data.tar.gz: a65c0a97fdbc17365a46bd7605b36e72557004549f92ba9fc1f02d7358899643932125a499d65daa88eddebbf9c7a8d343c037b70baa4ff30802c97dfb66efd6
|
data/bin/Changes
CHANGED
@@ -7,8 +7,102 @@ RSS feed: https://exiftool.org/rss.xml
|
|
7
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
|
-
|
11
|
-
|
10
|
+
Dec. 4, 2020 - Version 12.12
|
11
|
+
|
12
|
+
- Added ability to geotag from DJI CSV log files
|
13
|
+
- Added a new CanonModelID
|
14
|
+
- Added a couple of new Sony LensType values (thanks LibRaw)
|
15
|
+
- Enhanced -csvDelim option to allow "\t", "\n", "\r" and "\\"
|
16
|
+
- Unescape "\b" and "\f" in imported JSON values
|
17
|
+
- Fixed bug introduced in 12.10 which generated a "Not an integer" warning
|
18
|
+
when attempting to shift some QuickTime date/time tags
|
19
|
+
- Fixed shared-write permission problem with -@ argfile when using -stay_open
|
20
|
+
and a filename containing special characters on Windows
|
21
|
+
|
22
|
+
Nov. 27, 2020 - Version 12.11
|
23
|
+
|
24
|
+
- Added -csvDelim option
|
25
|
+
- Added new Canon and Olympus LensType values (thanks LibRaw)
|
26
|
+
- Added a warning if ICC_Profile is deleted from an image (github issue #63)
|
27
|
+
- EndDir() function for -if option now works when -fileOrder is used
|
28
|
+
- Changed FileSize conversion to use binary prefixes since that is how the
|
29
|
+
conversion is currently done (eg. MiB instead of MB)
|
30
|
+
- Patched -csv option so columns aren't resorted when using -G option and one
|
31
|
+
of the tags is missing from a file
|
32
|
+
- Fixed incompatiblity with Google Photos when writing UserData:GPSCoordinates
|
33
|
+
to MP4 videos
|
34
|
+
- Fixed problem where the tags available in a -p format string were limited to
|
35
|
+
the same as the -if[NUM] option when NUM was specified
|
36
|
+
- Fixed incorrect decoding of SourceFileIndex/SourceDirectoryIndex for Ricoh
|
37
|
+
models
|
38
|
+
|
39
|
+
Nov. 12, 2020 - Version 12.10
|
40
|
+
|
41
|
+
- Added -validate test for proper TIFF magic number in JPEG EXIF header
|
42
|
+
- Added support for Nikon Z7 LensData version 0801
|
43
|
+
- Added a new XMP-GPano tag
|
44
|
+
- Decode ColorData for the Canon EOS 1DXmkIII (thanks LibRaw)
|
45
|
+
- Decode more tags for the Sony ILCE-7SM3 (thanks Jos Roost)
|
46
|
+
- Automatically apply QuickTimeUTC option for CR3 files
|
47
|
+
- Improved decoding of XAttrMDLabel from MacOS files
|
48
|
+
- Ignore time zones when writing date/time values and using the -d option
|
49
|
+
- Enhanced -echo3 and -echo4 options to allow exit status to be returned
|
50
|
+
- Changed -execute so the -q option no longer suppresses the "{ready}" message
|
51
|
+
when a synchronization number is used (eg. -execute123)
|
52
|
+
|
53
|
+
Oct. 29, 2020 - Version 12.09
|
54
|
+
|
55
|
+
- Added ability to copy CanonMakerNotes from CR3 images to other file types
|
56
|
+
- Added read support for ON1 presets file (.ONP)
|
57
|
+
- Added two new CanonModelID values
|
58
|
+
- Added trailing "/" when writing QuickTime:GPSCoordinates
|
59
|
+
- Added a number of new XMP-crs tags
|
60
|
+
- Added a new Sony LensType (thanks Jos Roost)
|
61
|
+
- Added a new Nikon Z lens (thanks LibRaw)
|
62
|
+
- Added a new Canon LensType
|
63
|
+
- Decode ColorData for Canon EOS R5/R6
|
64
|
+
- Decode a couple of new HEIF tags
|
65
|
+
- Decode FirmwareVersion for Canon M50
|
66
|
+
- Improved decoding of Sony CreativeStyle tags (thanks Jos Roost)
|
67
|
+
- Improved parsing of Radiance files to recognize comments
|
68
|
+
- Renamed GIF AspectRatio tag to PixelAspectRatio
|
69
|
+
- Patched EndDir() feature so subdirectories are always processed when -r is
|
70
|
+
used (previously, EndDir() would end processing of a directory completely)
|
71
|
+
- Yet another tweak to the EventTime formatting rules (also allow time-only
|
72
|
+
values with fractional seconds and a time zone)
|
73
|
+
- Avoid loading GoPro module unnecessarily when reading MP4 videos from some
|
74
|
+
other cameras
|
75
|
+
- Fixed problem with an incorrect naming of CodecID tags in some MKV videos
|
76
|
+
- Fixed verbose output to avoid "adding" messages for existing flattened XMP
|
77
|
+
tags
|
78
|
+
|
79
|
+
Oct. 15, 2020 - Version 12.08
|
80
|
+
|
81
|
+
- Added read support for MacOS "._" sidecar files
|
82
|
+
- Added a new Sony LensType (thanks Jos Roost)
|
83
|
+
- Recognize Mac OS X xattr files
|
84
|
+
- Extract ThumbnailImage from MP4 videos of more dashcam models
|
85
|
+
- Improved decoding of a number of Sony tags (thanks Jos Roost)
|
86
|
+
- Fixed problem where the special -if EndDir() function didn't work properly
|
87
|
+
for directories after the one in which it was initially called
|
88
|
+
- Patched to read DLL files which don't have a .rsrc section (thanks Hank)
|
89
|
+
- Patched to support new IGC date format when geotagging
|
90
|
+
- Patched to read DLL files with an invalid size in the header
|
91
|
+
|
92
|
+
Oct. 2, 2020 - Version 12.07
|
93
|
+
|
94
|
+
- Added support for GoPro .360 videos
|
95
|
+
- Added some new Canon RF and Nikkor Z lenses (thanks LibRaw)
|
96
|
+
- Added some new Sony LensType and CreativeStyle values and decode some
|
97
|
+
ILCE-7C tags (thanks Jos Roost)
|
98
|
+
- Added a number of new Olympus SceneMode values (thanks Herb)
|
99
|
+
- Added a new Nikon LensID
|
100
|
+
- Decode more timed metadata from Insta360 videos (thanks Thomas Allen)
|
101
|
+
- Decode timed GPS from videos of more Garmin dashcam models
|
102
|
+
- Decode a new GoPro video tag
|
103
|
+
- Reformat time-only EventTime values when writing and prevent arbitrary
|
104
|
+
strings from being written
|
105
|
+
- Patched to accept backslashes in SourceFile entries for -csv option
|
12
106
|
|
13
107
|
Sept. 11, 2020 - Version 12.06
|
14
108
|
|
data/bin/MANIFEST
CHANGED
@@ -567,6 +567,7 @@ t/GeoTiff_4.out
|
|
567
567
|
t/Geotag.t
|
568
568
|
t/Geotag_10.out
|
569
569
|
t/Geotag_11.out
|
570
|
+
t/Geotag_12.out
|
570
571
|
t/Geotag_2.out
|
571
572
|
t/Geotag_3.out
|
572
573
|
t/Geotag_5.out
|
@@ -652,6 +653,8 @@ t/MWG_6.out
|
|
652
653
|
t/MWG_7.out
|
653
654
|
t/MXF.t
|
654
655
|
t/MXF_2.out
|
656
|
+
t/MacOS.t
|
657
|
+
t/MacOS_2.out
|
655
658
|
t/Matroska.t
|
656
659
|
t/Matroska_2.out
|
657
660
|
t/Minolta.t
|
@@ -984,6 +987,7 @@ t/images/Geotag.log
|
|
984
987
|
t/images/Geotag.xml
|
985
988
|
t/images/Geotag2.log
|
986
989
|
t/images/Geotag3.log
|
990
|
+
t/images/Geotag_DJI_2020-12-02_[07-50-31].csv
|
987
991
|
t/images/GoPro.jpg
|
988
992
|
t/images/HTML.html
|
989
993
|
t/images/ICC_Profile.icc
|
@@ -1007,6 +1011,7 @@ t/images/MOI.moi
|
|
1007
1011
|
t/images/MP3.mp3
|
1008
1012
|
t/images/MWG.jpg
|
1009
1013
|
t/images/MXF.mxf
|
1014
|
+
t/images/MacOS.macos
|
1010
1015
|
t/images/Matroska.mkv
|
1011
1016
|
t/images/Minolta.jpg
|
1012
1017
|
t/images/Minolta.mrw
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
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
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
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-12.
|
109
|
-
cd Image-ExifTool-12.
|
109
|
+
gzip -dc Image-ExifTool-12.12.tar.gz | tar -xf -
|
110
|
+
cd Image-ExifTool-12.12
|
110
111
|
./exiftool t/images/ExifTool.jpg
|
111
112
|
|
112
113
|
Note: These commands extract meta information from one of the test images.
|
data/bin/exiftool
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
use strict;
|
11
11
|
require 5.004;
|
12
12
|
|
13
|
-
my $version = '12.
|
13
|
+
my $version = '12.12';
|
14
14
|
|
15
15
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
16
16
|
my $exeDir;
|
@@ -136,12 +136,13 @@ my $countSameWr; # count files written OK but not changed
|
|
136
136
|
my $critical; # flag for critical operations (disable CTRL-C)
|
137
137
|
my $csv; # flag for CSV option (set to "CSV", or maybe "JSON" when writing)
|
138
138
|
my $csvAdd; # flag to add CSV information to existing lists
|
139
|
+
my $csvDelim; # delimiter for CSV files
|
139
140
|
my $csvSaveCount; # save counter for last CSV file loaded
|
140
141
|
my $deleteOrig; # 0=restore original files, 1=delete originals, 2=delete w/o asking
|
141
142
|
my $disableOutput; # flag to disable normal output
|
142
143
|
my $doSetFileName; # flag set if FileName may be written
|
143
144
|
my $doUnzip; # flag to extract info from .gz and .bz2 files
|
144
|
-
my ($end,$endDir); # flags to end processing
|
145
|
+
my ($end,$endDir,%endDir); # flags to end processing
|
145
146
|
my $escapeC; # C-style escape
|
146
147
|
my $escapeHTML; # flag to escape printed values for html
|
147
148
|
my $evalWarning; # warning from eval
|
@@ -239,6 +240,7 @@ my %optArgs = (
|
|
239
240
|
'-c' => 1, '-coordformat' => 1,
|
240
241
|
'-charset' => 0, # (optional arg; OK because arg cannot begin with "-")
|
241
242
|
'-config' => 1,
|
243
|
+
'-csvdelim' => 1,
|
242
244
|
'-d' => 1, '-dateformat' => 1,
|
243
245
|
'-D' => 0, # necessary to avoid matching lower-case equivalent
|
244
246
|
'-echo' => 1, '-echo1' => 1, '-echo2' => 1, '-echo3' => 1, '-echo4' => 1,
|
@@ -246,11 +248,12 @@ my %optArgs = (
|
|
246
248
|
'-efile!' => 1, '-efile1!' => 1, '-efile2!' => 1, '-efile3!' => 1, '-efile4!' => 1,
|
247
249
|
'-ext' => 1, '--ext' => 1, '-ext+' => 1, '--ext+' => 1,
|
248
250
|
'-extension' => 1, '--extension' => 1, '-extension+' => 1, '--extension+' => 1,
|
249
|
-
'-fileorder' => 1,
|
251
|
+
'-fileorder' => 1, '-fileorder0' => 1, '-fileorder1' => 1, '-fileorder2' => 1,
|
252
|
+
'-fileorder3' => 1, '-fileorder4' => 1, '-fileorder5' => 1,
|
250
253
|
'-geotag' => 1,
|
251
254
|
'-globaltimeshift' => 1,
|
252
255
|
'-i' => 1, '-ignore' => 1,
|
253
|
-
'-if' => 1, '-if0' => 1, '-if1' => 1, '-if2' => 1, '-if3' => 1, '-if4' => 1,
|
256
|
+
'-if' => 1, '-if0' => 1, '-if1' => 1, '-if2' => 1, '-if3' => 1, '-if4' => 1, '-if5' => 1,
|
254
257
|
'-lang' => 0, # (optional arg; cannot begin with "-")
|
255
258
|
'-listitem' => 1,
|
256
259
|
'-o' => 1, '-out' => 1,
|
@@ -366,13 +369,21 @@ if (grep /^-common_args$/i, @ARGV) {
|
|
366
369
|
# loop over sets of command-line arguments separated by "-execute"
|
367
370
|
Command: for (;;) {
|
368
371
|
|
369
|
-
|
370
|
-
|
372
|
+
if (@echo3) {
|
373
|
+
my $str = join "\n", @echo3, "\n";
|
374
|
+
$str =~ s/\$\{status\}/$rtnVal/ig;
|
375
|
+
print STDOUT $str;
|
376
|
+
}
|
377
|
+
if (@echo4) {
|
378
|
+
my $str = join "\n", @echo4, "\n";
|
379
|
+
$str =~ s/\$\{status\}/$rtnVal/ig;
|
380
|
+
print STDERR $str;
|
381
|
+
}
|
371
382
|
|
372
383
|
$rafStdin->Close() if $rafStdin;
|
373
384
|
undef $rafStdin;
|
374
385
|
|
375
|
-
# save
|
386
|
+
# save our previous return codes
|
376
387
|
$rtnValPrev = $rtnVal;
|
377
388
|
$rtnValApp = $rtnVal if $rtnVal;
|
378
389
|
|
@@ -387,7 +398,7 @@ if ($binaryStdout) {
|
|
387
398
|
|
388
399
|
# flush console and print "{ready}" message if -stay_open is in effect
|
389
400
|
if ($stayOpen >= 2) {
|
390
|
-
if ($quiet) {
|
401
|
+
if ($quiet and not defined $executeID) {
|
391
402
|
# flush output if possible
|
392
403
|
eval { require IO::Handle } and STDERR->flush(), STDOUT->flush();
|
393
404
|
} else {
|
@@ -421,6 +432,7 @@ undef %countLink;
|
|
421
432
|
undef %created;
|
422
433
|
undef %csvTags;
|
423
434
|
undef %database;
|
435
|
+
undef %endDir;
|
424
436
|
undef %filterExt;
|
425
437
|
undef %ignore;
|
426
438
|
undef %printFmt;
|
@@ -492,6 +504,7 @@ $countGoodCr = 0;
|
|
492
504
|
$countGoodWr = 0;
|
493
505
|
$countNewDir = 0;
|
494
506
|
$countSameWr = 0;
|
507
|
+
$csvDelim = ',';
|
495
508
|
$csvSaveCount = 0;
|
496
509
|
$fileTrailer = '';
|
497
510
|
$filterFlag = 0;
|
@@ -554,7 +567,7 @@ if (not $preserveTime and $^O eq 'MSWin32') {
|
|
554
567
|
for (;;) {
|
555
568
|
|
556
569
|
# execute the command now if no more arguments or -execute is used
|
557
|
-
if (not @ARGV or ($ARGV[0] =~ /^(-|\xe2\x88\x92)execute(\d
|
570
|
+
if (not @ARGV or ($ARGV[0] =~ /^(-|\xe2\x88\x92)execute(\d+)?$/i and not $endOfOpts)) {
|
558
571
|
if (@ARGV) {
|
559
572
|
$executeID = $2; # save -execute number for "{ready}" response
|
560
573
|
$helped = 1; # don't show help if we used -execute
|
@@ -813,7 +826,7 @@ for (;;) {
|
|
813
826
|
next;
|
814
827
|
}
|
815
828
|
/^config$/i and Warn("Ignored -config option (not first on command line)\n"), shift, next;
|
816
|
-
if (/^csv(\+?=.*)
|
829
|
+
if (/^csv(\+?=.*)?$/i) {
|
817
830
|
my $csvFile = $1;
|
818
831
|
# must process on 2nd pass so -f and -charset options are available
|
819
832
|
unless ($pass) {
|
@@ -833,7 +846,7 @@ for (;;) {
|
|
833
846
|
if ($mt->Open(\*CSVFILE, $csvFile)) {
|
834
847
|
binmode CSVFILE;
|
835
848
|
require Image::ExifTool::Import;
|
836
|
-
$msg = Image::ExifTool::Import::ReadCSV(\*CSVFILE, \%database, $forcePrint);
|
849
|
+
$msg = Image::ExifTool::Import::ReadCSV(\*CSVFILE, \%database, $forcePrint, $csvDelim);
|
837
850
|
close(CSVFILE);
|
838
851
|
} else {
|
839
852
|
$msg = "Error opening CSV file '${csvFile}'";
|
@@ -844,6 +857,15 @@ for (;;) {
|
|
844
857
|
$csv = 'CSV';
|
845
858
|
next;
|
846
859
|
}
|
860
|
+
if (/^csvdelim$/i) {
|
861
|
+
$csvDelim = shift;
|
862
|
+
defined $csvDelim or Error("Expecting argument for -csvDelim option\n"), $badCmd=1, next;
|
863
|
+
$csvDelim =~ /"/ and Error("CSV delimiter can not contain a double quote\n"), $badCmd=1, next;
|
864
|
+
my %unescape = ( 't'=>"\t", 'n'=>"\n", 'r'=>"\r", '\\' => '\\' );
|
865
|
+
$csvDelim =~ s/\\(.)/$unescape{$1}||"\\$1"/sge;
|
866
|
+
$mt->Options(CSVDelim => $csvDelim);
|
867
|
+
next;
|
868
|
+
}
|
847
869
|
if (/^d$/ or $a eq 'dateformat') {
|
848
870
|
my $fmt = shift;
|
849
871
|
$fmt or Error("Expecting date format for -d option\n"), $badCmd=1, next;
|
@@ -1758,10 +1780,12 @@ if (@dbKeys) {
|
|
1758
1780
|
undef $evalWarning;
|
1759
1781
|
local $SIG{'__WARN__'} = sub { $evalWarning = $_[0] };
|
1760
1782
|
foreach (@dbKeys) {
|
1783
|
+
my $db = $database{$_};
|
1784
|
+
tr/\\/\// and $database{$_} = $db; # allow for backslashes in SourceFile
|
1761
1785
|
# (punt on using ConvertFileName here, so $absPath may be a mix of encodings)
|
1762
1786
|
my $absPath = AbsPath($_);
|
1763
1787
|
if (defined $absPath) {
|
1764
|
-
$database{$absPath} = $
|
1788
|
+
$database{$absPath} = $db unless $database{$absPath};
|
1765
1789
|
if ($verbose and $verbose > 1) {
|
1766
1790
|
print $vout "Imported entry for '${_}' (full path: '${absPath}')\n";
|
1767
1791
|
}
|
@@ -1972,6 +1996,7 @@ sub GetImageInfo($$)
|
|
1972
1996
|
}
|
1973
1997
|
last unless $result;
|
1974
1998
|
}
|
1999
|
+
undef @foundTags if $fastCondition; # ignore if we didn't get all tags
|
1975
2000
|
}
|
1976
2001
|
unless ($result) {
|
1977
2002
|
$verbose and print $vout "-------- $file (failed condition)$progStr\n";
|
@@ -2225,7 +2250,9 @@ sub GetImageInfo($$)
|
|
2225
2250
|
my $noDups = ($json or ($xml and $outFormat > 0));
|
2226
2251
|
my $printConv = $et->Options('PrintConv');
|
2227
2252
|
my $lastGroup = '';
|
2253
|
+
my $i = -1;
|
2228
2254
|
TAG: foreach $tag (@foundTags) {
|
2255
|
+
++$i; # keep track on index in @foundTags
|
2229
2256
|
my $tagName = GetTagName($tag);
|
2230
2257
|
my ($group, $valList);
|
2231
2258
|
# get the value for this tag
|
@@ -2343,26 +2370,38 @@ TAG: foreach $tag (@foundTags) {
|
|
2343
2370
|
}
|
2344
2371
|
# save information for CSV output
|
2345
2372
|
if ($csv) {
|
2346
|
-
my $
|
2347
|
-
$
|
2373
|
+
my $tn = $tagName;
|
2374
|
+
$tn .= '#' if $tag =~ /#/; # add ValueConv "#" suffix if used
|
2375
|
+
my $gt = $group ? "$group:$tn" : $tn;
|
2348
2376
|
# (tag-name case may be different if some tags don't exist
|
2349
2377
|
# in a file, so all logic must use lower-case tag names)
|
2350
|
-
my $lcTag = lc $
|
2378
|
+
my $lcTag = lc $gt;
|
2351
2379
|
# override existing entry only if top priority
|
2352
2380
|
next if defined $csvInfo{$lcTag} and $tag =~ /\(/;
|
2353
2381
|
$csvInfo{$lcTag} = $val;
|
2354
2382
|
if (defined $csvTags{$lcTag}) {
|
2355
2383
|
# overwrite with actual extracted tag name
|
2356
2384
|
# (note: can't check "if defined $val" here because -f may be used)
|
2357
|
-
$csvTags{$lcTag} = $
|
2358
|
-
|
2359
|
-
|
2360
|
-
|
2361
|
-
|
2362
|
-
|
2363
|
-
|
2364
|
-
|
2365
|
-
|
2385
|
+
$csvTags{$lcTag} = $gt if defined $$info{$tag};
|
2386
|
+
next;
|
2387
|
+
}
|
2388
|
+
# must check for "Unknown" group (for tags that don't exist)
|
2389
|
+
if ($group and defined $csvTags[$i] and $csvTags[$i] =~ /^(.*):$tn$/i) {
|
2390
|
+
next if $group eq 'Unknown'; # nothing more to do if we don't know tag group
|
2391
|
+
if ($1 eq 'unknown') {
|
2392
|
+
# replace unknown entry in CSV tag lookup and list
|
2393
|
+
delete $csvTags{$csvTags[$i]};
|
2394
|
+
$csvTags{$lcTag} = defined($val) ? $gt : '';
|
2395
|
+
$csvTags[$i] = $lcTag;
|
2396
|
+
next;
|
2397
|
+
}
|
2398
|
+
}
|
2399
|
+
# (don't save unextracted tag name unless -f was used)
|
2400
|
+
$csvTags{$lcTag} = defined($val) ? $gt : '';
|
2401
|
+
if (@csvFiles == 1) {
|
2402
|
+
push @csvTags, $lcTag; # save order of tags for first file
|
2403
|
+
} elsif (@csvTags) {
|
2404
|
+
undef @csvTags;
|
2366
2405
|
}
|
2367
2406
|
next;
|
2368
2407
|
}
|
@@ -3288,7 +3327,7 @@ sub FormatCSV($)
|
|
3288
3327
|
# the -b option is used to encode as Base64. It is unclear whether or not this
|
3289
3328
|
# is valid CSV, but some readers may not like it. (If this becomes a problem,
|
3290
3329
|
# in the future values may need to be truncated at the first NULL character.)
|
3291
|
-
$val = qq{"$val"} if $val =~ s/"/""/g or $val =~ /(^\s+|\s+$)/ or $val =~ /[
|
3330
|
+
$val = qq{"$val"} if $val =~ s/"/""/g or $val =~ /(^\s+|\s+$)/ or $val =~ /[\n\r]|\Q$csvDelim/;
|
3292
3331
|
return $val;
|
3293
3332
|
}
|
3294
3333
|
|
@@ -3301,9 +3340,9 @@ sub PrintCSV()
|
|
3301
3340
|
@csvTags or @csvTags = sort keys %csvTags;
|
3302
3341
|
# make a list of tags actually found
|
3303
3342
|
foreach $lcTag (@csvTags) {
|
3304
|
-
push @tags, $csvTags{$lcTag} if $csvTags{$lcTag};
|
3343
|
+
push @tags, FormatCSV($csvTags{$lcTag}) if $csvTags{$lcTag};
|
3305
3344
|
}
|
3306
|
-
print join(
|
3345
|
+
print join($csvDelim, 'SourceFile', @tags), "\n";
|
3307
3346
|
my $empty = defined($forcePrint) ? $forcePrint : '';
|
3308
3347
|
foreach $file (@csvFiles) {
|
3309
3348
|
my @vals = (FormatCSV($file)); # start with full file name
|
@@ -3314,7 +3353,7 @@ sub PrintCSV()
|
|
3314
3353
|
defined $val or push(@vals,$empty), next;
|
3315
3354
|
push @vals, FormatCSV($val);
|
3316
3355
|
}
|
3317
|
-
print join(
|
3356
|
+
print join($csvDelim, @vals), "\n";
|
3318
3357
|
}
|
3319
3358
|
}
|
3320
3359
|
|
@@ -3550,8 +3589,18 @@ sub ProcessFiles($;$)
|
|
3550
3589
|
if ($list) {
|
3551
3590
|
push(@$list, $file);
|
3552
3591
|
} else {
|
3592
|
+
if (%endDir) {
|
3593
|
+
my ($d, $f) = Image::ExifTool::SplitFileName($file);
|
3594
|
+
next if $endDir{$d};
|
3595
|
+
}
|
3553
3596
|
GetImageInfo($et, $file);
|
3554
3597
|
$end and Warn("End called - $file\n");
|
3598
|
+
if ($endDir) {
|
3599
|
+
Warn("EndDir called - $file\n");
|
3600
|
+
my ($d, $f) = Image::ExifTool::SplitFileName($file);
|
3601
|
+
$endDir{$d} = 1;
|
3602
|
+
undef $endDir;
|
3603
|
+
}
|
3555
3604
|
}
|
3556
3605
|
}
|
3557
3606
|
$et->Options(CharsetFileName => $enc) if $utf8FileName{$file};
|
@@ -3566,7 +3615,7 @@ sub ScanDir($$;$)
|
|
3566
3615
|
{
|
3567
3616
|
local $_;
|
3568
3617
|
my ($et, $dir, $list) = @_;
|
3569
|
-
my (@fileList, $done, $file, $utf8Name, $winSurrogate);
|
3618
|
+
my (@fileList, $done, $file, $utf8Name, $winSurrogate, $endThisDir);
|
3570
3619
|
my $enc = $et->Options('CharsetFileName');
|
3571
3620
|
# recode as UTF-8 if necessary
|
3572
3621
|
if ($enc) {
|
@@ -3636,6 +3685,7 @@ sub ScanDir($$;$)
|
|
3636
3685
|
last if $end;
|
3637
3686
|
next;
|
3638
3687
|
}
|
3688
|
+
next if $endThisDir;
|
3639
3689
|
# apply rules from -ext options
|
3640
3690
|
my $accepted;
|
3641
3691
|
if ($filterFlag) {
|
@@ -3678,9 +3728,11 @@ sub ScanDir($$;$)
|
|
3678
3728
|
last;
|
3679
3729
|
}
|
3680
3730
|
if ($endDir) {
|
3681
|
-
$
|
3731
|
+
$path =~ s(/$)();
|
3682
3732
|
Warn("EndDir called - $path\n");
|
3683
|
-
|
3733
|
+
$endDir{$path} = 1;
|
3734
|
+
$endThisDir = 1;
|
3735
|
+
undef $endDir;
|
3684
3736
|
}
|
3685
3737
|
}
|
3686
3738
|
}
|
@@ -4384,46 +4436,47 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
4384
4436
|
|
4385
4437
|
File Types
|
4386
4438
|
------------+-------------+-------------+-------------+------------
|
4387
|
-
|
4388
|
-
|
4389
|
-
|
4390
|
-
|
4391
|
-
|
4392
|
-
|
4393
|
-
|
4394
|
-
|
4395
|
-
|
4396
|
-
|
4397
|
-
|
4398
|
-
|
4399
|
-
|
4400
|
-
|
4401
|
-
|
4402
|
-
|
4403
|
-
|
4404
|
-
|
4405
|
-
|
4406
|
-
|
4407
|
-
|
4408
|
-
|
4409
|
-
|
4410
|
-
|
4411
|
-
|
4412
|
-
|
4413
|
-
|
4414
|
-
|
4415
|
-
|
4416
|
-
|
4417
|
-
|
4418
|
-
|
4419
|
-
|
4420
|
-
|
4421
|
-
|
4422
|
-
|
4423
|
-
|
4424
|
-
|
4425
|
-
|
4426
|
-
|
4439
|
+
360 r/w | DPX r | ITC r | ODP r | RIFF r
|
4440
|
+
3FR r | DR4 r/w/c | J2C r | ODS r | RSRC r
|
4441
|
+
3G2 r/w | DSS r | JNG r/w | ODT r | RTF r
|
4442
|
+
3GP r/w | DV r | JP2 r/w | OFR r | RW2 r/w
|
4443
|
+
A r | DVB r/w | JPEG r/w | OGG r | RWL r/w
|
4444
|
+
AA r | DVR-MS r | JSON r | OGV r | RWZ r
|
4445
|
+
AAE r | DYLIB r | K25 r | ONP r | RM r
|
4446
|
+
AAX r/w | EIP r | KDC r | OPUS r | SEQ r
|
4447
|
+
ACR r | EPS r/w | KEY r | ORF r/w | SKETCH r
|
4448
|
+
AFM r | EPUB r | LA r | OTF r | SO r
|
4449
|
+
AI r/w | ERF r/w | LFP r | PAC r | SR2 r/w
|
4450
|
+
AIFF r | EXE r | LNK r | PAGES r | SRF r
|
4451
|
+
APE r | EXIF r/w/c | LRV r/w | PBM r/w | SRW r/w
|
4452
|
+
ARQ r/w | EXR r | M2TS r | PCD r | SVG r
|
4453
|
+
ARW r/w | EXV r/w/c | M4A/V r/w | PCX r | SWF r
|
4454
|
+
ASF r | F4A/V r/w | MACOS r | PDB r | THM r/w
|
4455
|
+
AVI r | FFF r/w | MAX r | PDF r/w | TIFF r/w
|
4456
|
+
AVIF r/w | FITS r | MEF r/w | PEF r/w | TORRENT r
|
4457
|
+
AZW r | FLA r | MIE r/w/c | PFA r | TTC r
|
4458
|
+
BMP r | FLAC r | MIFF r | PFB r | TTF r
|
4459
|
+
BPG r | FLIF r/w | MKA r | PFM r | TXT r
|
4460
|
+
BTF r | FLV r | MKS r | PGF r | VCF r
|
4461
|
+
CHM r | FPF r | MKV r | PGM r/w | VRD r/w/c
|
4462
|
+
COS r | FPX r | MNG r/w | PLIST r | VSD r
|
4463
|
+
CR2 r/w | GIF r/w | MOBI r | PICT r | WAV r
|
4464
|
+
CR3 r/w | GPR r/w | MODD r | PMP r | WDP r/w
|
4465
|
+
CRM r/w | GZ r | MOI r | PNG r/w | WEBP r
|
4466
|
+
CRW r/w | HDP r/w | MOS r/w | PPM r/w | WEBM r
|
4467
|
+
CS1 r/w | HDR r | MOV r/w | PPT r | WMA r
|
4468
|
+
CSV r | HEIC r/w | MP3 r | PPTX r | WMV r
|
4469
|
+
CZI r | HEIF r/w | MP4 r/w | PS r/w | WTV r
|
4470
|
+
DCM r | HTML r | MPC r | PSB r/w | WV r
|
4471
|
+
DCP r/w | ICC r/w/c | MPG r | PSD r/w | X3F r/w
|
4472
|
+
DCR r | ICS r | MPO r/w | PSP r | XCF r
|
4473
|
+
DFONT r | IDML r | MQV r/w | QTIF r/w | XLS r
|
4474
|
+
DIVX r | IIQ r/w | MRW r/w | R3D r | XLSX r
|
4475
|
+
DJVU r | IND r/w | MXF r | RA r | XMP r/w/c
|
4476
|
+
DLL r | INSP r/w | NEF r/w | RAF r/w | ZIP r
|
4477
|
+
DNG r/w | INSV r | NRW r/w | RAM r |
|
4478
|
+
DOC r | INX r | NUMBERS r | RAR r |
|
4479
|
+
DOCX r | ISO r | O r | RAW r/w |
|
4427
4480
|
|
4428
4481
|
Meta Information
|
4429
4482
|
----------------------+----------------------+---------------------
|
@@ -4473,6 +4526,7 @@ L<Input-output text formatting|/Input-output text formatting>
|
|
4473
4526
|
-c FMT (-coordFormat) Set format for GPS coordinates
|
4474
4527
|
-charset [[TYPE=]CHARSET] Specify encoding for special characters
|
4475
4528
|
-csv[[+]=CSVFILE] Export/import tags in CSV format
|
4529
|
+
-csvDelim STR Set delimiter for CSV file
|
4476
4530
|
-d FMT (-dateFormat) Set format for date/time values
|
4477
4531
|
-D (-decimal) Show tag ID numbers in decimal
|
4478
4532
|
-E,-ex,-ec (-escape(HTML|XML|C))Escape tag values for HTML, XML or C
|
@@ -4992,8 +5046,11 @@ tag names (with optional group names) for each column of the file, and
|
|
4992
5046
|
values must be separated by commas. A special "SourceFile" column specifies
|
4993
5047
|
the files associated with each row of information (and a SourceFile of "*"
|
4994
5048
|
may be used to define default tags to be imported for all files which are
|
4995
|
-
combined with any tags specified for the specific SourceFile processed).
|
4996
|
-
|
5049
|
+
combined with any tags specified for the specific SourceFile processed). The
|
5050
|
+
B<-csvDelim> option may be used to change the input/output field delimiter
|
5051
|
+
if something other than a comma is required.
|
5052
|
+
|
5053
|
+
The following examples demonstrate basic use of the B<-csv> option:
|
4997
5054
|
|
4998
5055
|
# generate CSV file with common tags from all images in a directory
|
4999
5056
|
exiftool -common -csv dir > out.csv
|
@@ -5040,6 +5097,13 @@ option. When processing a large number of files, it is recommended to
|
|
5040
5097
|
either use the JSON (B<-j>) or XML (B<-X>) output format, or use B<-p> to
|
5041
5098
|
generate a fixed-column CSV file instead of using the B<-csv> option.
|
5042
5099
|
|
5100
|
+
=item B<-csvDelim> I<STR>
|
5101
|
+
|
5102
|
+
Set the delimiter for separating CSV entries for CSV file input/output via
|
5103
|
+
the B<-csv> option. I<STR> may contain "\t", "\n", "\r" and "\\" to
|
5104
|
+
represent TAB, LF, CR and '\' respectively. A double quote is not allowed
|
5105
|
+
in the delimiter. Default is ','.
|
5106
|
+
|
5043
5107
|
=item B<-d> I<FMT> (B<-dateFormat>)
|
5044
5108
|
|
5045
5109
|
Set the format for date/time tag values. The I<FMT> string may contain
|
@@ -5291,7 +5355,7 @@ with this command:
|
|
5291
5355
|
|
5292
5356
|
produces output like this:
|
5293
5357
|
|
5294
|
-
-- Generated by ExifTool 12.
|
5358
|
+
-- Generated by ExifTool 12.12 --
|
5295
5359
|
File: a.jpg - 2003:10:31 15:44:19
|
5296
5360
|
(f/5.6, 1/60s, ISO 100)
|
5297
5361
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -5699,7 +5763,8 @@ extracting any EXIF MakerNote information. B<-fast3> avoids extracting
|
|
5699
5763
|
metadata from the file, and returns only pseudo System tags, but still reads
|
5700
5764
|
the file header to obtain an educated guess at FileType. B<-fast4> doesn't
|
5701
5765
|
even read the file header, and returns only System tags and a FileType based
|
5702
|
-
on the file extension.
|
5766
|
+
on the file extension. B<-fast5> also disables generation of the Composite
|
5767
|
+
tags (like B<-e>). Has no effect when writing.
|
5703
5768
|
|
5704
5769
|
Note that a separate B<-fast> setting may be used for evaluation of a B<-if>
|
5705
5770
|
condition, or when ordering files with the B<-fileOrder> option. See the
|
@@ -5724,7 +5789,9 @@ involves an additional processing pass of each file, but this impact may be
|
|
5724
5789
|
reduced by specifying a I<NUM> for the B<-fast> level used during the
|
5725
5790
|
metadata-extraction phase. For example, B<-fileOrder4> may be used if
|
5726
5791
|
I<TAG> is a pseudo System tag. If multiple B<-fileOrder> options are used,
|
5727
|
-
the extraction is done at the lowest B<-fast> level.
|
5792
|
+
the extraction is done at the lowest B<-fast> level. Note that files are
|
5793
|
+
sorted across directory boundaries if multiple input directories are
|
5794
|
+
specified.
|
5728
5795
|
|
5729
5796
|
=item B<-i> I<DIR> (B<-ignore>)
|
5730
5797
|
|
@@ -5765,7 +5832,7 @@ Adding I<NUM> to the B<-if> option causes a separate processing pass to be
|
|
5765
5832
|
executed for evaluating I<EXPR> at a B<-fast> level given by I<NUM> (see the
|
5766
5833
|
B<-fast> option documentation for details). Without I<NUM>, only one
|
5767
5834
|
processing pass is done at the level specified by the B<-fast> option. For
|
5768
|
-
example, using B<-
|
5835
|
+
example, using B<-if5> is possible if I<EXPR> uses only pseudo System tags,
|
5769
5836
|
and may significantly speed processing if enough files fail the condition.
|
5770
5837
|
|
5771
5838
|
The expression has access to the current ExifTool object through C<$self>,
|
@@ -5774,7 +5841,8 @@ of the file processing. Both functions have a return value of 1. Case is
|
|
5774
5841
|
significant for function names.
|
5775
5842
|
|
5776
5843
|
End() - end processing after this file
|
5777
|
-
EndDir() - end processing of files in this directory
|
5844
|
+
EndDir() - end processing of files in this directory (not
|
5845
|
+
compatible with the B<-fileOrder> option)
|
5778
5846
|
|
5779
5847
|
Notes:
|
5780
5848
|
|
@@ -6236,7 +6304,9 @@ about the configuration file syntax.
|
|
6236
6304
|
Echo I<TEXT> to stdout (B<-echo> or B<-echo1>) or stderr (B<-echo2>). Text
|
6237
6305
|
is output as the command line is parsed, before the processing of any input
|
6238
6306
|
files. I<NUM> may also be 3 or 4 to output text (to stdout or stderr
|
6239
|
-
respectively) after processing is complete.
|
6307
|
+
respectively) after processing is complete. For B<-echo3> and B<-echo4>,
|
6308
|
+
"${status}" may be used in the I<TEXT> string to represent the numerical
|
6309
|
+
exit status of the command (see L</EXIT STATUS>).
|
6240
6310
|
|
6241
6311
|
=item B<-efile>[I<NUM>][!] I<ERRFILE>
|
6242
6312
|
|
@@ -6257,7 +6327,8 @@ commands were executed as separate command lines (with the exception of the
|
|
6257
6327
|
B<-config> and B<-use> options which remain in effect for subsequent
|
6258
6328
|
commands). Allows multiple commands to be executed from a single command
|
6259
6329
|
line. I<NUM> is an optional number that is echoed in the "{ready}" message
|
6260
|
-
when using the B<-stay_open> feature.
|
6330
|
+
when using the B<-stay_open> feature. If a I<NUM> is specified, the B<-q>
|
6331
|
+
option no longer suppresses the output "{readyNUM}" message.
|
6261
6332
|
|
6262
6333
|
=item B<-srcfile> I<FMT>
|
6263
6334
|
|
@@ -6307,7 +6378,10 @@ received up to this point, send a "{ready}" message to stdout when done
|
|
6307
6378
|
(unless the B<-q> or B<-T> option is used), and continue trying to read
|
6308
6379
|
arguments for the next command from I<ARGFILE>. To aid in command/response
|
6309
6380
|
synchronization, any number appended to the C<-execute> option is echoed in
|
6310
|
-
the "{ready}" message. For example, C<-execute613> results in "{ready613}".
|
6381
|
+
the "{ready}" message. For example, C<-execute613> results in "{ready613}".
|
6382
|
+
When this number is added, B<-q> no longer suppresses the "{ready}" message.
|
6383
|
+
(Also, see the B<-echo3> and B<-echo4> options for additional ways to pass
|
6384
|
+
signals back to your application.)
|
6311
6385
|
|
6312
6386
|
4) Repeat steps 2 and 3 for each command.
|
6313
6387
|
|
@@ -6322,7 +6396,7 @@ writing the following lines to the currently open I<ARGFILE>:
|
|
6322
6396
|
-@
|
6323
6397
|
NEWARGFILE
|
6324
6398
|
|
6325
|
-
This causes I<ARGFILE> to be closed, and I<NEWARGFILE> to be kept open.
|
6399
|
+
This causes I<ARGFILE> to be closed, and I<NEWARGFILE> to be kept open.
|
6326
6400
|
(Without the B<-stay_open> here, exiftool would have returned to reading
|
6327
6401
|
arguments from I<ARGFILE> after reaching the end of I<NEWARGFILE>.)
|
6328
6402
|
|