exiftool_vendored 12.06.0 → 12.12.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.
- 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
|
|