exiftool_vendored 12.11.0 → 12.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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.