exiftool_vendored 12.11.0 → 12.16.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 (195) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +62 -2
  3. data/bin/MANIFEST +5 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +3 -3
  7. data/bin/exiftool +70 -36
  8. data/bin/lib/File/RandomAccess.pm +1 -1
  9. data/bin/lib/File/RandomAccess.pod +2 -2
  10. data/bin/lib/Image/ExifTool.pm +39 -4
  11. data/bin/lib/Image/ExifTool.pod +12 -8
  12. data/bin/lib/Image/ExifTool/AES.pm +1 -1
  13. data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
  14. data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  15. data/bin/lib/Image/ExifTool/APE.pm +1 -1
  16. data/bin/lib/Image/ExifTool/APP12.pm +1 -1
  17. data/bin/lib/Image/ExifTool/ASF.pm +1 -1
  18. data/bin/lib/Image/ExifTool/Apple.pm +1 -1
  19. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  20. data/bin/lib/Image/ExifTool/BMP.pm +1 -1
  21. data/bin/lib/Image/ExifTool/BPG.pm +1 -1
  22. data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
  23. data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  24. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +10 -4
  25. data/bin/lib/Image/ExifTool/Canon.pm +3 -2
  26. data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  27. data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  28. data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  29. data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  30. data/bin/lib/Image/ExifTool/Casio.pm +1 -1
  31. data/bin/lib/Image/ExifTool/Charset.pm +1 -1
  32. data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
  33. data/bin/lib/Image/ExifTool/DJI.pm +28 -2
  34. data/bin/lib/Image/ExifTool/DNG.pm +1 -1
  35. data/bin/lib/Image/ExifTool/DPX.pm +4 -4
  36. data/bin/lib/Image/ExifTool/DV.pm +1 -1
  37. data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  38. data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  39. data/bin/lib/Image/ExifTool/EXE.pm +1 -1
  40. data/bin/lib/Image/ExifTool/Exif.pm +14 -1
  41. data/bin/lib/Image/ExifTool/FITS.pm +1 -1
  42. data/bin/lib/Image/ExifTool/FLAC.pm +1 -1
  43. data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  44. data/bin/lib/Image/ExifTool/FLIR.pm +1 -1
  45. data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
  46. data/bin/lib/Image/ExifTool/Flash.pm +1 -1
  47. data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
  48. data/bin/lib/Image/ExifTool/Font.pm +1 -1
  49. data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
  50. data/bin/lib/Image/ExifTool/FujiFilm.pm +1 -1
  51. data/bin/lib/Image/ExifTool/GE.pm +1 -1
  52. data/bin/lib/Image/ExifTool/GIF.pm +1 -1
  53. data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  54. data/bin/lib/Image/ExifTool/GPS.pm +1 -1
  55. data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  56. data/bin/lib/Image/ExifTool/Geotag.pm +30 -11
  57. data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  58. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  59. data/bin/lib/Image/ExifTool/HP.pm +1 -1
  60. data/bin/lib/Image/ExifTool/HTML.pm +1 -1
  61. data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
  62. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  63. data/bin/lib/Image/ExifTool/ID3.pm +1 -1
  64. data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  65. data/bin/lib/Image/ExifTool/ISO.pm +1 -1
  66. data/bin/lib/Image/ExifTool/ITC.pm +1 -1
  67. data/bin/lib/Image/ExifTool/Import.pm +3 -3
  68. data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  69. data/bin/lib/Image/ExifTool/JPEG.pm +24 -2
  70. data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  71. data/bin/lib/Image/ExifTool/JSON.pm +1 -1
  72. data/bin/lib/Image/ExifTool/JVC.pm +1 -1
  73. data/bin/lib/Image/ExifTool/Jpeg2000.pm +9 -4
  74. data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  75. data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  76. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  77. data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  78. data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  79. data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  80. data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  81. data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  82. data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  83. data/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
  84. data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
  85. data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  86. data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  87. data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  88. data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  89. data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  90. data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  91. data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  92. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  93. data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  94. data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  95. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  96. data/bin/lib/Image/ExifTool/M2TS.pm +1 -1
  97. data/bin/lib/Image/ExifTool/MIE.pm +1 -1
  98. data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  99. data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  100. data/bin/lib/Image/ExifTool/MNG.pm +1 -1
  101. data/bin/lib/Image/ExifTool/MOI.pm +1 -1
  102. data/bin/lib/Image/ExifTool/MPC.pm +1 -1
  103. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  104. data/bin/lib/Image/ExifTool/MPF.pm +1 -1
  105. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  106. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  107. data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  108. data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  109. data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
  110. data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  111. data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  112. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  113. data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  114. data/bin/lib/Image/ExifTool/Nikon.pm +315 -35
  115. data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  116. data/bin/lib/Image/ExifTool/NikonCustom.pm +1 -1
  117. data/bin/lib/Image/ExifTool/NikonSettings.pm +2013 -0
  118. data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  119. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  120. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  121. data/bin/lib/Image/ExifTool/Olympus.pm +2 -1
  122. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  123. data/bin/lib/Image/ExifTool/Opus.pm +1 -1
  124. data/bin/lib/Image/ExifTool/PCX.pm +1 -1
  125. data/bin/lib/Image/ExifTool/PDF.pm +10 -2
  126. data/bin/lib/Image/ExifTool/PGF.pm +1 -1
  127. data/bin/lib/Image/ExifTool/PICT.pm +1 -1
  128. data/bin/lib/Image/ExifTool/PLIST.pm +1 -1
  129. data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  130. data/bin/lib/Image/ExifTool/PNG.pm +12 -4
  131. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  132. data/bin/lib/Image/ExifTool/PSP.pm +1 -1
  133. data/bin/lib/Image/ExifTool/Palm.pm +1 -1
  134. data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
  135. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  136. data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  137. data/bin/lib/Image/ExifTool/Pentax.pm +3 -2
  138. data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
  139. data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  140. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  141. data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
  142. data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  143. data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  144. data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  145. data/bin/lib/Image/ExifTool/QuickTime.pm +38 -23
  146. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +46 -7
  147. data/bin/lib/Image/ExifTool/RIFF.pm +83 -5
  148. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  149. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  150. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  151. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  152. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  153. data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  154. data/bin/lib/Image/ExifTool/Red.pm +1 -1
  155. data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
  156. data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  157. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  158. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  159. data/bin/lib/Image/ExifTool/Shift.pl +1 -1
  160. data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  161. data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  162. data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  163. data/bin/lib/Image/ExifTool/Sony.pm +8 -2
  164. data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  165. data/bin/lib/Image/ExifTool/Stim.pm +1 -1
  166. data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  167. data/bin/lib/Image/ExifTool/TagLookup.pm +3943 -3807
  168. data/bin/lib/Image/ExifTool/TagNames.pod +312 -18
  169. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  170. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  171. data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  172. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  173. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  174. data/bin/lib/Image/ExifTool/Validate.pm +1 -1
  175. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  176. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  177. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  178. data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  179. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  180. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  181. data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  182. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  183. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  184. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +1 -1
  185. data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
  186. data/bin/lib/Image/ExifTool/Writer.pl +26 -14
  187. data/bin/lib/Image/ExifTool/XMP.pm +17 -8
  188. data/bin/lib/Image/ExifTool/XMP2.pl +5 -1
  189. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  190. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  191. data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  192. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  193. data/bin/perl-Image-ExifTool.spec +1 -1
  194. data/lib/exiftool_vendored/version.rb +1 -1
  195. metadata +9 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b7f2c837f1bff7860cad5011a04c5671d88d4a761c197c2442c73791c5d87b22
4
- data.tar.gz: 49b1ea22c9fe6668b08f0b021cbe492cc9b870d931d92a4fe127ba7ada41d757
3
+ metadata.gz: 6e5f50165965c391eee5f2088b8220f437030d2c6f03f3f1af04df861f962f24
4
+ data.tar.gz: e9c7f8127928dfc92efcbe0e851dffeea05f6a97282497ff7a1e456c4802c9b6
5
5
  SHA512:
6
- metadata.gz: a66c9d7b5f2f9f4118ff5c4355fbff604a7173c0b6a90349e2884624a55e1216e77b9e00c958515447d58d5f9d3e612f48e6608aeea8ae6ee3528512c39db1b2
7
- data.tar.gz: 6d74f8b745f7c964dad82bca92d98c07b318d4895d12d4f10cfc2e8c212d326abdd02e60afff8af7e936c2b89802277b4ae79b4f3d1da2642f0ffd9e4717d0eb
6
+ metadata.gz: 54b390d7d5dd0b4e8420b747301442137dba8efea7fb6fb3b509634560ac1f5845f5d8dfae09b35c8ce6793a13cdd88e8620068464437d97632f19fb567da837
7
+ data.tar.gz: c2f4c386d46378f95d080c67e9a06d8c0b4a8e48038aff3dda4dc3da32cfa280dd79f39ac85c15174dd6186a24e8093157ec2529944a72d19312f4a569806f77
@@ -4,8 +4,68 @@ 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 12.00. (Other versions are
8
- considered development releases, and are not uploaded to CPAN.)
7
+ Note: The most recent production release is Version 12.16. (Other versions are
8
+ considered development releases, and are not uploaded to MetaCPAN.)
9
+
10
+ Jan. 21, 2021 - Version 12.16 (production release)
11
+
12
+ - Extract another form of video subtitle text
13
+ - Enhanced -ee option with -ee2 and -ee3 to allow parsing of the H264 video
14
+ stream in MP4 files
15
+ - Changed a Nikon FlashMode value
16
+ - Fixed problem that caused a failed DPX test on Strawberry Perl
17
+
18
+ Jan. 18, 2021 - Version 12.15 (production release)
19
+
20
+ - Added a couple of new Sony LensType values (thanks LibRaw and Jos Roost)
21
+ - Added a new Nikon FlashMode value (thanks Mike)
22
+ - Decode NikonSettings (thanks Warren Hatch)
23
+ - Decode thermal information from DJI RJPEG images
24
+ - Fixed extra newline in -echo3 and -echo4 outputs added in version 12.10
25
+ - Fixed out-of-memory problem when writing some very large PNG files under
26
+ Windows
27
+
28
+ Jan. 6, 2021 - Version 12.14
29
+
30
+ - Added support for 2 more types of timed GPS in video files (that makes 49
31
+ different formats now supported)
32
+ - Added validity check for PDF trailer dictionary Size
33
+ - Added a new Pentax LensType
34
+ - Extract metadata from Jpeg2000 Association box
35
+ - Changed -g:XX:YY and -G:XX:YY options to show empty strings for non-existent
36
+ groups
37
+ - Patched to issue warning and avoid writing date/time values with a zero
38
+ month or day number
39
+ - Patched to avoid runtime warnings if trying to set FileName to an empty
40
+ string
41
+ - Fixed issue that could cause GPS test number 12 to fail on some systems
42
+ - Fixed problem extracting XML as a block from Jpeg2000 images, and extract
43
+ XML tags in the XML group instead of XMP
44
+
45
+ Dec. 24, 2020 - Version 12.13
46
+
47
+ - Added -i HIDDEN option to ignore files with names that start with "."
48
+ - Added a few new Nikon ShutterMode values (thanks Jan Skoda)
49
+ - Added ability to write Google GCamera MicroVideo XMP tags
50
+ - Add time zone automatically to most string-based QuickTime date/time tags
51
+ when writing unless the PrintConv option is disabled
52
+ - Decode a new Sony tag (thanks LibRaw)
53
+ - Changed behaviour when writing only pseudo tags to return an error and avoid
54
+ writing any other tags if writing FileName fails
55
+ - Print "X image files read" message even if only 1 file is read when at least
56
+ one other file has failed the -if condition
57
+
58
+ Dec. 4, 2020 - Version 12.12
59
+
60
+ - Added ability to geotag from DJI CSV log files
61
+ - Added a new CanonModelID
62
+ - Added a couple of new Sony LensType values (thanks LibRaw)
63
+ - Enhanced -csvDelim option to allow "\t", "\n", "\r" and "\\"
64
+ - Unescape "\b" and "\f" in imported JSON values
65
+ - Fixed bug introduced in 12.10 which generated a "Not an integer" warning
66
+ when attempting to shift some QuickTime date/time tags
67
+ - Fixed shared-write permission problem with -@ argfile when using -stay_open
68
+ and a filename containing special characters on Windows
9
69
 
10
70
  Nov. 27, 2020 - Version 12.11
11
71
 
@@ -115,6 +115,7 @@ html/TagNames/Motorola.html
115
115
  html/TagNames/Nikon.html
116
116
  html/TagNames/NikonCapture.html
117
117
  html/TagNames/NikonCustom.html
118
+ html/TagNames/NikonSettings.html
118
119
  html/TagNames/Nintendo.html
119
120
  html/TagNames/OOXML.html
120
121
  html/TagNames/Ogg.html
@@ -337,6 +338,7 @@ lib/Image/ExifTool/Motorola.pm
337
338
  lib/Image/ExifTool/Nikon.pm
338
339
  lib/Image/ExifTool/NikonCapture.pm
339
340
  lib/Image/ExifTool/NikonCustom.pm
341
+ lib/Image/ExifTool/NikonSettings.pm
340
342
  lib/Image/ExifTool/Nintendo.pm
341
343
  lib/Image/ExifTool/OOXML.pm
342
344
  lib/Image/ExifTool/Ogg.pm
@@ -567,6 +569,7 @@ t/GeoTiff_4.out
567
569
  t/Geotag.t
568
570
  t/Geotag_10.out
569
571
  t/Geotag_11.out
572
+ t/Geotag_12.out
570
573
  t/Geotag_2.out
571
574
  t/Geotag_3.out
572
575
  t/Geotag_5.out
@@ -602,6 +605,7 @@ t/Jpeg2000.t
602
605
  t/Jpeg2000_2.out
603
606
  t/Jpeg2000_3.out
604
607
  t/Jpeg2000_4.out
608
+ t/Jpeg2000_5.out
605
609
  t/Kodak.t
606
610
  t/Kodak_2.out
607
611
  t/Kodak_3.out
@@ -986,6 +990,7 @@ t/images/Geotag.log
986
990
  t/images/Geotag.xml
987
991
  t/images/Geotag2.log
988
992
  t/images/Geotag3.log
993
+ t/images/Geotag_DJI_2020-12-02_[07-50-31].csv
989
994
  t/images/GoPro.jpg
990
995
  t/images/HTML.html
991
996
  t/images/ICC_Profile.icc
@@ -47,5 +47,5 @@
47
47
  }
48
48
  },
49
49
  "release_status" : "stable",
50
- "version" : "12.11"
50
+ "version" : "12.16"
51
51
  }
@@ -28,4 +28,4 @@ recommends:
28
28
  Time::HiRes: 0
29
29
  requires:
30
30
  perl: 5.004
31
- version: 12.11
31
+ version: 12.16
data/bin/README CHANGED
@@ -106,8 +106,8 @@ your home directory, then you would type the following commands in a
106
106
  terminal window to extract and run ExifTool:
107
107
 
108
108
  cd ~/Desktop
109
- gzip -dc Image-ExifTool-12.11.tar.gz | tar -xf -
110
- cd Image-ExifTool-12.11
109
+ gzip -dc Image-ExifTool-12.16.tar.gz | tar -xf -
110
+ cd Image-ExifTool-12.16
111
111
  ./exiftool t/images/ExifTool.jpg
112
112
 
113
113
  Note: These commands extract meta information from one of the test images.
@@ -161,7 +161,7 @@ for calculating digest values and providing other features listed below:
161
161
 
162
162
  COPYRIGHT AND LICENSE
163
163
 
164
- Copyright 2003-2020, Phil Harvey
164
+ Copyright 2003-2021, Phil Harvey
165
165
 
166
166
  This is free software; you can redistribute it and/or modify it under the
167
167
  same terms as Perl itself.
@@ -10,7 +10,7 @@
10
10
  use strict;
11
11
  require 5.004;
12
12
 
13
- my $version = '12.11';
13
+ my $version = '12.16';
14
14
 
15
15
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
16
16
  my $exeDir;
@@ -106,6 +106,7 @@ my %csvTags; # lookup for all found tags with CSV option (lower case keys
106
106
  my %database; # lookup for database information based on file name (in ExifTool Charset)
107
107
  my %filterExt; # lookup for filtered extensions
108
108
  my %ignore; # directory names to ignore
109
+ my $ignoreHidden; # flag to ignore hidden files
109
110
  my %preserveTime; # preserved timestamps for files
110
111
  my %printFmt; # the contents of the print format file
111
112
  my %setTags; # hash of list references for tags to set from files
@@ -370,12 +371,12 @@ if (grep /^-common_args$/i, @ARGV) {
370
371
  Command: for (;;) {
371
372
 
372
373
  if (@echo3) {
373
- my $str = join "\n", @echo3, "\n";
374
+ my $str = join("\n", @echo3) . "\n";
374
375
  $str =~ s/\$\{status\}/$rtnVal/ig;
375
376
  print STDOUT $str;
376
377
  }
377
378
  if (@echo4) {
378
- my $str = join "\n", @echo4, "\n";
379
+ my $str = join("\n", @echo4) . "\n";
379
380
  $str =~ s/\$\{status\}/$rtnVal/ig;
380
381
  print STDERR $str;
381
382
  }
@@ -468,6 +469,7 @@ undef $fileHeader;
468
469
  undef $filtered;
469
470
  undef $fixLen;
470
471
  undef $forcePrint;
472
+ undef $ignoreHidden;
471
473
  undef $joinLists;
472
474
  undef $langOpt;
473
475
  undef $listItem;
@@ -859,7 +861,11 @@ for (;;) {
859
861
  }
860
862
  if (/^csvdelim$/i) {
861
863
  $csvDelim = shift;
862
- defined $csvDelim or Error("Expecting argument for -csvDelim option\n"), $badCmd=1;
864
+ defined $csvDelim or Error("Expecting argument for -csvDelim option\n"), $badCmd=1, next;
865
+ $csvDelim =~ /"/ and Error("CSV delimiter can not contain a double quote\n"), $badCmd=1, next;
866
+ my %unescape = ( 't'=>"\t", 'n'=>"\n", 'r'=>"\r", '\\' => '\\' );
867
+ $csvDelim =~ s/\\(.)/$unescape{$1}||"\\$1"/sge;
868
+ $mt->Options(CSVDelim => $csvDelim);
863
869
  next;
864
870
  }
865
871
  if (/^d$/ or $a eq 'dateformat') {
@@ -888,8 +894,8 @@ for (;;) {
888
894
  $helped = 1;
889
895
  next;
890
896
  }
891
- if (/^(ee|extractembedded)$/i) {
892
- $mt->Options(ExtractEmbedded => 1);
897
+ if (/^(ee|extractembedded)(\d*)$/i) {
898
+ $mt->Options(ExtractEmbedded => $2 || 1);
893
899
  $mt->Options(Duplicates => 1);
894
900
  next;
895
901
  }
@@ -982,6 +988,7 @@ for (;;) {
982
988
  my $dir = shift;
983
989
  defined $dir or Error("Expecting directory name for -i option\n"), $badCmd=1, next;
984
990
  $ignore{$dir} = 1;
991
+ $dir eq 'HIDDEN' and $ignoreHidden = 1;
985
992
  next;
986
993
  }
987
994
  if (/^if(\d*)$/i) {
@@ -1859,7 +1866,7 @@ if (defined $deleteOrig) {
1859
1866
  printf($o "%5d image files %s\n", $countCopyWr, $overwriteOrig ? 'moved' : 'copied') if $countCopyWr;
1860
1867
  printf($o "%5d files weren't updated due to errors\n", $countBadWr) if $countBadWr;
1861
1868
  printf($o "%5d files weren't created due to errors\n", $countBadCr) if $countBadCr;
1862
- printf($o "%5d image files read\n", $count) if $tot>1 or ($countDir and not $totWr);
1869
+ printf($o "%5d image files read\n", $count) if ($tot+$countFailed)>1 or ($countDir and not $totWr);
1863
1870
  printf($o "%5d files could not be read\n", $countBad) if $countBad;
1864
1871
  printf($o "%5d output files created\n", scalar(keys %created)) if $textOut;
1865
1872
  printf($o "%5d output files appended\n", scalar(keys %appended)) if %appended;
@@ -2851,6 +2858,10 @@ sub SetImageInfo($$$)
2851
2858
  # determine what our output file name should be
2852
2859
  my $newFileName = $et->GetNewValues('FileName');
2853
2860
  my $newDir = $et->GetNewValues('Directory');
2861
+ if (defined $newFileName and not length $newFileName) {
2862
+ Warn "Warning: New file name is empty - $ infile\n";
2863
+ undef $newFileName;
2864
+ }
2854
2865
  if (defined $testName) {
2855
2866
  my $err;
2856
2867
  $err = "You shouldn't write FileName or Directory with TestFile" if defined $newFileName or defined $newDir;
@@ -2929,14 +2940,19 @@ sub SetImageInfo($$$)
2929
2940
  }
2930
2941
  # quickly rename file and/or set file date if this is all we are doing
2931
2942
  if ($numSet == $numPseudo) {
2932
- my $r1 = $et->SetFileModifyDate($file,undef,'FileCreateDate');
2933
- my $r2 = $et->SetFileModifyDate($file);
2934
- my $r3 = $et->SetSystemTags($file);
2935
- my $r4 = 0;
2936
- $r4 = $et->SetFileName($file, $outfile) if defined $outfile;
2937
- if ($r1 > 0 or $r2 > 0 or $r3 > 0 or $r4 > 0) {
2943
+ my ($r0, $r1, $r2, $r3) = (0, 0, 0, 0);
2944
+ if (defined $outfile) {
2945
+ $r0 = $et->SetFileName($file, $outfile);
2946
+ $file = $$et{NewName} if $r0 > 0; # continue with new name if changed
2947
+ }
2948
+ unless ($r0 < 0) {
2949
+ $r1 = $et->SetFileModifyDate($file,undef,'FileCreateDate');
2950
+ $r2 = $et->SetFileModifyDate($file);
2951
+ $r3 = $et->SetSystemTags($file);
2952
+ }
2953
+ if ($r0 > 0 or $r1 > 0 or $r2 > 0 or $r3 > 0) {
2938
2954
  ++$countGoodWr;
2939
- } elsif ($r1 < 0 or $r2 < 0 or $r3 < 0 or $r4 < 0) {
2955
+ } elsif ($r0 < 0 or $r1 < 0 or $r2 < 0 or $r3 < 0) {
2940
2956
  EFile($infile);
2941
2957
  ++$countBadWr;
2942
2958
  return 0;
@@ -2945,8 +2961,7 @@ sub SetImageInfo($$$)
2945
2961
  ++$countSameWr;
2946
2962
  }
2947
2963
  if (defined $hardLink or defined $symLink or defined $testName) {
2948
- my $src = (defined $outfile and $r4 > 0) ? $outfile : $file;
2949
- DoHardLink($et, $src, $hardLink, $symLink, $testName);
2964
+ DoHardLink($et, $file, $hardLink, $symLink, $testName);
2950
2965
  }
2951
2966
  return 1;
2952
2967
  }
@@ -3682,6 +3697,7 @@ sub ScanDir($$;$)
3682
3697
  next;
3683
3698
  }
3684
3699
  next if $endThisDir;
3700
+ next if $ignoreHidden and $file =~ /^\./; # ignore hidden files if specified
3685
3701
  # apply rules from -ext options
3686
3702
  my $accepted;
3687
3703
  if ($filterFlag) {
@@ -4557,7 +4573,7 @@ L<Processing control|/Processing control>
4557
4573
 
4558
4574
  -a (-duplicates) Allow duplicate tags to be extracted
4559
4575
  -e (--composite) Do not generate composite tags
4560
- -ee (-extractEmbedded) Extract information from embedded files
4576
+ -ee[NUM] (-extractEmbedded) Extract information from embedded files
4561
4577
  -ext[+] EXT (-extension) Process files with specified extension
4562
4578
  -F[OFFSET] (-fixBase) Fix the base for maker notes offsets
4563
4579
  -fast[NUM] Increase speed when extracting metadata
@@ -5095,8 +5111,10 @@ generate a fixed-column CSV file instead of using the B<-csv> option.
5095
5111
 
5096
5112
  =item B<-csvDelim> I<STR>
5097
5113
 
5098
- Set the delimiter for separating CSV entries for the B<-csv> option.
5099
- Default is ','.
5114
+ Set the delimiter for separating CSV entries for CSV file input/output via
5115
+ the B<-csv> option. I<STR> may contain "\t", "\n", "\r" and "\\" to
5116
+ represent TAB, LF, CR and '\' respectively. A double quote is not allowed
5117
+ in the delimiter. Default is ','.
5100
5118
 
5101
5119
  =item B<-d> I<FMT> (B<-dateFormat>)
5102
5120
 
@@ -5349,7 +5367,7 @@ with this command:
5349
5367
 
5350
5368
  produces output like this:
5351
5369
 
5352
- -- Generated by ExifTool 12.11 --
5370
+ -- Generated by ExifTool 12.16 --
5353
5371
  File: a.jpg - 2003:10:31 15:44:19
5354
5372
  (f/5.6, 1/60s, ISO 100)
5355
5373
  File: b.jpg - 2006:05:23 11:57:38
@@ -5688,7 +5706,7 @@ when copying.
5688
5706
 
5689
5707
  Extract existing tags only -- don't generate composite tags.
5690
5708
 
5691
- =item B<-ee> (B<-extractEmbedded>)
5709
+ =item B<-ee>[I<NUM>] (B<-extractEmbedded>)
5692
5710
 
5693
5711
  Extract information from embedded documents in EPS files, embedded EPS
5694
5712
  information and JPEG and Jpeg2000 images in PDF files, embedded MPF images
@@ -5706,6 +5724,11 @@ document as if it were a separate input file. This allows, for example,
5706
5724
  generation of GPS track logs from timed metadata in videos. See
5707
5725
  L<https://exiftool.org/geotag.html#Inverse> for examples.
5708
5726
 
5727
+ Setting I<NUM> to 2 causes the H264 video stream in MP4 videos to be parsed
5728
+ until the first Supplemental Enhancement Information (SEI) message is
5729
+ decoded, or 3 to parse the entire H624 stream and decode all SEI
5730
+ information.
5731
+
5709
5732
  =item B<-ext>[+] I<EXT>, B<--ext> I<EXT> (B<-extension>)
5710
5733
 
5711
5734
  Process only files with (B<-ext>) or without (B<--ext>) a specified
@@ -5794,7 +5817,9 @@ name, or a full path. If a full path is specified, it must match the
5794
5817
  Directory tag exactly to be ignored. Use multiple B<-i> options to ignore
5795
5818
  more than one directory name. A special I<DIR> value of C<SYMLINKS> (case
5796
5819
  sensitive) may be specified to ignore symbolic links when the B<-r> option
5797
- is used.
5820
+ is used. As well, a value of C<HIDDEN> (case sensitive) may be used to
5821
+ ignore files with names that start with a "." (ie. hidden files on Unix
5822
+ systems) when scanning a directory.
5798
5823
 
5799
5824
  =item B<-if>[I<NUM>] I<EXPR>
5800
5825
 
@@ -6353,10 +6378,10 @@ name and directory.
6353
6378
 
6354
6379
  =item B<-stay_open> I<FLAG>
6355
6380
 
6356
- If I<FLAG> is C<1> or C<True>, causes exiftool keep reading from the B<-@>
6357
- I<ARGFILE> even after reaching the end of file. This feature allows calling
6358
- applications to pre-load exiftool, thus avoiding the overhead of loading
6359
- exiftool for each command. The procedure is as follows:
6381
+ If I<FLAG> is C<1> or C<True> (case insensitive), causes exiftool keep
6382
+ reading from the B<-@> I<ARGFILE> even after reaching the end of file. This
6383
+ feature allows calling applications to pre-load exiftool, thus avoiding the
6384
+ overhead of loading exiftool for each command. The procedure is as follows:
6360
6385
 
6361
6386
  1) Execute C<exiftool -stay_open True -@ I<ARGFILE>>, where I<ARGFILE> is the
6362
6387
  name of an existing (possibly empty) argument file or C<-> to pipe arguments
@@ -6379,8 +6404,9 @@ signals back to your application.)
6379
6404
 
6380
6405
  4) Repeat steps 2 and 3 for each command.
6381
6406
 
6382
- 5) Write C<-stay_open\nFalse\n> to I<ARGFILE> when done. This will cause
6383
- exiftool to process any remaining command-line arguments then exit normally.
6407
+ 5) Write C<-stay_open\nFalse\n> (or C<-stay_open\n0\n>) to I<ARGFILE> when
6408
+ done. This will cause exiftool to process any remaining command-line
6409
+ arguments then exit normally.
6384
6410
 
6385
6411
  The input I<ARGFILE> may be changed at any time before step 5 above by
6386
6412
  writing the following lines to the currently open I<ARGFILE>:
@@ -6408,10 +6434,11 @@ an interface to the API UserParam option (see the
6408
6434
  L<Image::ExifTool Options|Image::ExifTool/Options> documentation), and
6409
6435
  provides a method to access user-defined parameters in arguments to the
6410
6436
  B<-if> and B<-p> options as if they were any other tag. Appending a hash
6411
- tag (C<#>) to I<PARAM> also causes the parameter to be extracted as a normal
6412
- tag (in the UserParam group). Similar to the B<-api> option, the parameter
6413
- value is set to 1 if I<=VAL> is omitted, undef if just I<VAL> is omitted
6414
- with C<=>, or an empty string if I<VAL> is omitted with C<^=>.
6437
+ tag (C<#>) to I<PARAM> (eg. C<-userParam MyTag#=yes>) also causes the
6438
+ parameter to be extracted as a normal tag in the UserParam group. Similar
6439
+ to the B<-api> option, the parameter value is set to 1 if I<=VAL> is
6440
+ omitted, undef if just I<VAL> is omitted with C<=>, or an empty string if
6441
+ I<VAL> is omitted with C<^=>.
6415
6442
 
6416
6443
  exiftool -p '$test from $filename' -userparam test=Hello FILE
6417
6444
 
@@ -6481,9 +6508,9 @@ For example, the following command may be used to remove duplicate Keywords:
6481
6508
  The B<-sep> option is necessary to split the string back into individual
6482
6509
  list items when writing to a list-type tag.
6483
6510
 
6484
- An optional flag argument may be set to 1 to cause C<NoDups> to return undef
6485
- if no duplicates existed, thus preventing the file from being rewritten
6486
- unnecessarily:
6511
+ An optional flag argument may be set to 1 to cause C<NoDups> to set C<$_> to
6512
+ undef if no duplicates existed, thus preventing the file from being
6513
+ rewritten unnecessarily:
6487
6514
 
6488
6515
  exiftool -sep '##' '-keywords<${keywords;NoDups(1)}' a.jpg
6489
6516
 
@@ -7121,6 +7148,13 @@ flexibility of ExifTool.)
7121
7148
 
7122
7149
  =back
7123
7150
 
7151
+ =head1 INTERRUPTING EXIFTOOL
7152
+
7153
+ Interrupting exiftool with a CTRL-C or SIGINT will not result in partially
7154
+ written files or temporary files remaining on the hard disk. The exiftool
7155
+ application traps SIGINT and defers it until the end of critical processes
7156
+ if necessary, then does a proper cleanup before exiting.
7157
+
7124
7158
  =head1 EXIT STATUS
7125
7159
 
7126
7160
  The exiftool application exits with a status of 0 on success, or 1 if an
@@ -7129,7 +7163,7 @@ the commands if B<-execute> was used).
7129
7163
 
7130
7164
  =head1 AUTHOR
7131
7165
 
7132
- Copyright 2003-2020, Phil Harvey
7166
+ Copyright 2003-2021, Phil Harvey
7133
7167
 
7134
7168
  This is free software; you can redistribute it and/or modify it under the
7135
7169
  same terms as Perl itself.
@@ -25,7 +25,7 @@
25
25
  #
26
26
  # May also be used for string i/o (just pass a scalar reference)
27
27
  #
28
- # Legal: Copyright (c) 2003-2020 Phil Harvey (philharvey66 at gmail.com)
28
+ # Legal: Copyright (c) 2003-2021 Phil Harvey (philharvey66 at gmail.com)
29
29
  # This library is free software; you can redistribute it and/or
30
30
  # modify it under the same terms as Perl itself.
31
31
  #------------------------------------------------------------------------------
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # Description: Buffer to support random access reading of sequential file
5
5
  #
6
- # Legal: Copyright (c) 2003-2020 Phil Harvey (philharvey66 at gmail.com)
6
+ # Legal: Copyright (c) 2003-2021 Phil Harvey (philharvey66 at gmail.com)
7
7
  # This library is free software; you can redistribute it and/or
8
8
  # modify it under the same terms as Perl itself.
9
9
  #------------------------------------------------------------------------------
@@ -236,7 +236,7 @@ the end of file is not allowed.
236
236
 
237
237
  =head1 AUTHOR
238
238
 
239
- Copyright 2003-2020 Phil Harvey (philharvey66 at gmail.com)
239
+ Copyright 2003-2021 Phil Harvey (philharvey66 at gmail.com)
240
240
 
241
241
  This library is free software; you can redistribute it and/or modify it
242
242
  under the same terms as Perl itself.