exiftool_vendored 9.37.0 → 9.41.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 (889) hide show
  1. checksums.yaml +6 -14
  2. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/Changes +74 -0
  3. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/MANIFEST +14 -0
  4. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/META.yml +1 -1
  5. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/Makefile.PL +0 -0
  6. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/README +30 -30
  7. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/exif2iptc.args +0 -0
  8. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/exif2xmp.args +0 -0
  9. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/gps2xmp.args +0 -0
  10. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/iptc2exif.args +0 -0
  11. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/iptc2xmp.args +0 -0
  12. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/iptcCore.args +0 -0
  13. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/pdf2xmp.args +0 -0
  14. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/xmp2exif.args +0 -0
  15. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/xmp2gps.args +0 -0
  16. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/xmp2iptc.args +0 -0
  17. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/arg_files/xmp2pdf.args +0 -0
  18. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/config_files/ExifTool_config +0 -0
  19. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/config_files/convert_regions.config +0 -0
  20. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/exiftool +266 -226
  21. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/fmt_files/gpx.fmt +0 -0
  22. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/fmt_files/gpx_wpt.fmt +0 -0
  23. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/fmt_files/kml.fmt +0 -0
  24. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/ExifTool.html +79 -54
  25. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/MIE1.1-20070121.pdf +0 -0
  26. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/Shift.html +0 -0
  27. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/AFCP.html +0 -0
  28. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/AIFF.html +0 -0
  29. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/APE.html +0 -0
  30. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/APP12.html +0 -0
  31. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/ASF.html +0 -0
  32. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Apple.html +11 -8
  33. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/BMP.html +0 -0
  34. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Canon.html +138 -14
  35. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/CanonCustom.html +0 -0
  36. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/CanonRaw.html +0 -0
  37. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/CanonVRD.html +0 -0
  38. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Casio.html +0 -0
  39. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Composite.html +19 -13
  40. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/DICOM.html +0 -0
  41. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/DNG.html +0 -0
  42. data/bin/Image-ExifTool-9.41/html/TagNames/DPX.html +190 -0
  43. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/DV.html +0 -0
  44. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/DarwinCore.html +0 -0
  45. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/DjVu.html +0 -0
  46. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/EXE.html +0 -0
  47. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/EXIF.html +0 -0
  48. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Extra.html +13 -6
  49. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/FLAC.html +0 -0
  50. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/FLIR.html +166 -2
  51. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Flash.html +0 -0
  52. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/FlashPix.html +0 -0
  53. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Font.html +0 -0
  54. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/FotoStation.html +0 -0
  55. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/FujiFilm.html +11 -1
  56. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/GE.html +0 -0
  57. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/GIF.html +0 -0
  58. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/GIMP.html +0 -0
  59. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/GPS.html +0 -0
  60. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/GeoTiff.html +0 -0
  61. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/H264.html +0 -0
  62. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/HP.html +0 -0
  63. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/HTML.html +0 -0
  64. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/ICC_Profile.html +0 -0
  65. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/ID3.html +0 -0
  66. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/IPTC.html +3 -3
  67. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/ITC.html +0 -0
  68. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/JFIF.html +0 -0
  69. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/JPEG.html +6 -4
  70. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/JVC.html +0 -0
  71. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Jpeg2000.html +0 -0
  72. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Kodak.html +0 -0
  73. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/KyoceraRaw.html +0 -0
  74. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/LNK.html +0 -0
  75. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Leaf.html +0 -0
  76. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/M2TS.html +0 -0
  77. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MIE.html +0 -0
  78. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MIFF.html +0 -0
  79. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MNG.html +0 -0
  80. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MPC.html +0 -0
  81. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MPEG.html +0 -0
  82. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MPF.html +0 -0
  83. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MWG.html +0 -0
  84. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MXF.html +0 -0
  85. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Matroska.html +0 -0
  86. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Microsoft.html +0 -0
  87. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Minolta.html +30 -19
  88. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/MinoltaRaw.html +0 -0
  89. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Nikon.html +81 -60
  90. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/NikonCapture.html +0 -0
  91. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/NikonCustom.html +0 -0
  92. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/OOXML.html +0 -0
  93. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Ogg.html +0 -0
  94. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Olympus.html +0 -0
  95. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/OpenEXR.html +0 -0
  96. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PDF.html +6 -6
  97. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PGF.html +0 -0
  98. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PICT.html +0 -0
  99. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PLIST.html +0 -0
  100. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PNG.html +25 -18
  101. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PSP.html +0 -0
  102. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Panasonic.html +51 -14
  103. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PanasonicRaw.html +0 -0
  104. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Pentax.html +23 -6
  105. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PhaseOne.html +0 -0
  106. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PhotoCD.html +0 -0
  107. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PhotoMechanic.html +0 -0
  108. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Photoshop.html +0 -0
  109. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PostScript.html +0 -0
  110. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/PrintIM.html +0 -0
  111. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Qualcomm.html +0 -0
  112. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/QuickTime.html +404 -126
  113. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/RIFF.html +19 -13
  114. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/RSRC.html +0 -0
  115. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/RTF.html +0 -0
  116. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Radiance.html +0 -0
  117. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Rawzor.html +0 -0
  118. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Real.html +0 -0
  119. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Reconyx.html +0 -0
  120. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Ricoh.html +0 -0
  121. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Samsung.html +27 -1
  122. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Sanyo.html +0 -0
  123. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Scalado.html +0 -0
  124. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Shortcuts.html +0 -0
  125. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Sigma.html +0 -0
  126. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/SigmaRaw.html +0 -0
  127. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Sony.html +491 -121
  128. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/SonyIDC.html +0 -0
  129. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Stim.html +0 -0
  130. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Theora.html +0 -0
  131. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Torrent.html +0 -0
  132. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Unknown.html +0 -0
  133. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/Vorbis.html +0 -0
  134. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/XMP.html +824 -175
  135. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/ZIP.html +0 -0
  136. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/iWork.html +0 -0
  137. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/index.html +7 -5
  138. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/TagNames/style.css +0 -0
  139. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/ancient_history.html +201 -0
  140. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/canon_raw.html +0 -0
  141. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/commentary.html +0 -0
  142. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/config.html +0 -0
  143. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/data_members.html +9 -0
  144. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/exiftool_pod.html +92 -71
  145. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/faq.html +0 -0
  146. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/filename.html +0 -0
  147. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/geotag.html +13 -9
  148. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/history.html +82 -201
  149. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/htmldump.html +0 -0
  150. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/idiosyncracies.html +4 -2
  151. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/index.html +46 -35
  152. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/install.html +0 -0
  153. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/metafiles.html +0 -0
  154. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/overview.png +0 -0
  155. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/standards.html +0 -0
  156. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/struct.html +0 -0
  157. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/style.css +0 -0
  158. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/under.html +0 -0
  159. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/verbose.html +0 -0
  160. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/html/writing.html +0 -0
  161. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/File/RandomAccess.pm +0 -0
  162. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/File/RandomAccess.pod +0 -0
  163. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool.pm +387 -331
  164. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool.pod +101 -81
  165. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/AES.pm +0 -0
  166. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/AFCP.pm +14 -14
  167. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/AIFF.pm +17 -17
  168. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/APE.pm +18 -18
  169. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/APP12.pm +21 -21
  170. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/ASF.pm +48 -48
  171. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Apple.pm +31 -19
  172. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/BMP.pm +4 -4
  173. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/BZZ.pm +0 -0
  174. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/BigTIFF.pm +36 -36
  175. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/BuildTagLookup.pm +12 -12
  176. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Canon.pm +126 -38
  177. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/CanonCustom.pm +37 -37
  178. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/CanonRaw.pm +30 -30
  179. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/CanonVRD.pm +75 -75
  180. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/CaptureOne.pm +18 -18
  181. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Casio.pm +0 -0
  182. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset.pm +13 -13
  183. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Arabic.pm +0 -0
  184. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Baltic.pm +0 -0
  185. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Cyrillic.pm +0 -0
  186. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Greek.pm +0 -0
  187. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Hebrew.pm +0 -0
  188. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/JIS.pm +0 -0
  189. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Latin.pm +0 -0
  190. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Latin2.pm +0 -0
  191. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacArabic.pm +0 -0
  192. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacChineseCN.pm +0 -0
  193. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacChineseTW.pm +0 -0
  194. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacCroatian.pm +0 -0
  195. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacCyrillic.pm +0 -0
  196. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacGreek.pm +0 -0
  197. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacHebrew.pm +0 -0
  198. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacIceland.pm +0 -0
  199. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacJapanese.pm +0 -0
  200. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacKorean.pm +0 -0
  201. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacLatin2.pm +0 -0
  202. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacRSymbol.pm +0 -0
  203. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacRoman.pm +0 -0
  204. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacRomanian.pm +0 -0
  205. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacThai.pm +0 -0
  206. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/MacTurkish.pm +0 -0
  207. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/PDFDoc.pm +0 -0
  208. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/ShiftJIS.pm +0 -0
  209. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Symbol.pm +0 -0
  210. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Thai.pm +0 -0
  211. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Turkish.pm +0 -0
  212. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Charset/Vietnam.pm +0 -0
  213. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/DICOM.pm +56 -17
  214. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/DNG.pm +85 -85
  215. data/bin/Image-ExifTool-9.41/lib/Image/ExifTool/DPX.pm +151 -0
  216. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/DV.pm +6 -6
  217. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/DarwinCore.pm +0 -0
  218. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/DjVu.pm +14 -14
  219. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/EXE.pm +47 -47
  220. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Exif.pm +126 -116
  221. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/FLAC.pm +14 -14
  222. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/FLIR.pm +282 -22
  223. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Fixup.pm +0 -0
  224. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Flash.pm +41 -41
  225. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/FlashPix.pm +97 -97
  226. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Font.pm +46 -46
  227. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/FotoStation.pm +21 -20
  228. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/FujiFilm.pm +40 -38
  229. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/GE.pm +0 -0
  230. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/GIF.pm +32 -32
  231. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/GIMP.pm +11 -11
  232. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/GPS.pm +3 -3
  233. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/GeoTiff.pm +19 -19
  234. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Geotag.pm +69 -66
  235. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/H264.pm +42 -42
  236. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/HP.pm +9 -9
  237. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/HTML.pm +16 -16
  238. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/HtmlDump.pm +10 -10
  239. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/ICC_Profile.pm +48 -48
  240. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/ID3.pm +84 -84
  241. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/IPTC.pm +38 -38
  242. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/ITC.pm +11 -11
  243. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Import.pm +0 -0
  244. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/InDesign.pm +18 -18
  245. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/JPEG.pm +10 -6
  246. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/JPEGDigest.pm +4 -4
  247. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/JVC.pm +8 -8
  248. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Jpeg2000.pm +50 -58
  249. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Kodak.pm +15 -15
  250. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/KyoceraRaw.pm +4 -4
  251. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/LNK.pm +24 -24
  252. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/cs.pm +0 -0
  253. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/de.pm +0 -0
  254. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/en_ca.pm +0 -0
  255. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/en_gb.pm +0 -0
  256. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/es.pm +0 -0
  257. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/fi.pm +0 -0
  258. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/fr.pm +1 -1
  259. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/it.pm +0 -0
  260. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/ja.pm +0 -0
  261. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/ko.pm +0 -0
  262. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/nl.pm +0 -0
  263. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/pl.pm +0 -0
  264. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/ru.pm +0 -0
  265. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/sv.pm +0 -0
  266. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/tr.pm +0 -0
  267. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/zh_cn.pm +0 -0
  268. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Lang/zh_tw.pm +0 -0
  269. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Leaf.pm +11 -11
  270. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/M2TS.pm +37 -37
  271. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MIE.pm +95 -95
  272. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MIEUnits.pod +0 -0
  273. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MIFF.pm +17 -17
  274. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MNG.pm +0 -0
  275. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MPC.pm +11 -11
  276. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MPEG.pm +28 -28
  277. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MPF.pm +22 -22
  278. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MWG.pm +9 -9
  279. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MXF.pm +46 -46
  280. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MakerNotes.pm +61 -59
  281. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Matroska.pm +27 -27
  282. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Microsoft.pm +8 -8
  283. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Minolta.pm +50 -28
  284. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/MinoltaRaw.pm +17 -17
  285. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Nikon.pm +80 -63
  286. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/NikonCapture.pm +29 -29
  287. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/NikonCustom.pm +0 -0
  288. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/OOXML.pm +20 -20
  289. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Ogg.pm +19 -19
  290. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Olympus.pm +3 -3
  291. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/OpenEXR.pm +16 -16
  292. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PDF.pm +126 -126
  293. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PGF.pm +7 -7
  294. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PICT.pm +18 -18
  295. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PLIST.pm +39 -39
  296. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PNG.pm +141 -95
  297. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PPM.pm +11 -11
  298. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PSP.pm +14 -14
  299. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Panasonic.pm +82 -37
  300. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PanasonicRaw.pm +40 -40
  301. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Pentax.pm +86 -14
  302. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PhaseOne.pm +36 -36
  303. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PhotoCD.pm +4 -4
  304. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PhotoMechanic.pm +12 -12
  305. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Photoshop.pm +23 -23
  306. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PostScript.pm +36 -36
  307. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/PrintIM.pm +10 -10
  308. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Qualcomm.pm +5 -5
  309. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/QuickTime.pm +528 -219
  310. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/README +5 -3
  311. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/RIFF.pm +40 -32
  312. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/RSRC.pm +15 -15
  313. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/RTF.pm +15 -15
  314. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Radiance.pm +9 -9
  315. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Rawzor.pm +19 -19
  316. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Real.pm +43 -43
  317. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Reconyx.pm +0 -0
  318. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Ricoh.pm +24 -24
  319. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Samsung.pm +41 -15
  320. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Sanyo.pm +0 -0
  321. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Scalado.pm +5 -5
  322. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Shift.pl +0 -0
  323. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Shortcuts.pm +0 -0
  324. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Sigma.pm +0 -0
  325. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/SigmaRaw.pm +56 -56
  326. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Sony.pm +450 -166
  327. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/SonyIDC.pm +9 -9
  328. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Stim.pm +0 -0
  329. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/TagInfoXML.pm +6 -4
  330. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/TagLookup.pm +1707 -1468
  331. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/TagNames.pod +568 -102
  332. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Theora.pm +0 -0
  333. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Torrent.pm +11 -11
  334. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Unknown.pm +0 -0
  335. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Vorbis.pm +5 -5
  336. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WriteCanonRaw.pl +51 -51
  337. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WriteExif.pl +273 -273
  338. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WriteIPTC.pl +44 -44
  339. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WritePDF.pl +45 -39
  340. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WritePNG.pl +86 -40
  341. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WritePhotoshop.pl +27 -27
  342. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WritePostScript.pl +47 -47
  343. data/bin/Image-ExifTool-9.41/lib/Image/ExifTool/WriteQuickTime.pl +344 -0
  344. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/WriteXMP.pl +112 -112
  345. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/Writer.pl +428 -360
  346. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/XMP.pm +195 -104
  347. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/XMP2.pl +1 -0
  348. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/XMPStruct.pl +53 -52
  349. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/ZIP.pm +50 -50
  350. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/lib/Image/ExifTool/iWork.pm +17 -17
  351. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/perl-Image-ExifTool.spec +31 -31
  352. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/AFCP.t +0 -0
  353. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/AFCP_2.out +0 -0
  354. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/AFCP_3.out +0 -0
  355. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/AIFF.t +0 -0
  356. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/AIFF_2.out +0 -0
  357. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/APE.t +0 -0
  358. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/APE_2.out +0 -0
  359. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/APE_3.out +0 -0
  360. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ASF.t +0 -0
  361. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ASF_2.out +0 -0
  362. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/BMP.t +0 -0
  363. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/BMP_2.out +0 -0
  364. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/BigTIFF.t +0 -0
  365. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/BigTIFF_2.out +0 -0
  366. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Canon.t +0 -0
  367. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonRaw.t +0 -0
  368. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonRaw_2.out +0 -0
  369. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonRaw_4.out +5 -7
  370. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonRaw_5.out +0 -0
  371. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonRaw_6.out +0 -0
  372. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonRaw_7.out +0 -0
  373. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD.t +0 -0
  374. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_11.out +0 -0
  375. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_12.out +0 -0
  376. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_2.out +0 -0
  377. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_3.out +0 -0
  378. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_4.out +0 -0
  379. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_5.out +0 -0
  380. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_6.out +0 -0
  381. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_7.out +0 -0
  382. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_8.out +0 -0
  383. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/CanonVRD_9.out +0 -0
  384. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Canon_2.out +4 -3
  385. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Canon_3.out +0 -0
  386. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Casio.t +0 -0
  387. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Casio_2.out +0 -0
  388. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Casio_3.out +0 -0
  389. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Casio_4.out +0 -0
  390. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Casio_5.out +0 -0
  391. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Casio_6.out +0 -0
  392. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DICOM.t +0 -0
  393. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DICOM_2.out +0 -0
  394. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DNG.t +0 -0
  395. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DNG_2.out +0 -0
  396. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DNG_3.out +0 -0
  397. data/bin/Image-ExifTool-9.41/t/DPX.t +28 -0
  398. data/bin/Image-ExifTool-9.41/t/DPX_2.out +35 -0
  399. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DV.t +0 -0
  400. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DV_2.out +0 -0
  401. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DjVu.t +0 -0
  402. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/DjVu_2.out +0 -0
  403. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/EXE.t +0 -0
  404. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/EXE_2.out +0 -0
  405. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/EXE_3.out +0 -0
  406. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/EXE_4.out +0 -0
  407. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool.t +0 -0
  408. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_16.out +0 -0
  409. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_17.out +0 -0
  410. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_2.out +0 -0
  411. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_20.out +0 -0
  412. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_21.out +0 -0
  413. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_22.out +0 -0
  414. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_23.out +0 -0
  415. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_24.out +0 -0
  416. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_25.out +0 -0
  417. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_26.out +0 -0
  418. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_3.out +0 -0
  419. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_4.out +0 -0
  420. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_5.out +0 -0
  421. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_6.out +0 -0
  422. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_7.out +0 -0
  423. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_8.out +0 -0
  424. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ExifTool_9.out +0 -0
  425. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FLAC.t +0 -0
  426. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FLAC_2.out +0 -0
  427. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FLAC_3.out +0 -0
  428. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FLIR.t +0 -0
  429. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FLIR_2.out +0 -0
  430. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FLIR_3.out +0 -0
  431. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Flash.t +0 -0
  432. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FlashPix.t +0 -0
  433. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FlashPix_2.out +0 -0
  434. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Flash_2.out +0 -0
  435. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Flash_3.out +0 -0
  436. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font.t +0 -0
  437. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font_2.out +0 -0
  438. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font_3.out +0 -0
  439. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font_4.out +0 -0
  440. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font_5.out +0 -0
  441. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font_6.out +0 -0
  442. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Font_7.out +0 -0
  443. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FotoStation.t +0 -0
  444. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FotoStation_2.out +0 -0
  445. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FotoStation_3.out +0 -0
  446. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FujiFilm.t +0 -0
  447. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FujiFilm_2.out +0 -0
  448. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FujiFilm_3.out +0 -0
  449. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FujiFilm_4.out +0 -0
  450. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/FujiFilm_5.out +0 -0
  451. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GE.t +0 -0
  452. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GE_2.out +0 -0
  453. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GE_3.out +0 -0
  454. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GIF.t +0 -0
  455. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GIF_2.out +0 -0
  456. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GIF_3.out +0 -0
  457. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GIF_4.out +0 -0
  458. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GIMP.t +0 -0
  459. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GIMP_2.out +0 -0
  460. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GPS.t +0 -0
  461. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GPS_2.out +0 -0
  462. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GPS_3.out +0 -0
  463. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GeoTiff.t +0 -0
  464. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GeoTiff_2.out +0 -0
  465. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/GeoTiff_3.out +0 -0
  466. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag.t +18 -1
  467. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag_2.out +0 -0
  468. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag_3.out +0 -0
  469. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag_5.out +0 -0
  470. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag_6.out +0 -0
  471. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag_7.out +0 -0
  472. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Geotag_8.out +0 -0
  473. data/bin/Image-ExifTool-9.41/t/Geotag_9.out +7 -0
  474. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/HTML.t +0 -0
  475. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/HTML_2.out +0 -0
  476. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC.t +0 -0
  477. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC_2.out +0 -0
  478. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC_4.out +0 -0
  479. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC_5.out +0 -0
  480. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC_6.out +0 -0
  481. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC_7.out +0 -0
  482. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/IPTC_8.out +0 -0
  483. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ITC.t +0 -0
  484. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ITC_2.out +0 -0
  485. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/InDesign.t +0 -0
  486. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/InDesign_2.out +0 -0
  487. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/InDesign_3.out +0 -0
  488. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/InDesign_4.out +0 -0
  489. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/JVC.t +0 -0
  490. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/JVC_2.out +0 -0
  491. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/JVC_3.out +0 -0
  492. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Jpeg2000.t +0 -0
  493. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Jpeg2000_2.out +0 -0
  494. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Jpeg2000_3.out +0 -0
  495. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Jpeg2000_4.out +0 -0
  496. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Kodak.t +0 -0
  497. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Kodak_2.out +0 -0
  498. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Kodak_3.out +0 -0
  499. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/KyoceraRaw.t +0 -0
  500. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/KyoceraRaw_2.out +0 -0
  501. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/LNK.t +0 -0
  502. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/LNK_2.out +0 -0
  503. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang.t +0 -0
  504. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_1.out +0 -0
  505. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_10.out +0 -0
  506. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_11.out +0 -0
  507. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_12.out +0 -0
  508. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_13.out +0 -0
  509. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_14.out +0 -0
  510. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_15.out +0 -0
  511. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_16.out +0 -0
  512. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_17.out +0 -0
  513. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_18.out +0 -0
  514. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_2.out +0 -0
  515. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_3.out +0 -0
  516. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_4.out +0 -0
  517. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_5.out +0 -0
  518. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_6.out +0 -0
  519. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_7.out +0 -0
  520. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_8.out +0 -0
  521. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Lang_9.out +0 -0
  522. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/M2TS.t +0 -0
  523. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/M2TS_2.out +0 -0
  524. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIE.t +0 -0
  525. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIE_2.out +0 -0
  526. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIE_3.out +0 -0
  527. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIE_5.out +0 -0
  528. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIE_6.out +0 -0
  529. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIFF.t +0 -0
  530. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MIFF_2.out +0 -0
  531. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MP3.t +0 -0
  532. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MP3_2.out +0 -0
  533. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MWG.t +0 -0
  534. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MWG_2.out +0 -0
  535. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MWG_3.out +0 -0
  536. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MWG_4.out +0 -0
  537. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MWG_5.out +0 -0
  538. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MWG_6.out +0 -0
  539. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MXF.t +0 -0
  540. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/MXF_2.out +0 -0
  541. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Matroska.t +0 -0
  542. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Matroska_2.out +0 -0
  543. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Minolta.t +0 -0
  544. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Minolta_2.out +0 -0
  545. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Minolta_3.out +0 -0
  546. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Minolta_4.out +0 -0
  547. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon.t +0 -0
  548. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon_2.out +0 -0
  549. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon_3.out +0 -0
  550. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon_4.out +0 -0
  551. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon_5.out +0 -0
  552. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon_7.out +0 -0
  553. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Nikon_8.out +0 -0
  554. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus.t +0 -0
  555. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus_2.out +0 -0
  556. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus_3.out +0 -0
  557. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus_4.out +0 -0
  558. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus_5.out +0 -0
  559. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus_6.out +0 -0
  560. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Olympus_7.out +0 -0
  561. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/OpenEXR.t +0 -0
  562. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/OpenEXR_2.out +0 -0
  563. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF.t +0 -0
  564. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_10.out +0 -0
  565. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_11.out +0 -0
  566. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_12.out +0 -0
  567. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_14.out +0 -0
  568. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_15.out +0 -0
  569. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_16.out +0 -0
  570. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_17.out +0 -0
  571. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_18.out +0 -0
  572. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_19.out +0 -0
  573. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_2.out +0 -0
  574. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_20.out +0 -0
  575. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_22.out +0 -0
  576. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_4.out +0 -0
  577. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_5.out +0 -0
  578. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_6.out +0 -0
  579. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_7.out +0 -0
  580. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_8.out +0 -0
  581. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PDF_9.out +0 -0
  582. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PGF.t +0 -0
  583. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PGF_2.out +0 -0
  584. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PICT.t +0 -0
  585. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PICT_2.out +0 -0
  586. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PLIST.t +0 -0
  587. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PLIST_2.out +0 -0
  588. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PLIST_3.out +0 -0
  589. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PNG.t +31 -1
  590. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PNG_2.out +0 -0
  591. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PNG_3.out +0 -0
  592. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PNG_4.out +0 -0
  593. data/bin/Image-ExifTool-9.41/t/PNG_5.out +17 -0
  594. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PPM.t +0 -0
  595. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PPM_2.out +0 -0
  596. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PPM_3.out +0 -0
  597. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PSP.t +0 -0
  598. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PSP_2.out +0 -0
  599. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Panasonic.t +0 -0
  600. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Panasonic_2.out +0 -0
  601. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Panasonic_3.out +0 -0
  602. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Panasonic_4.out +0 -0
  603. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Panasonic_5.out +0 -0
  604. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Pentax.t +0 -0
  605. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Pentax_2.out +0 -0
  606. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Pentax_3.out +0 -0
  607. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Pentax_4.out +0 -0
  608. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PhotoCD.t +0 -0
  609. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PhotoCD_2.out +0 -0
  610. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PhotoMechanic.t +0 -0
  611. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PhotoMechanic_2.out +0 -0
  612. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PhotoMechanic_3.out +0 -0
  613. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Photoshop.t +0 -0
  614. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Photoshop_2.out +0 -0
  615. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Photoshop_3.out +0 -0
  616. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PostScript.t +0 -0
  617. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PostScript_2.out +0 -0
  618. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/PostScript_3.out +0 -0
  619. data/bin/Image-ExifTool-9.41/t/QuickTime.t +54 -0
  620. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/QuickTime_2.out +10 -8
  621. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/QuickTime_3.out +10 -8
  622. data/bin/Image-ExifTool-9.41/t/QuickTime_4.out +16 -0
  623. data/bin/Image-ExifTool-9.41/t/QuickTime_5.out +12 -0
  624. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/RIFF.t +0 -0
  625. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/RIFF_2.out +0 -0
  626. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/RIFF_3.out +0 -0
  627. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/RIFF_4.out +0 -0
  628. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/RTF.t +0 -0
  629. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/RTF_2.out +0 -0
  630. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Radiance.t +0 -0
  631. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Radiance_2.out +0 -0
  632. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Real.t +0 -0
  633. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Real_2.out +0 -0
  634. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Real_3.out +0 -0
  635. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Real_4.out +0 -0
  636. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Ricoh.t +0 -0
  637. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Ricoh_2.out +0 -0
  638. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Ricoh_3.out +0 -0
  639. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Ricoh_4.out +0 -0
  640. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sanyo.t +0 -0
  641. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sanyo_2.out +0 -0
  642. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sanyo_3.out +0 -0
  643. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sigma.t +0 -0
  644. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sigma_2.out +0 -0
  645. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sigma_3.out +0 -0
  646. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sigma_4.out +0 -0
  647. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sigma_5.out +0 -0
  648. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sony.t +0 -0
  649. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sony_2.out +0 -0
  650. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sony_3.out +0 -0
  651. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Sony_5.out +0 -0
  652. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/TestLib.pm +0 -0
  653. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Torrent.t +0 -0
  654. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Torrent_2.out +0 -0
  655. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Unknown.t +0 -0
  656. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Unknown_2.out +0 -0
  657. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Unknown_3.out +0 -0
  658. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Vorbis.t +0 -0
  659. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Vorbis_2.out +0 -0
  660. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer.t +53 -1
  661. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_10.out +0 -0
  662. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_11.out +0 -0
  663. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_13.out +0 -0
  664. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_14.out +0 -0
  665. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_15.out +0 -0
  666. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_16.out +0 -0
  667. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_17.out +0 -0
  668. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_18.out +0 -0
  669. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_19.out +0 -0
  670. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_2.out +0 -0
  671. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_22.out +0 -0
  672. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_24.out +0 -0
  673. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_25.out +0 -0
  674. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_26.out +0 -0
  675. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_27.out +0 -0
  676. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_28.out +0 -0
  677. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_29.out +0 -0
  678. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_30.out +0 -0
  679. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_31.out +0 -0
  680. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_32.out +0 -0
  681. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_33.out +0 -0
  682. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_34.out +0 -0
  683. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_35.out +0 -0
  684. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_36.out +0 -0
  685. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_37.out +0 -0
  686. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_38.out +0 -0
  687. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_39.out +0 -0
  688. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_4.out +0 -0
  689. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_40.out +0 -0
  690. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_41.out +0 -0
  691. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_42.out +0 -0
  692. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_43.out +0 -0
  693. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_44.out +0 -0
  694. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_45.out +0 -0
  695. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_46.out +8 -6
  696. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_47.out +0 -0
  697. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_48.out +0 -0
  698. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_50.out +0 -0
  699. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_51.out +0 -0
  700. data/bin/Image-ExifTool-9.41/t/Writer_52.out +22 -0
  701. data/bin/Image-ExifTool-9.41/t/Writer_53.out +33 -0
  702. data/bin/Image-ExifTool-9.41/t/Writer_54.out +2 -0
  703. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_6.out +0 -0
  704. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_7.out +0 -0
  705. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/Writer_9.out +0 -0
  706. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP.t +0 -0
  707. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_10.out +0 -0
  708. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_11.out +0 -0
  709. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_12.out +0 -0
  710. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_13.out +0 -0
  711. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_14.out +0 -0
  712. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_15.out +0 -0
  713. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_16.out +0 -0
  714. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_17.out +0 -0
  715. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_18.out +0 -0
  716. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_19.out +0 -0
  717. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_2.out +0 -0
  718. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_20.out +0 -0
  719. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_21.out +0 -0
  720. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_22.out +0 -0
  721. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_23.out +0 -0
  722. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_24.out +0 -0
  723. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_25.out +0 -0
  724. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_26.out +0 -0
  725. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_27.out +0 -0
  726. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_28.out +0 -0
  727. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_29.out +0 -0
  728. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_3.out +0 -0
  729. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_30.out +0 -0
  730. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_31.out +0 -0
  731. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_32.out +0 -0
  732. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_34.out +0 -0
  733. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_36.out +0 -0
  734. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_37.out +0 -0
  735. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_39.out +0 -0
  736. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_40.out +0 -0
  737. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_41.out +0 -0
  738. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_5.out +0 -0
  739. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_6.out +0 -0
  740. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_7.out +0 -0
  741. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_8.out +0 -0
  742. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/XMP_9.out +0 -0
  743. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP.t +0 -0
  744. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP_2.out +0 -0
  745. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP_3.out +0 -0
  746. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP_4.out +0 -0
  747. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP_5.out +0 -0
  748. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP_6.out +0 -0
  749. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/ZIP_7.out +0 -0
  750. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/AFCP.jpg +0 -0
  751. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/AIFF.aif +0 -0
  752. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/APE.ape +0 -0
  753. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/APE.mpc +0 -0
  754. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ASF.wmv +0 -0
  755. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/BMP.bmp +0 -0
  756. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/BigTIFF.btf +0 -0
  757. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Canon.jpg +0 -0
  758. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Canon1DmkIII.jpg +0 -0
  759. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/CanonRaw.cr2 +0 -0
  760. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/CanonRaw.crw +0 -0
  761. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/CanonVRD.vrd +0 -0
  762. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/CaptureOne.eip +0 -0
  763. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Casio.jpg +0 -0
  764. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Casio2.jpg +0 -0
  765. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/CasioQVCI.jpg +0 -0
  766. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/DICOM.dcm +0 -0
  767. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/DNG.dng +0 -0
  768. data/bin/Image-ExifTool-9.41/t/images/DPX.dpx +0 -0
  769. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/DV.dv +0 -0
  770. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/DjVu.djvu +0 -0
  771. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/EXE.elf +0 -0
  772. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/EXE.exe +0 -0
  773. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/EXE.macho +0 -0
  774. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ExifTool.jpg +0 -0
  775. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ExifTool.tif +0 -0
  776. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ExtendedXMP.jpg +0 -0
  777. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FLAC.flac +0 -0
  778. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FLAC.ogg +0 -0
  779. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FLIR.fpf +0 -0
  780. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FLIR.jpg +0 -0
  781. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Flash.flv +0 -0
  782. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Flash.swf +0 -0
  783. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FlashPix.ppt +0 -0
  784. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Font.afm +0 -0
  785. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Font.dfont +0 -0
  786. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Font.pfa +0 -0
  787. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Font.pfb +0 -0
  788. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Font.pfm +0 -0
  789. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Font.ttf +0 -0
  790. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FotoStation.jpg +0 -0
  791. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FujiFilm.jpg +0 -0
  792. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/FujiFilm.raf +0 -0
  793. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/GE.jpg +0 -0
  794. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/GIF.gif +0 -0
  795. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/GIMP.xcf +0 -0
  796. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/GPS.jpg +0 -0
  797. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/GeoTiff.tif +0 -0
  798. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Geotag.gpx +0 -0
  799. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Geotag.igc +0 -0
  800. data/bin/Image-ExifTool-9.41/t/images/Geotag.kml +55 -0
  801. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Geotag.log +0 -0
  802. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Geotag.xml +0 -0
  803. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Geotag2.log +0 -0
  804. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/HTML.html +0 -0
  805. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/IPTC.jpg +0 -0
  806. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ITC.itc +0 -0
  807. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/InDesign.indd +0 -0
  808. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/JVC.jpg +0 -0
  809. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/JVC2.jpg +0 -0
  810. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Jpeg2000.j2c +0 -0
  811. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Jpeg2000.jp2 +0 -0
  812. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Kodak.jpg +0 -0
  813. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/KyoceraRaw.raw +0 -0
  814. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/LNK.lnk +0 -0
  815. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/M2TS.mts +0 -0
  816. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/MIE.mie +0 -0
  817. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/MIFF.miff +0 -0
  818. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/MP3.mp3 +0 -0
  819. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/MWG.jpg +0 -0
  820. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/MXF.mxf +0 -0
  821. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Matroska.mkv +0 -0
  822. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Minolta.jpg +0 -0
  823. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Minolta.mrw +0 -0
  824. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Nikon.jpg +0 -0
  825. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Nikon.nef +0 -0
  826. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/NikonD2Hs.jpg +0 -0
  827. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/NikonD70.jpg +0 -0
  828. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/OOXML.docx +0 -0
  829. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Olympus.jpg +0 -0
  830. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Olympus2.jpg +0 -0
  831. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/OlympusE1.jpg +0 -0
  832. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/OpenDoc.ods +0 -0
  833. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/OpenEXR.exr +0 -0
  834. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PDF.pdf +0 -0
  835. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PDF2.pdf +0 -0
  836. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PGF.pgf +0 -0
  837. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PICT.pict +0 -0
  838. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PLIST-bin.plist +0 -0
  839. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PLIST-xml.plist +0 -0
  840. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PNG.png +0 -0
  841. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PPM.ppm +0 -0
  842. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PSP.psp +0 -0
  843. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Panasonic.jpg +0 -0
  844. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Panasonic.rw2 +0 -0
  845. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Pentax.avi +0 -0
  846. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Pentax.jpg +0 -0
  847. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PhotoCD.pcd +0 -0
  848. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PhotoMechanic.jpg +0 -0
  849. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Photoshop.psd +0 -0
  850. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/PostScript.eps +0 -0
  851. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/QuickTime.m4a +0 -0
  852. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/QuickTime.mov +0 -0
  853. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/RIFF.avi +0 -0
  854. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/RIFF.wav +0 -0
  855. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/RIFF.webp +0 -0
  856. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/RTF.rtf +0 -0
  857. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Radiance.hdr +0 -0
  858. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Real.ra +0 -0
  859. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Real.ram +0 -0
  860. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Real.rm +0 -0
  861. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Ricoh.jpg +0 -0
  862. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Ricoh2.jpg +0 -0
  863. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Sanyo.jpg +0 -0
  864. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Sigma.jpg +0 -0
  865. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Sigma.x3f +0 -0
  866. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/SigmaDP2.x3f +0 -0
  867. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Sony.jpg +0 -0
  868. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Sony.pmp +0 -0
  869. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Torrent.torrent +0 -0
  870. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Unknown.jpg +0 -0
  871. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Vorbis.ogg +0 -0
  872. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/Writer.jpg +0 -0
  873. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP.inx +0 -0
  874. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP.jpg +0 -0
  875. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP.svg +0 -0
  876. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP.xml +0 -0
  877. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP.xmp +0 -0
  878. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP2.xmp +0 -0
  879. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP3.xmp +0 -0
  880. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP4.xmp +0 -0
  881. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/XMP5.xmp +0 -0
  882. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ZIP.gz +0 -0
  883. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/ZIP.zip +0 -0
  884. data/bin/{Image-ExifTool-9.37 → Image-ExifTool-9.41}/t/images/iWork.numbers +0 -0
  885. data/lib/exiftool_vendored.rb +11 -3
  886. data/lib/exiftool_vendored/version.rb +1 -1
  887. data/lib/exiftool_vendored/version_extractor.rb +5 -7
  888. metadata +942 -886
  889. data/bin/Image-ExifTool-9.37/t/QuickTime.t +0 -31
@@ -27,7 +27,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
27
27
  %mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
28
28
  %jpegMarker %specialTags);
29
29
 
30
- $VERSION = '9.37';
30
+ $VERSION = '9.41';
31
31
  $RELEASE = '';
32
32
  @ISA = qw(Exporter);
33
33
  %EXPORT_TAGS = (
@@ -123,8 +123,8 @@ sub ReadValue($$$$$;$);
123
123
  # unless tweaked in BuildTagLookup::GetTableOrder().
124
124
  @loadAllTables = qw(
125
125
  PhotoMechanic Exif GeoTiff CanonRaw KyoceraRaw MinoltaRaw PanasonicRaw
126
- SigmaRaw JPEG GIMP Jpeg2000 GIF BMP BMP::OS2 PICT PNG MNG DjVu OpenEXR MIFF
127
- PGF PSP PhotoCD Radiance PDF PostScript Photoshop::Header FujiFilm::RAF
126
+ SigmaRaw JPEG GIMP Jpeg2000 GIF BMP BMP::OS2 PICT PNG MNG DjVu DPX OpenEXR
127
+ MIFF PGF PSP PhotoCD Radiance PDF PostScript Photoshop::Header FujiFilm::RAF
128
128
  FujiFilm::IFD Sony::SRF2 Sony::SR2SubIFD Sony::PMP ITC ID3 Vorbis Ogg APE
129
129
  APE::NewHeader APE::OldHeader MPC MPEG::Audio MPEG::Video MPEG::Xing M2TS
130
130
  QuickTime QuickTime::ImageFile Matroska MXF DV Flash Flash::FLV Real::Media
@@ -167,16 +167,16 @@ $defaultLang = 'en'; # default language
167
167
  BMP PPM RIFF AIFF ASF MOV MPEG Real SWF PSP FLV OGG FLAC APE MPC
168
168
  MKV MXF DV PMP IND PGF ICC ITC FLIR FPF HTML VRD RTF XCF QTIF
169
169
  FPX PICT ZIP GZIP PLIST RAR BZ2 TAR RWZ EXE EXR HDR CHM LNK WMF
170
- AVC DEX RAW Font RSRC M2TS PHP Torrent MP3 DICM PCD);
170
+ AVC DEX DPX RAW Font RSRC M2TS PHP Torrent MP3 DICM PCD);
171
171
 
172
172
  # file types that we can write (edit)
173
173
  my @writeTypes = qw(JPEG TIFF GIF CRW MRW ORF RAF RAW PNG MIE PSD XMP PPM
174
- EPS X3F PS PDF ICC VRD JP2 EXIF AI AIT IND);
174
+ EPS X3F PS PDF ICC VRD JP2 EXIF AI AIT IND MOV);
175
175
  my %writeTypes; # lookup for writable file types (hash filled if required)
176
176
 
177
177
  # file extensions that we can't write for various base types
178
178
  %noWriteFile = (
179
- TIFF => [ qw(3FR DCR K25 KDC SRF) ],
179
+ TIFF => [ qw(3FR DCR K25 KDC ) ],
180
180
  XMP => [ 'SVG' ],
181
181
  JP2 => [ 'J2C', 'JPC' ],
182
182
  );
@@ -240,6 +240,7 @@ my %fileTypeLookup = (
240
240
  DOT => ['FPX', 'Microsoft Word Template'],
241
241
  DOTM => [['ZIP','FPX'], 'Office Open XML Document Template Macro-enabled'],
242
242
  DOTX => [['ZIP','FPX'], 'Office Open XML Document Template'],
243
+ DPX => ['DPX', 'Digital Picture Exchange' ],
243
244
  DV => ['DV', 'Digital Video'],
244
245
  DVB => ['MOV', 'Digital Video Broadcasting'],
245
246
  DYLIB=> ['EXE', 'Mach-O Dynamic Link Library'],
@@ -489,6 +490,7 @@ my %fileDescription = (
489
490
  DOT => 'application/msword',
490
491
  DOTM => 'application/vnd.ms-word.template.macroEnabledTemplate',
491
492
  DOTX => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
493
+ DPX => 'image/x-dpx',
492
494
  DV => 'video/x-dv',
493
495
  EIP => 'application/x-captureone', #(NC)
494
496
  EPS => 'application/postscript',
@@ -693,6 +695,7 @@ my %moduleName = (
693
695
  DEX => "dex\n035\0",
694
696
  DICM => '(.{128}DICM|\0[\x02\x04\x06\x08]\0[\0-\x20]|[\x02\x04\x06\x08]\0[\0-\x20]\0)',
695
697
  DOCX => 'PK\x03\x04',
698
+ DPX => '(SDPX|XPDS)',
696
699
  DV => '\x1f\x07\0[\x3f\xbf]', # (not tested if extension recognized)
697
700
  EPS => '(%!PS|%!Ad|\xc5\xd0\xd3\xc6)',
698
701
  EXE => '(MZ|\xca\xfe\xba\xbe|\xfe\xed\xfa[\xce\xcf]|[\xce\xcf]\xfa\xed\xfe|Joy!peff|\x7fELF|#!\s*/\S*bin/|!<arch>\x0a)',
@@ -719,7 +722,7 @@ my %moduleName = (
719
722
  MIE => '~[\x10\x18]\x04.0MIE',
720
723
  MIFF => 'id=ImageMagick',
721
724
  MKV => '\x1a\x45\xdf\xa3',
722
- MOV => '.{4}(free|skip|wide|ftyp|pnot|PICT|pict|moov|mdat|junk|uuid)',
725
+ MOV => '.{4}(free|skip|wide|ftyp|pnot|PICT|pict|moov|mdat|junk|uuid)', # (duplicated in WriteQuickTime.pl !!)
723
726
  # MP3 => difficult to rule out
724
727
  MPC => '(MP\+|ID3)',
725
728
  MPEG => '\0\0\x01[\xb0-\xbf]',
@@ -843,8 +846,26 @@ sub DummyWriteProc { return 1; }
843
846
  GROUPS => { 0 => 'File', 1 => 'File', 2 => 'Image' },
844
847
  VARS => { NO_ID => 1 }, # tag ID's aren't meaningful for these tags
845
848
  WRITE_PROC => \&DummyWriteProc,
846
- Error => { Priority => 0, Groups => \%allGroupsExifTool },
847
- Warning => { Priority => 0, Groups => \%allGroupsExifTool },
849
+ Error => {
850
+ Priority => 0,
851
+ Groups => \%allGroupsExifTool,
852
+ Notes => q{
853
+ returns errors that may have occurred while reading or writing a file. Any
854
+ Error will prevent the file from being processed. Minor errors may be
855
+ downgraded to warnings with the -m or IgnoreMinorErrors option
856
+ },
857
+ },
858
+ Warning => {
859
+ Priority => 0,
860
+ Groups => \%allGroupsExifTool,
861
+ Notes => q{
862
+ returns warnings that may have occurred while reading or writing a file.
863
+ Use the -a or Duplicates option to see all warnings if more than one
864
+ occurred. Minor warnings may be ignored with the -m or IgnoreMinorErrors
865
+ option. Minor warnings with a capital "M" in the "[Minor]" designation
866
+ indicate that the processing is affected by ignoring the warning
867
+ },
868
+ },
848
869
  Comment => {
849
870
  Notes => 'comment embedded in JPEG, GIF89a or PPM/PGM/PBM image',
850
871
  Writable => 1,
@@ -901,7 +922,12 @@ sub DummyWriteProc { return 1; }
901
922
  },
902
923
  PrintConv => \&ConvertFileSize,
903
924
  },
904
- FileType => { },
925
+ FileType => {
926
+ Notes => q{
927
+ a short description of the file type. As a general rule, this is the
928
+ extension commonly used for the file, but there are exceptions to this rule
929
+ },
930
+ },
905
931
  FileModifyDate => {
906
932
  Description => 'File Modification Date/Time',
907
933
  Notes => q{
@@ -986,7 +1012,7 @@ sub DummyWriteProc { return 1; }
986
1012
  return $str;
987
1013
  },
988
1014
  },
989
- MIMEType => { },
1015
+ MIMEType => { Notes => 'the MIME type of the source file' },
990
1016
  ImageWidth => { },
991
1017
  ImageHeight => { },
992
1018
  XResolution => { },
@@ -1098,6 +1124,7 @@ sub DummyWriteProc { return 1; }
1098
1124
  ExifToolVersion => {
1099
1125
  Description => 'ExifTool Version Number',
1100
1126
  Groups => \%allGroupsExifTool,
1127
+ Notes => 'the version of ExifTool currently running',
1101
1128
  },
1102
1129
  RAFVersion => { },
1103
1130
  JPEGDigest => {
@@ -1346,10 +1373,10 @@ sub new
1346
1373
  GetTagTable("Image::ExifTool::Exif::Main");
1347
1374
 
1348
1375
  $self->ClearOptions(); # create default options hash
1349
- $self->{VALUE} = { }; # must initialize this for warning messages
1350
- $self->{DEL_GROUP} = { }; # lookup for groups to delete when writing
1351
- $self->{SAVE_COUNT} = 0; # count calls to SaveNewValues()
1352
- $self->{FILE_SEQUENCE} = 0; # sequence number for files when reading
1376
+ $$self{VALUE} = { }; # must initialize this for warning messages
1377
+ $$self{DEL_GROUP} = { }; # lookup for groups to delete when writing
1378
+ $$self{SAVE_COUNT} = 0; # count calls to SaveNewValues()
1379
+ $$self{FILE_SEQUENCE} = 0; # sequence number for files when reading
1353
1380
 
1354
1381
  # initialize our new groups for writing
1355
1382
  $self->SetNewGroups(@defaultWriteGroups);
@@ -1375,8 +1402,8 @@ sub new
1375
1402
  # use Image::ExifTool 'ImageInfo';
1376
1403
  # my $info = ImageInfo($file, 'DateTimeOriginal', 'ImageSize');
1377
1404
  # - or -
1378
- # my $exifTool = new Image::ExifTool;
1379
- # my $info = $exifTool->ImageInfo($file, \@tagList, {Sort=>'Group0'} );
1405
+ # my $et = new Image::ExifTool;
1406
+ # my $info = $et->ImageInfo($file, \@tagList, {Sort=>'Group0'} );
1380
1407
  sub ImageInfo($;@)
1381
1408
  {
1382
1409
  local $_;
@@ -1387,16 +1414,16 @@ sub ImageInfo($;@)
1387
1414
  } else {
1388
1415
  $self = new Image::ExifTool;
1389
1416
  }
1390
- my %saveOptions = %{$self->{OPTIONS}}; # save original options
1417
+ my %saveOptions = %{$$self{OPTIONS}}; # save original options
1391
1418
 
1392
1419
  # initialize file information
1393
- $self->{FILENAME} = $self->{RAF} = undef;
1420
+ $$self{FILENAME} = $$self{RAF} = undef;
1394
1421
 
1395
1422
  $self->ParseArguments(@_); # parse our function arguments
1396
1423
  $self->ExtractInfo(undef); # extract meta information from image
1397
1424
  my $info = $self->GetInfo(undef); # get requested information
1398
1425
 
1399
- $self->{OPTIONS} = \%saveOptions; # restore original options
1426
+ $$self{OPTIONS} = \%saveOptions; # restore original options
1400
1427
 
1401
1428
  return $info; # return requested information
1402
1429
  }
@@ -1475,7 +1502,7 @@ sub Options($$;@)
1475
1502
  delete $$self{ESCAPE_PROC};
1476
1503
  }
1477
1504
  # must forget saved values since they depend on Escape method
1478
- $self->{BOTH} = { };
1505
+ $$self{BOTH} = { };
1479
1506
  }
1480
1507
  $$options{$param} = $newVal;
1481
1508
  }
@@ -1497,7 +1524,7 @@ sub ClearOptions($)
1497
1524
  # ! DON'T FORGET!! When adding any new option, must !
1498
1525
  # ! decide how it is handled in SetNewValuesFromFile() !
1499
1526
  # +-----------------------------------------------------+
1500
- $self->{OPTIONS} = {
1527
+ $$self{OPTIONS} = {
1501
1528
  # Binary => undef, # flag to extract binary values even if tag not specified
1502
1529
  # ByteOrder => undef, # default byte order when creating EXIF information
1503
1530
  Charset => 'UTF8', # character set for converting Unicode characters
@@ -1570,7 +1597,7 @@ sub ExtractInfo($;@)
1570
1597
  {
1571
1598
  local $_;
1572
1599
  my $self = shift;
1573
- my $options = $self->{OPTIONS}; # pointer to current options
1600
+ my $options = $$self{OPTIONS}; # pointer to current options
1574
1601
  my (%saveOptions, $reEntry, $rsize, $type);
1575
1602
 
1576
1603
  # check for internal ReEntry option to allow recursive calls to ExtractInfo
@@ -1585,21 +1612,21 @@ sub ExtractInfo($;@)
1585
1612
  EXIF_POS => $$self{EXIF_POS},
1586
1613
  FILE_TYPE => $$self{FILE_TYPE},
1587
1614
  };
1588
- $self->{RAF} = new File::RandomAccess($_[0]);
1615
+ $$self{RAF} = new File::RandomAccess($_[0]);
1589
1616
  $$self{PROCESSED} = { };
1590
1617
  delete $$self{EXIF_DATA};
1591
1618
  delete $$self{EXIF_POS};
1592
1619
  } else {
1593
- if (defined $_[0] or $options->{HtmlDump}) {
1620
+ if (defined $_[0] or $$options{HtmlDump}) {
1594
1621
  %saveOptions = %$options; # save original options
1595
1622
 
1596
1623
  # require duplicates for html dump
1597
- $self->Options(Duplicates => 1) if $options->{HtmlDump};
1624
+ $self->Options(Duplicates => 1) if $$options{HtmlDump};
1598
1625
 
1599
1626
  if (defined $_[0]) {
1600
1627
  # only initialize filename if called with arguments
1601
- $self->{FILENAME} = undef; # name of file (or '' if we didn't open it)
1602
- $self->{RAF} = undef; # RandomAccess object reference
1628
+ $$self{FILENAME} = undef; # name of file (or '' if we didn't open it)
1629
+ $$self{RAF} = undef; # RandomAccess object reference
1603
1630
 
1604
1631
  $self->ParseArguments(@_); # initialize from our arguments
1605
1632
  }
@@ -1607,22 +1634,22 @@ sub ExtractInfo($;@)
1607
1634
  # initialize ExifTool object members
1608
1635
  $self->Init();
1609
1636
 
1610
- delete $self->{MAKER_NOTE_FIXUP}; # fixup information for extracted maker notes
1611
- delete $self->{MAKER_NOTE_BYTE_ORDER};
1637
+ delete $$self{MAKER_NOTE_FIXUP}; # fixup information for extracted maker notes
1638
+ delete $$self{MAKER_NOTE_BYTE_ORDER};
1612
1639
 
1613
1640
  # return our version number
1614
- my $reqAll = $self->{OPTIONS}{RequestAll};
1641
+ my $reqAll = $$self{OPTIONS}{RequestAll};
1615
1642
  $self->FoundTag('ExifToolVersion', "$VERSION$RELEASE");
1616
- $self->FoundTag('Now', TimeNow()) if $self->{REQ_TAG_LOOKUP}{now} or $reqAll;
1617
- $self->FoundTag('NewGUID', NewGUID()) if $self->{REQ_TAG_LOOKUP}{newguid} or $reqAll;
1643
+ $self->FoundTag('Now', TimeNow()) if $$self{REQ_TAG_LOOKUP}{now} or $reqAll;
1644
+ $self->FoundTag('NewGUID', NewGUID()) if $$self{REQ_TAG_LOOKUP}{newguid} or $reqAll;
1618
1645
  # generate sequence number if necessary
1619
- if ($self->{REQ_TAG_LOOKUP}{filesequence} or $reqAll) {
1646
+ if ($$self{REQ_TAG_LOOKUP}{filesequence} or $reqAll) {
1620
1647
  $self->FoundTag('FileSequence', $$self{FILE_SEQUENCE});
1621
1648
  }
1622
1649
  ++$$self{FILE_SEQUENCE}; # count files read
1623
1650
  }
1624
- my $filename = $self->{FILENAME}; # image file name ('' if already open)
1625
- my $raf = $self->{RAF}; # RandomAccess object
1651
+ my $filename = $$self{FILENAME}; # image file name ('' if already open)
1652
+ my $raf = $$self{RAF}; # RandomAccess object
1626
1653
 
1627
1654
  local *EXIFTOOL_FILE; # avoid clashes with global namespace
1628
1655
 
@@ -1653,8 +1680,8 @@ sub ExtractInfo($;@)
1653
1680
  $raf = new File::RandomAccess(\*EXIFTOOL_FILE);
1654
1681
  # patch to force pipe to be buffered because seek returns success
1655
1682
  # in Windows cmd shell pipe even though it really failed
1656
- $raf->{TESTED} = -1 if $filename eq '-' or $filename =~ /\|$/;
1657
- $self->{RAF} = $raf;
1683
+ $$raf{TESTED} = -1 if $filename eq '-' or $filename =~ /\|$/;
1684
+ $$self{RAF} = $raf;
1658
1685
  } else {
1659
1686
  $self->Error('Error opening file');
1660
1687
  }
@@ -1666,10 +1693,10 @@ sub ExtractInfo($;@)
1666
1693
  if ($raf) {
1667
1694
  if ($reEntry) {
1668
1695
  # we already set these tags
1669
- } elsif (not $raf->{FILE_PT}) {
1696
+ } elsif (not $$raf{FILE_PT}) {
1670
1697
  # get file size from image in memory
1671
- $self->FoundTag('FileSize', length ${$raf->{BUFF_PT}});
1672
- } elsif (-f $raf->{FILE_PT}) {
1698
+ $self->FoundTag('FileSize', length ${$$raf{BUFF_PT}});
1699
+ } elsif (-f $$raf{FILE_PT}) {
1673
1700
  # get file size and last modified time if this is a plain file
1674
1701
  my $fileSize = -s _;
1675
1702
  my $fileTime = -M _;
@@ -1728,7 +1755,7 @@ sub ExtractInfo($;@)
1728
1755
  $self->Warn("Skipped unknown $skip byte header");
1729
1756
  }
1730
1757
  # save file type in member variable
1731
- $self->{FILE_TYPE} = $type;
1758
+ $$self{FILE_TYPE} = $type;
1732
1759
  $dirInfo{Parent} = ($type eq 'TIFF') ? $tiffType : $type;
1733
1760
  my $module = $moduleName{$type};
1734
1761
  $module = $type unless defined $module;
@@ -1783,35 +1810,35 @@ sub ExtractInfo($;@)
1783
1810
  $self->Error($err);
1784
1811
  }
1785
1812
  # extract binary EXIF data block only if requested
1786
- if (defined $self->{EXIF_DATA} and length $$self{EXIF_DATA} > 16 and
1787
- ($self->{REQ_TAG_LOOKUP}{exif} or
1813
+ if (defined $$self{EXIF_DATA} and length $$self{EXIF_DATA} > 16 and
1814
+ ($$self{REQ_TAG_LOOKUP}{exif} or
1788
1815
  # (not extracted normally, so check TAGS_FROM_FILE)
1789
- ($self->{TAGS_FROM_FILE} and not $self->{EXCL_TAG_LOOKUP}{exif})))
1816
+ ($$self{TAGS_FROM_FILE} and not $$self{EXCL_TAG_LOOKUP}{exif})))
1790
1817
  {
1791
- $self->FoundTag('EXIF', $self->{EXIF_DATA});
1818
+ $self->FoundTag('EXIF', $$self{EXIF_DATA});
1792
1819
  }
1793
1820
  unless ($reEntry) {
1794
- $self->{PATH} = [ ]; # reset PATH
1821
+ $$self{PATH} = [ ]; # reset PATH
1795
1822
  # calculate Composite tags
1796
- $self->BuildCompositeTags() if $options->{Composite};
1823
+ $self->BuildCompositeTags() if $$options{Composite};
1797
1824
  # do our HTML dump if requested
1798
- if ($self->{HTML_DUMP}) {
1825
+ if ($$self{HTML_DUMP}) {
1799
1826
  $raf->Seek(0, 2); # seek to end of file
1800
- $self->{HTML_DUMP}->FinishTiffDump($self, $raf->Tell());
1801
- my $pos = $options->{HtmlDumpBase};
1802
- $pos = ($self->{FIRST_EXIF_POS} || 0) unless defined $pos;
1803
- my $dataPt = defined $self->{EXIF_DATA} ? \$self->{EXIF_DATA} : undef;
1804
- undef $dataPt if defined $self->{EXIF_POS} and $pos != $self->{EXIF_POS};
1805
- my $success = $self->{HTML_DUMP}->Print($raf, $dataPt, $pos,
1806
- $options->{TextOut}, $options->{HtmlDump},
1807
- $self->{FILENAME} ? "HTML Dump ($self->{FILENAME})" : 'HTML Dump');
1808
- $self->Warn("Error reading $self->{HTML_DUMP}{ERROR}") if $success < 0;
1827
+ $$self{HTML_DUMP}->FinishTiffDump($self, $raf->Tell());
1828
+ my $pos = $$options{HtmlDumpBase};
1829
+ $pos = ($$self{FIRST_EXIF_POS} || 0) unless defined $pos;
1830
+ my $dataPt = defined $$self{EXIF_DATA} ? \$$self{EXIF_DATA} : undef;
1831
+ undef $dataPt if defined $$self{EXIF_POS} and $pos != $$self{EXIF_POS};
1832
+ my $success = $$self{HTML_DUMP}->Print($raf, $dataPt, $pos,
1833
+ $$options{TextOut}, $$options{HtmlDump},
1834
+ $$self{FILENAME} ? "HTML Dump ($$self{FILENAME})" : 'HTML Dump');
1835
+ $self->Warn("Error reading $$self{HTML_DUMP}{ERROR}") if $success < 0;
1809
1836
  }
1810
1837
  }
1811
1838
  if ($filename) {
1812
1839
  $raf->Close(); # close the file if we opened it
1813
1840
  # process the resource fork as an embedded file on Mac filesystems
1814
- if ($rsize and $options->{ExtractEmbedded}) {
1841
+ if ($rsize and $$options{ExtractEmbedded}) {
1815
1842
  local *RESOURCE_FILE;
1816
1843
  if (Open(\*RESOURCE_FILE, "$filename/..namedfork/rsrc")) {
1817
1844
  $$self{DOC_NUM} = $$self{DOC_COUNT} + 1;
@@ -1827,7 +1854,7 @@ sub ExtractInfo($;@)
1827
1854
  }
1828
1855
 
1829
1856
  # restore original options
1830
- %saveOptions and $self->{OPTIONS} = \%saveOptions;
1857
+ %saveOptions and $$self{OPTIONS} = \%saveOptions;
1831
1858
 
1832
1859
  if ($reEntry) {
1833
1860
  # restore necessary members when exiting re-entrant code
@@ -1835,7 +1862,7 @@ sub ExtractInfo($;@)
1835
1862
  }
1836
1863
 
1837
1864
  # ($type may be undef without an Error when processing sub-documents)
1838
- return 0 if not defined $type or exists $self->{VALUE}{Error};
1865
+ return 0 if not defined $type or exists $$self{VALUE}{Error};
1839
1866
  return 1;
1840
1867
  }
1841
1868
 
@@ -1855,9 +1882,9 @@ sub GetInfo($;@)
1855
1882
  my %saveOptions;
1856
1883
 
1857
1884
  unless (@_ and not defined $_[0]) {
1858
- %saveOptions = %{$self->{OPTIONS}}; # save original options
1885
+ %saveOptions = %{$$self{OPTIONS}}; # save original options
1859
1886
  # must set FILENAME so it isn't parsed from the arguments
1860
- $self->{FILENAME} = '' unless defined $self->{FILENAME};
1887
+ $$self{FILENAME} = '' unless defined $$self{FILENAME};
1861
1888
  $self->ParseArguments(@_);
1862
1889
  }
1863
1890
 
@@ -1866,7 +1893,7 @@ sub GetInfo($;@)
1866
1893
 
1867
1894
  # build hash of tag information
1868
1895
  my (%info, %ignored);
1869
- my $conv = $self->{OPTIONS}{PrintConv} ? 'PrintConv' : 'ValueConv';
1896
+ my $conv = $$self{OPTIONS}{PrintConv} ? 'PrintConv' : 'ValueConv';
1870
1897
  foreach (@$rtnTags) {
1871
1898
  my $val = $self->GetValue($_, $conv);
1872
1899
  defined $val or $ignored{$_} = 1, next;
@@ -1901,14 +1928,14 @@ sub GetInfo($;@)
1901
1928
  }
1902
1929
 
1903
1930
  # remove ignored tags from the list
1904
- my $reqTags = $self->{REQUESTED_TAGS} || [ ];
1931
+ my $reqTags = $$self{REQUESTED_TAGS} || [ ];
1905
1932
  if (%ignored) {
1906
1933
  if (not @$reqTags) {
1907
1934
  my @goodTags;
1908
1935
  foreach (@$rtnTags) {
1909
1936
  push @goodTags, $_ unless $ignored{$_};
1910
1937
  }
1911
- $rtnTags = $self->{FOUND_TAGS} = \@goodTags;
1938
+ $rtnTags = $$self{FOUND_TAGS} = \@goodTags;
1912
1939
  } elsif (@$wildTags) {
1913
1940
  # only remove tags specified by wildcard
1914
1941
  my @goodTags;
@@ -1922,22 +1949,22 @@ sub GetInfo($;@)
1922
1949
  }
1923
1950
  ++$i;
1924
1951
  }
1925
- $rtnTags = $self->{FOUND_TAGS} = \@goodTags;
1952
+ $rtnTags = $$self{FOUND_TAGS} = \@goodTags;
1926
1953
  }
1927
1954
  }
1928
1955
 
1929
1956
  # return sorted tag list if provided with a list reference
1930
- if ($self->{IO_TAG_LIST}) {
1957
+ if ($$self{IO_TAG_LIST}) {
1931
1958
  # use file order by default if no tags specified
1932
1959
  # (no such thing as 'Input' order in this case)
1933
- my $sort = $self->{OPTIONS}{Sort};
1960
+ my $sort = $$self{OPTIONS}{Sort};
1934
1961
  $sort = 'File' unless @$reqTags or ($sort and $sort ne 'Input');
1935
1962
  # return tags in specified sort order
1936
- @{$self->{IO_TAG_LIST}} = $self->GetTagList($rtnTags, $sort, $self->{OPTIONS}{Sort2});
1963
+ @{$$self{IO_TAG_LIST}} = $self->GetTagList($rtnTags, $sort, $$self{OPTIONS}{Sort2});
1937
1964
  }
1938
1965
 
1939
1966
  # restore original options
1940
- %saveOptions and $self->{OPTIONS} = \%saveOptions;
1967
+ %saveOptions and $$self{OPTIONS} = \%saveOptions;
1941
1968
 
1942
1969
  return \%info;
1943
1970
  }
@@ -1953,7 +1980,7 @@ sub CombineInfo($;@)
1953
1980
  my $self = shift;
1954
1981
  my (%combinedInfo, $info, $tag, %haveInfo);
1955
1982
 
1956
- if ($self->{OPTIONS}{Duplicates}) {
1983
+ if ($$self{OPTIONS}{Duplicates}) {
1957
1984
  while ($info = shift) {
1958
1985
  foreach $tag (keys %$info) {
1959
1986
  $combinedInfo{$tag} = $$info{$tag};
@@ -1990,7 +2017,7 @@ sub GetTagList($;$$$)
1990
2017
  } elsif (ref $info eq 'ARRAY') {
1991
2018
  $foundTags = $info;
1992
2019
  }
1993
- my $fileOrder = $self->{FILE_ORDER};
2020
+ my $fileOrder = $$self{FILE_ORDER};
1994
2021
 
1995
2022
  if ($foundTags) {
1996
2023
  # make sure a FILE_ORDER entry exists for all tags
@@ -2001,9 +2028,9 @@ sub GetTagList($;$$$)
2001
2028
  }
2002
2029
  } else {
2003
2030
  $sort = $info if $info and not $sort;
2004
- $foundTags = $self->{FOUND_TAGS} || $self->SetFoundTags() or return undef;
2031
+ $foundTags = $$self{FOUND_TAGS} || $self->SetFoundTags() or return undef;
2005
2032
  }
2006
- $sort or $sort = $self->{OPTIONS}{Sort};
2033
+ $sort or $sort = $$self{OPTIONS}{Sort};
2007
2034
 
2008
2035
  # return original list if no sort order specified
2009
2036
  return @$foundTags unless $sort and $sort ne 'Input';
@@ -2023,7 +2050,7 @@ sub GetTagList($;$$$)
2023
2050
  $num or $num = $groupCount{$group} = ++$numGroups;
2024
2051
  $groupOrder{$tag} = $num;
2025
2052
  }
2026
- $sort2 or $sort2 = $self->{OPTIONS}{Sort2};
2053
+ $sort2 or $sort2 = $$self{OPTIONS}{Sort2};
2027
2054
  if ($sort2) {
2028
2055
  if ($sort2 eq 'Tag' or $sort2 eq 'Alpha') {
2029
2056
  return sort { $groupOrder{$a} <=> $groupOrder{$b} or $a cmp $b } @$foundTags;
@@ -2053,7 +2080,7 @@ sub GetFoundTags($;$$)
2053
2080
  {
2054
2081
  local $_;
2055
2082
  my ($self, $sort, $sort2) = @_;
2056
- my $foundTags = $self->{FOUND_TAGS} || $self->SetFoundTags() or return undef;
2083
+ my $foundTags = $$self{FOUND_TAGS} || $self->SetFoundTags() or return undef;
2057
2084
  return $self->GetTagList($foundTags, $sort, $sort2);
2058
2085
  }
2059
2086
 
@@ -2084,13 +2111,13 @@ sub GetValue($$;$)
2084
2111
 
2085
2112
  # figure out what conversions to do
2086
2113
  if ($type) {
2087
- return $self->{RATIONAL}{$tag} if $type eq 'Rational';
2114
+ return $$self{RATIONAL}{$tag} if $type eq 'Rational';
2088
2115
  } else {
2089
- $type = $self->{OPTIONS}{PrintConv} ? 'PrintConv' : 'ValueConv';
2116
+ $type = $$self{OPTIONS}{PrintConv} ? 'PrintConv' : 'ValueConv';
2090
2117
  }
2091
2118
 
2092
2119
  # start with the raw value
2093
- my $value = $self->{VALUE}{$tag};
2120
+ my $value = $$self{VALUE}{$tag};
2094
2121
  if (not defined $value) {
2095
2122
  return wantarray ? () : undef unless ref $tag;
2096
2123
  # get the value of a structure field
@@ -2103,7 +2130,7 @@ sub GetValue($$;$)
2103
2130
  push @convTypes, 'PrintConv' unless $type eq 'ValueConv';
2104
2131
  }
2105
2132
  } else {
2106
- $tagInfo = $self->{TAG_INFO}{$tag};
2133
+ $tagInfo = $$self{TAG_INFO}{$tag};
2107
2134
  if ($$tagInfo{Struct} and ref $value) {
2108
2135
  # must load XMPStruct.pl just in case (should already be loaded if
2109
2136
  # a structure was extracted, but we could also arrive here if a simple
@@ -2121,7 +2148,7 @@ sub GetValue($$;$)
2121
2148
  }
2122
2149
  if ($type ne 'Raw') {
2123
2150
  # use values we calculated already if we stored them
2124
- $both = $self->{BOTH}{$tag};
2151
+ $both = $$self{BOTH}{$tag};
2125
2152
  if ($both) {
2126
2153
  if ($type eq 'PrintConv') {
2127
2154
  $value = $$both[1];
@@ -2150,7 +2177,7 @@ sub GetValue($$;$)
2150
2177
  $conv = '\$val'; # return scalar reference for binary values
2151
2178
  } else {
2152
2179
  # use PRINT_CONV from tag table if PrintConv doesn't exist
2153
- next unless defined($conv = $tagInfo->{Table}{PRINT_CONV});
2180
+ next unless defined($conv = $$tagInfo{Table}{PRINT_CONV});
2154
2181
  next if exists $$tagInfo{$convType};
2155
2182
  }
2156
2183
  }
@@ -2206,9 +2233,9 @@ sub GetValue($$;$)
2206
2233
  my $oldEscape = $$self{ESCAPE_PROC};
2207
2234
  delete $$self{ESCAPE_PROC};
2208
2235
  foreach (keys %$val) {
2209
- $raw[$_] = $self->{VALUE}{$$val{$_}};
2236
+ $raw[$_] = $$self{VALUE}{$$val{$_}};
2210
2237
  ($val[$_], $prt[$_]) = $self->GetValue($$val{$_}, 'Both');
2211
- next if defined $val[$_] or not $tagInfo->{Require}{$_};
2238
+ next if defined $val[$_] or not $$tagInfo{Require}{$_};
2212
2239
  $$self{ESCAPE_PROC} = $oldEscape;
2213
2240
  return wantarray ? () : undef;
2214
2241
  }
@@ -2223,7 +2250,7 @@ sub GetValue($$;$)
2223
2250
  # override with our localized language PrintConv if available
2224
2251
  if ($$self{CUR_LANG} and $convType eq 'PrintConv' and
2225
2252
  # (no need to check for lang-alt tag names -- they won't have a PrintConv)
2226
- ref($lc = $self->{CUR_LANG}{$$tagInfo{Name}}) eq 'HASH' and
2253
+ ref($lc = $$self{CUR_LANG}{$$tagInfo{Name}}) eq 'HASH' and
2227
2254
  ($lc = $$lc{PrintConv}) and ($lc = $$lc{$value}))
2228
2255
  {
2229
2256
  $value = $self->Decode($lc, 'UTF8');
@@ -2233,7 +2260,7 @@ sub GetValue($$;$)
2233
2260
  $value = DecodeBits($val, $$conv{BITMASK});
2234
2261
  # override with localized language strings
2235
2262
  if (defined $value and $$self{CUR_LANG} and $convType eq 'PrintConv' and
2236
- ref($lc = $self->{CUR_LANG}{$$tagInfo{Name}}) eq 'HASH' and
2263
+ ref($lc = $$self{CUR_LANG}{$$tagInfo{Name}}) eq 'HASH' and
2237
2264
  ($lc = $$lc{PrintConv}))
2238
2265
  {
2239
2266
  my @vals = split ', ', $value;
@@ -2296,7 +2323,7 @@ sub GetValue($$;$)
2296
2323
  if ($type eq 'Both') {
2297
2324
  # save both (unescaped) values because we often need them again
2298
2325
  # (Composite tags need "Both" and often Require one tag for various Composite tags)
2299
- $self->{BOTH}{$tag} = [ $valueConv, $value ] unless $both;
2326
+ $$self{BOTH}{$tag} = [ $valueConv, $value ] unless $both;
2300
2327
  # escape values if necessary
2301
2328
  if ($$self{ESCAPE_PROC}) {
2302
2329
  DoEscape($value, $$self{ESCAPE_PROC});
@@ -2319,9 +2346,9 @@ sub GetValue($$;$)
2319
2346
  # return array if requested
2320
2347
  return @$value if wantarray;
2321
2348
  # return list reference for Raw, ValueConv or if List or not a list of scalars
2322
- return $value if $type ne 'PrintConv' or $self->{OPTIONS}{List} or ref $$value[0];
2349
+ return $value if $type ne 'PrintConv' or $$self{OPTIONS}{List} or ref $$value[0];
2323
2350
  # otherwise join in comma-separated string
2324
- $value = join $self->{OPTIONS}{ListSep}, @$value;
2351
+ $value = join $$self{OPTIONS}{ListSep}, @$value;
2325
2352
  }
2326
2353
  return $value;
2327
2354
  }
@@ -2334,7 +2361,7 @@ sub GetValue($$;$)
2334
2361
  sub GetTagID($$)
2335
2362
  {
2336
2363
  my ($self, $tag) = @_;
2337
- my $tagInfo = $self->{TAG_INFO}{$tag};
2364
+ my $tagInfo = $$self{TAG_INFO}{$tag};
2338
2365
  return '' unless $tagInfo and defined $$tagInfo{TagID};
2339
2366
  return ($$tagInfo{TagID}, $$tagInfo{LangCode}) if wantarray;
2340
2367
  return $$tagInfo{TagID};
@@ -2347,8 +2374,8 @@ sub GetTagID($$)
2347
2374
  sub GetTableName($$)
2348
2375
  {
2349
2376
  my ($self, $tag) = @_;
2350
- my $tagInfo = $self->{TAG_INFO}{$tag} or return '';
2351
- return $tagInfo->{Table}{SHORT_NAME};
2377
+ my $tagInfo = $$self{TAG_INFO}{$tag} or return '';
2378
+ return $$tagInfo{Table}{SHORT_NAME};
2352
2379
  }
2353
2380
 
2354
2381
  #------------------------------------------------------------------------------
@@ -2358,7 +2385,7 @@ sub GetTableName($$)
2358
2385
  sub GetTagIndex($$)
2359
2386
  {
2360
2387
  my ($self, $tag) = @_;
2361
- my $tagInfo = $self->{TAG_INFO}{$tag} or return undef;
2388
+ my $tagInfo = $$self{TAG_INFO}{$tag} or return undef;
2362
2389
  return $$tagInfo{Index};
2363
2390
  }
2364
2391
 
@@ -2372,12 +2399,12 @@ sub GetDescription($$)
2372
2399
  local $_;
2373
2400
  my ($self, $tag) = @_;
2374
2401
  my ($desc, $name);
2375
- my $tagInfo = $self->{TAG_INFO}{$tag};
2402
+ my $tagInfo = $$self{TAG_INFO}{$tag};
2376
2403
  # ($tagInfo won't be defined for missing tags extracted with -f)
2377
2404
  if ($tagInfo) {
2378
2405
  # use alternate language description if available
2379
2406
  while ($$self{CUR_LANG}) {
2380
- $desc = $self->{CUR_LANG}{$$tagInfo{Name}};
2407
+ $desc = $$self{CUR_LANG}{$$tagInfo{Name}};
2381
2408
  if ($desc) {
2382
2409
  # must look up Description if this tag also has a PrintConv
2383
2410
  $desc = $$desc{Description} or last if ref $desc;
@@ -2385,7 +2412,7 @@ sub GetDescription($$)
2385
2412
  # look up default language of lang-alt tag
2386
2413
  last unless $$tagInfo{LangCode} and
2387
2414
  ($name = $$tagInfo{Name}) =~ s/-$$tagInfo{LangCode}$// and
2388
- $desc = $self->{CUR_LANG}{$name};
2415
+ $desc = $$self{CUR_LANG}{$name};
2389
2416
  $desc = $$desc{Description} or last if ref $desc;
2390
2417
  $desc .= " ($$tagInfo{LangCode})";
2391
2418
  }
@@ -2409,7 +2436,8 @@ sub GetDescription($$)
2409
2436
  # Get group name for specified tag
2410
2437
  # Inputs: 0) ExifTool object reference
2411
2438
  # 1) tag key (or reference to tagInfo hash, not part of the public API)
2412
- # 2) [optional] group family (-1 to get extended group list)
2439
+ # 2) [optional] group family (-1 to get extended group list, or multiple
2440
+ # families separated by colons to return multiple groups as a string)
2413
2441
  # Returns: Scalar context: Group name (for family 0 if not otherwise specified)
2414
2442
  # Array context: Group name if family specified, otherwise list of
2415
2443
  # group names for each family. Returns '' for undefined tag.
@@ -2418,32 +2446,30 @@ sub GetGroup($$;$)
2418
2446
  {
2419
2447
  local $_;
2420
2448
  my ($self, $tag, $family) = @_;
2421
- my ($tagInfo, @groups, @families, $simplify, $byTagInfo);
2449
+ my ($tagInfo, @groups, @families, $simplify, $byTagInfo, $ex);
2422
2450
  if (ref $tag eq 'HASH') {
2423
2451
  $tagInfo = $tag;
2424
2452
  $tag = $$tagInfo{Name};
2425
2453
  # set flag so we don't get extra information for an extracted tag
2426
2454
  $byTagInfo = 1;
2427
2455
  } else {
2428
- $tagInfo = $self->{TAG_INFO}{$tag} or return '';
2456
+ $tagInfo = $$self{TAG_INFO}{$tag} || { };
2457
+ $ex = $$self{TAG_EXTRA}{$tag};
2429
2458
  }
2430
2459
  my $groups = $$tagInfo{Groups};
2431
2460
  # fill in default groups unless already done
2432
2461
  # (after this, Groups 0-2 in tagInfo are guaranteed to be defined)
2433
2462
  unless ($$tagInfo{GotGroups}) {
2434
- my $tagTablePtr = $$tagInfo{Table};
2435
- if ($tagTablePtr) {
2436
- # construct our group list
2437
- $groups or $groups = $$tagInfo{Groups} = { };
2438
- # fill in default groups
2439
- foreach (keys %{$$tagTablePtr{GROUPS}}) {
2440
- $$groups{$_} or $$groups{$_} = $tagTablePtr->{GROUPS}{$_};
2441
- }
2463
+ my $tagTablePtr = $$tagInfo{Table} || { GROUPS => { } };
2464
+ # construct our group list
2465
+ $groups or $groups = $$tagInfo{Groups} = { };
2466
+ # fill in default groups
2467
+ foreach (0..2) {
2468
+ $$groups{$_} = $$tagTablePtr{GROUPS}{$_} || '' unless $$groups{$_};
2442
2469
  }
2443
2470
  # set flag indicating group list was built
2444
2471
  $$tagInfo{GotGroups} = 1;
2445
2472
  }
2446
- my $ex = $self->{TAG_EXTRA}{$tag};
2447
2473
  if (defined $family and $family ne '-1') {
2448
2474
  if ($family =~ /[^\d]/) {
2449
2475
  @families = ($family =~ /\d+/g);
@@ -2511,7 +2537,7 @@ sub GetGroups($;$$)
2511
2537
  # figure out our arguments
2512
2538
  if (ref $info ne 'HASH') {
2513
2539
  $family = $info;
2514
- $info = $self->{VALUE};
2540
+ $info = $$self{VALUE};
2515
2541
  } else {
2516
2542
  $family = shift;
2517
2543
  }
@@ -2542,8 +2568,8 @@ sub SetNewGroups($;@)
2542
2568
  $priority{file} = 10; # 'File' group is always written (Comment)
2543
2569
  $priority{composite} = 10; # 'Composite' group is always written
2544
2570
  # set write priority (higher # is higher priority)
2545
- $self->{WRITE_PRIORITY} = \%priority;
2546
- $self->{WRITE_GROUPS} = \@groups;
2571
+ $$self{WRITE_PRIORITY} = \%priority;
2572
+ $$self{WRITE_GROUPS} = \@groups;
2547
2573
  }
2548
2574
 
2549
2575
  #------------------------------------------------------------------------------
@@ -2566,7 +2592,7 @@ sub BuildCompositeTags($)
2566
2592
  my @tagList = sort keys %Image::ExifTool::Composite;
2567
2593
  my %tagsUsed;
2568
2594
 
2569
- my $rawValue = $self->{VALUE};
2595
+ my $rawValue = $$self{VALUE};
2570
2596
  for (;;) {
2571
2597
  my %notBuilt;
2572
2598
  $notBuilt{$_} = 1 foreach @tagList;
@@ -2634,11 +2660,11 @@ COMPOSITE_TAG:
2634
2660
  }
2635
2661
  if ($doc) {
2636
2662
  if ($found) {
2637
- $self->{DOC_NUM} = $doc;
2663
+ $$self{DOC_NUM} = $doc;
2638
2664
  $self->FoundTag($tagInfo, \%tagKey);
2639
- delete $self->{DOC_NUM};
2665
+ delete $$self{DOC_NUM};
2640
2666
  }
2641
- next if ++$doc <= $self->{DOC_COUNT};
2667
+ next if ++$doc <= $$self{DOC_COUNT};
2642
2668
  last;
2643
2669
  } elsif ($found) {
2644
2670
  delete $notBuilt{$tag}; # this tag is OK to build now
@@ -2657,7 +2683,7 @@ COMPOSITE_TAG:
2657
2683
  # check to see if we just replaced one of the tag keys we Require'd
2658
2684
  if (defined $key and $tagsUsed{$key}) {
2659
2685
  foreach (@{$tagsUsed{$key}}) {
2660
- $$_ = $self->{MOVED_KEY}; # replace with new tag key
2686
+ $$_ = $$self{MOVED_KEY}; # replace with new tag key
2661
2687
  }
2662
2688
  delete $tagsUsed{$key}; # can't be replaced again
2663
2689
  }
@@ -2798,46 +2824,46 @@ sub Init($)
2798
2824
  my $self = shift;
2799
2825
  # delete all DataMember variables (lower-case names)
2800
2826
  foreach (keys %$self) {
2801
- /[a-z]/ and delete $self->{$_};
2802
- }
2803
- delete $self->{FOUND_TAGS}; # list of found tags
2804
- delete $self->{EXIF_DATA}; # the EXIF data block
2805
- delete $self->{EXIF_POS}; # EXIF position in file
2806
- delete $self->{FIRST_EXIF_POS}; # position of first EXIF in file
2807
- delete $self->{HTML_DUMP}; # html dump information
2808
- delete $self->{SET_GROUP0}; # group0 name override
2809
- delete $self->{SET_GROUP1}; # group1 name override
2810
- delete $self->{DOC_NUM}; # current embedded document number
2811
- $self->{DOC_COUNT} = 0; # count of embedded documents processed
2812
- $self->{BASE} = 0; # base for offsets from start of file
2813
- $self->{FILE_ORDER} = { }; # * hash of tag order in file ('*' = based on tag key)
2814
- $self->{VALUE} = { }; # * hash of raw tag values
2815
- $self->{BOTH} = { }; # * hash for Value/PrintConv values of Require'd tags
2816
- $self->{RATIONAL} = { }; # * hash of original rational components
2817
- $self->{TAG_INFO} = { }; # * hash of tag information
2818
- $self->{TAG_EXTRA} = { }; # * hash of extra tag information (dynamic group names)
2819
- $self->{PRIORITY} = { }; # * priority of current tags
2820
- $self->{LIST_TAGS} = { }; # hash of tagInfo refs for active List-type tags
2821
- $self->{PROCESSED} = { }; # hash of processed directory start positions
2822
- $self->{DIR_COUNT} = { }; # count various types of directories
2823
- $self->{DUPL_TAG} = { }; # last-used index for duplicate-tag keys
2824
- $self->{WARNED_ONCE}= { }; # WarnOnce() warnings already issued
2825
- $self->{PATH} = [ ]; # current subdirectory path in file when reading
2826
- $self->{NUM_FOUND} = 0; # total number of tags found (incl. duplicates)
2827
- $self->{CHANGED} = 0; # number of tags changed (writer only)
2828
- $self->{INDENT} = ' '; # initial indent for verbose messages
2829
- $self->{PRIORITY_DIR} = ''; # the priority directory name
2830
- $self->{LOW_PRIORITY_DIR} = { PreviewIFD => 1 }; # names of priority 0 directories
2831
- $self->{TIFF_TYPE} = ''; # type of TIFF data (APP1, TIFF, NEF, etc...)
2832
- $self->{Make} = ''; # camera make
2833
- $self->{Model} = ''; # camera model
2834
- $self->{CameraType} = ''; # Olympus camera type
2827
+ /[a-z]/ and delete $$self{$_};
2828
+ }
2829
+ delete $$self{FOUND_TAGS}; # list of found tags
2830
+ delete $$self{EXIF_DATA}; # the EXIF data block
2831
+ delete $$self{EXIF_POS}; # EXIF position in file
2832
+ delete $$self{FIRST_EXIF_POS}; # position of first EXIF in file
2833
+ delete $$self{HTML_DUMP}; # html dump information
2834
+ delete $$self{SET_GROUP0}; # group0 name override
2835
+ delete $$self{SET_GROUP1}; # group1 name override
2836
+ delete $$self{DOC_NUM}; # current embedded document number
2837
+ $$self{DOC_COUNT} = 0; # count of embedded documents processed
2838
+ $$self{BASE} = 0; # base for offsets from start of file
2839
+ $$self{FILE_ORDER} = { }; # * hash of tag order in file ('*' = based on tag key)
2840
+ $$self{VALUE} = { }; # * hash of raw tag values
2841
+ $$self{BOTH} = { }; # * hash for Value/PrintConv values of Require'd tags
2842
+ $$self{RATIONAL} = { }; # * hash of original rational components
2843
+ $$self{TAG_INFO} = { }; # * hash of tag information
2844
+ $$self{TAG_EXTRA} = { }; # * hash of extra tag information (dynamic group names)
2845
+ $$self{PRIORITY} = { }; # * priority of current tags
2846
+ $$self{LIST_TAGS} = { }; # hash of tagInfo refs for active List-type tags
2847
+ $$self{PROCESSED} = { }; # hash of processed directory start positions
2848
+ $$self{DIR_COUNT} = { }; # count various types of directories
2849
+ $$self{DUPL_TAG} = { }; # last-used index for duplicate-tag keys
2850
+ $$self{WARNED_ONCE}= { }; # WarnOnce() warnings already issued
2851
+ $$self{PATH} = [ ]; # current subdirectory path in file when reading
2852
+ $$self{NUM_FOUND} = 0; # total number of tags found (incl. duplicates)
2853
+ $$self{CHANGED} = 0; # number of tags changed (writer only)
2854
+ $$self{INDENT} = ' '; # initial indent for verbose messages
2855
+ $$self{PRIORITY_DIR} = ''; # the priority directory name
2856
+ $$self{LOW_PRIORITY_DIR} = { PreviewIFD => 1 }; # names of priority 0 directories
2857
+ $$self{TIFF_TYPE} = ''; # type of TIFF data (APP1, TIFF, NEF, etc...)
2858
+ $$self{Make} = ''; # camera make
2859
+ $$self{Model} = ''; # camera model
2860
+ $$self{CameraType} = ''; # Olympus camera type
2835
2861
  if ($self->Options('HtmlDump')) {
2836
2862
  require Image::ExifTool::HtmlDump;
2837
- $self->{HTML_DUMP} = new Image::ExifTool::HtmlDump;
2863
+ $$self{HTML_DUMP} = new Image::ExifTool::HtmlDump;
2838
2864
  }
2839
2865
  # make sure our TextOut is a file reference
2840
- $self->{OPTIONS}{TextOut} = \*STDOUT unless ref $self->{OPTIONS}{TextOut};
2866
+ $$self{OPTIONS}{TextOut} = \*STDOUT unless ref $$self{OPTIONS}{TextOut};
2841
2867
  }
2842
2868
 
2843
2869
  #------------------------------------------------------------------------------
@@ -2885,27 +2911,27 @@ sub Open(*$;$)
2885
2911
  sub ParseArguments($;@)
2886
2912
  {
2887
2913
  my $self = shift;
2888
- my $options = $self->{OPTIONS};
2914
+ my $options = $$self{OPTIONS};
2889
2915
  my @exclude;
2890
- my @oldGroupOpts = grep /^Group/, keys %{$self->{OPTIONS}};
2916
+ my @oldGroupOpts = grep /^Group/, keys %{$$self{OPTIONS}};
2891
2917
  my $wasExcludeOpt;
2892
2918
 
2893
- $self->{REQUESTED_TAGS} = [ ];
2894
- $self->{REQ_TAG_LOOKUP} = { };
2895
- $self->{EXCL_TAG_LOOKUP} = { };
2896
- $self->{IO_TAG_LIST} = undef;
2919
+ $$self{REQUESTED_TAGS} = [ ];
2920
+ $$self{REQ_TAG_LOOKUP} = { };
2921
+ $$self{EXCL_TAG_LOOKUP} = { };
2922
+ $$self{IO_TAG_LIST} = undef;
2897
2923
 
2898
2924
  # handle our input arguments
2899
2925
  while (@_) {
2900
2926
  my $arg = shift;
2901
2927
  if (ref $arg) {
2902
2928
  if (ref $arg eq 'ARRAY') {
2903
- $self->{IO_TAG_LIST} = $arg;
2929
+ $$self{IO_TAG_LIST} = $arg;
2904
2930
  foreach (@$arg) {
2905
2931
  if (/^-(.*)/) {
2906
2932
  push @exclude, $1;
2907
2933
  } else {
2908
- push @{$self->{REQUESTED_TAGS}}, $_;
2934
+ push @{$$self{REQUESTED_TAGS}}, $_;
2909
2935
  }
2910
2936
  }
2911
2937
  } elsif (ref $arg eq 'HASH') {
@@ -2914,7 +2940,7 @@ sub ParseArguments($;@)
2914
2940
  # a single new group option overrides all old group options
2915
2941
  if (@oldGroupOpts and $opt =~ /^Group/) {
2916
2942
  foreach (@oldGroupOpts) {
2917
- delete $options->{$_};
2943
+ delete $$options{$_};
2918
2944
  }
2919
2945
  undef @oldGroupOpts;
2920
2946
  }
@@ -2922,7 +2948,7 @@ sub ParseArguments($;@)
2922
2948
  $opt eq 'Exclude' and $wasExcludeOpt = 1;
2923
2949
  }
2924
2950
  } elsif (ref $arg eq 'SCALAR' or UNIVERSAL::isa($arg,'GLOB')) {
2925
- next if defined $self->{RAF};
2951
+ next if defined $$self{RAF};
2926
2952
  # convert image data from UTF-8 to character stream if necessary
2927
2953
  # (patches RHEL 3 UTF8 LANG problem)
2928
2954
  if (ref $arg eq 'SCALAR' and $] >= 5.006 and
@@ -2932,45 +2958,45 @@ sub ParseArguments($;@)
2932
2958
  my $buff = $@ ? pack('C*',unpack('U0C*',$$arg)) : Encode::encode('utf8',$$arg);
2933
2959
  $arg = \$buff;
2934
2960
  }
2935
- $self->{RAF} = new File::RandomAccess($arg);
2961
+ $$self{RAF} = new File::RandomAccess($arg);
2936
2962
  # set filename to empty string to indicate that
2937
2963
  # we have a file but we didn't open it
2938
- $self->{FILENAME} = '';
2964
+ $$self{FILENAME} = '';
2939
2965
  } elsif (UNIVERSAL::isa($arg, 'File::RandomAccess')) {
2940
- $self->{RAF} = $arg;
2941
- $self->{FILENAME} = '';
2966
+ $$self{RAF} = $arg;
2967
+ $$self{FILENAME} = '';
2942
2968
  } else {
2943
2969
  warn "Don't understand ImageInfo argument $arg\n";
2944
2970
  }
2945
- } elsif (defined $self->{FILENAME}) {
2971
+ } elsif (defined $$self{FILENAME}) {
2946
2972
  if ($arg =~ /^-(.*)/) {
2947
2973
  push @exclude, $1;
2948
2974
  } else {
2949
- push @{$self->{REQUESTED_TAGS}}, $arg;
2975
+ push @{$$self{REQUESTED_TAGS}}, $arg;
2950
2976
  }
2951
2977
  } else {
2952
- $self->{FILENAME} = $arg;
2978
+ $$self{FILENAME} = $arg;
2953
2979
  }
2954
2980
  }
2955
2981
  # expand shortcuts in tag arguments if provided
2956
- if (@{$self->{REQUESTED_TAGS}}) {
2957
- ExpandShortcuts($self->{REQUESTED_TAGS});
2982
+ if (@{$$self{REQUESTED_TAGS}}) {
2983
+ ExpandShortcuts($$self{REQUESTED_TAGS});
2958
2984
  # initialize lookup for requested tags
2959
- foreach (@{$self->{REQUESTED_TAGS}}) {
2960
- /([-\w]+)#?$/ and $self->{REQ_TAG_LOOKUP}{lc($1)} = 1;
2985
+ foreach (@{$$self{REQUESTED_TAGS}}) {
2986
+ /([-\w]+)#?$/ and $$self{REQ_TAG_LOOKUP}{lc($1)} = 1;
2961
2987
  }
2962
2988
  }
2963
2989
  if (@exclude or $wasExcludeOpt) {
2964
2990
  # must add existing excluded tags
2965
- push @exclude, @{$options->{Exclude}} if $options->{Exclude};
2966
- $options->{Exclude} = \@exclude;
2991
+ push @exclude, @{$$options{Exclude}} if $$options{Exclude};
2992
+ $$options{Exclude} = \@exclude;
2967
2993
  # expand shortcuts in new exclude list
2968
- ExpandShortcuts($options->{Exclude}, 1); # (also remove '#' suffix)
2994
+ ExpandShortcuts($$options{Exclude}, 1); # (also remove '#' suffix)
2969
2995
  }
2970
2996
  # generate lookup for excluded tags
2971
- if ($options->{Exclude}) {
2972
- foreach (@{$options->{Exclude}}) {
2973
- /([-\w]+)#?$/ and $self->{EXCL_TAG_LOOKUP}{lc($1)} = 1;
2997
+ if ($$options{Exclude}) {
2998
+ foreach (@{$$options{Exclude}}) {
2999
+ /([-\w]+)#?$/ and $$self{EXCL_TAG_LOOKUP}{lc($1)} = 1;
2974
3000
  }
2975
3001
  }
2976
3002
  }
@@ -3033,11 +3059,11 @@ sub GroupMatches($$$)
3033
3059
  sub SetFoundTags($)
3034
3060
  {
3035
3061
  my $self = shift;
3036
- my $options = $self->{OPTIONS};
3037
- my $reqTags = $self->{REQUESTED_TAGS} || [ ];
3038
- my $duplicates = $options->{Duplicates};
3039
- my $exclude = $options->{Exclude};
3040
- my $fileOrder = $self->{FILE_ORDER};
3062
+ my $options = $$self{OPTIONS};
3063
+ my $reqTags = $$self{REQUESTED_TAGS} || [ ];
3064
+ my $duplicates = $$options{Duplicates};
3065
+ my $exclude = $$options{Exclude};
3066
+ my $fileOrder = $$self{FILE_ORDER};
3041
3067
  my @groupOptions = sort grep /^Group/, keys %$options;
3042
3068
  my $doDups = $duplicates || $exclude || @groupOptions;
3043
3069
  my ($tag, $rtnTags, @byValue, @wildTags);
@@ -3062,7 +3088,7 @@ sub SetFoundTags($)
3062
3088
  $tag = $reqTag;
3063
3089
  }
3064
3090
  $byValue = 1 if $tag =~ s/#$// and $$options{PrintConv};
3065
- if (defined $tagHash->{$reqTag} and not $doDups) {
3091
+ if (defined $$tagHash{$reqTag} and not $doDups) {
3066
3092
  $matches[0] = $tag;
3067
3093
  } elsif ($tag =~ /^(\*|all)$/i) {
3068
3094
  # tag name of '*' or 'all' matches all tags
@@ -3104,9 +3130,9 @@ sub SetFoundTags($)
3104
3130
  # return only the highest priority tag unless duplicates wanted
3105
3131
  unless ($doDups or $allTag or $allGrp) {
3106
3132
  $tag = shift @matches;
3107
- my $oldPriority = $self->{PRIORITY}{$tag} || 1;
3133
+ my $oldPriority = $$self{PRIORITY}{$tag} || 1;
3108
3134
  foreach (@matches) {
3109
- my $priority = $self->{PRIORITY}{$_};
3135
+ my $priority = $$self{PRIORITY}{$_};
3110
3136
  $priority = 1 unless defined $priority;
3111
3137
  next unless $priority >= $oldPriority;
3112
3138
  $tag = $_;
@@ -3118,7 +3144,7 @@ sub SetFoundTags($)
3118
3144
  # put entry in return list even without value (value is undef)
3119
3145
  $matches[0] = $byValue ? "$tag #(0)" : "$tag (0)";
3120
3146
  # bogus file order entry to avoid warning if sorting in file order
3121
- $self->{FILE_ORDER}{$matches[0]} = 9999;
3147
+ $$self{FILE_ORDER}{$matches[0]} = 9999;
3122
3148
  }
3123
3149
  # save indices of tags extracted by value
3124
3150
  push @byValue, scalar(@$rtnTags) .. (scalar(@$rtnTags)+scalar(@matches)-1) if $byValue;
@@ -3185,10 +3211,10 @@ sub SetFoundTags($)
3185
3211
  $family = $1 || 0;
3186
3212
  $wantGroup{$family} or $wantGroup{$family} = { };
3187
3213
  my $groupList;
3188
- if (ref $options->{$groupOpt} eq 'ARRAY') {
3189
- $groupList = $options->{$groupOpt};
3214
+ if (ref $$options{$groupOpt} eq 'ARRAY') {
3215
+ $groupList = $$options{$groupOpt};
3190
3216
  } else {
3191
- $groupList = [ $options->{$groupOpt} ];
3217
+ $groupList = [ $$options{$groupOpt} ];
3192
3218
  }
3193
3219
  foreach (@$groupList) {
3194
3220
  # groups have priority in order they were specified
@@ -3250,7 +3276,7 @@ GR_TAG: foreach $tag (@$rtnTags) {
3250
3276
  $rtnTags = \@tags;
3251
3277
  last;
3252
3278
  }
3253
- $self->{FOUND_TAGS} = $rtnTags; # save found tags
3279
+ $$self{FOUND_TAGS} = $rtnTags; # save found tags
3254
3280
 
3255
3281
  # return reference to found tag keys (and list of indices of tags to extract by value)
3256
3282
  return wantarray ? ($rtnTags, \@byValue, \@wildTags) : $rtnTags;
@@ -3302,7 +3328,7 @@ sub Warn($$;$)
3302
3328
  {
3303
3329
  my ($self, $str, $ignorable) = @_;
3304
3330
  if ($ignorable) {
3305
- return 0 if $self->{OPTIONS}{IgnoreMinorErrors};
3331
+ return 0 if $$self{OPTIONS}{IgnoreMinorErrors};
3306
3332
  $str = $ignorable eq '2' ? "[Minor] $str" : "[minor] $str";
3307
3333
  }
3308
3334
  $self->FoundTag('Warning', $str);
@@ -3316,7 +3342,7 @@ sub Warn($$;$)
3316
3342
  sub WarnOnce($$;$)
3317
3343
  {
3318
3344
  my ($self, $str, $ignorable) = @_;
3319
- return 0 if $ignorable and $self->{OPTIONS}{IgnoreMinorErrors};
3345
+ return 0 if $ignorable and $$self{OPTIONS}{IgnoreMinorErrors};
3320
3346
  unless ($$self{WARNED_ONCE}{$str}) {
3321
3347
  $self->Warn($str, $ignorable);
3322
3348
  $$self{WARNED_ONCE}{$str} = 1;
@@ -3331,11 +3357,11 @@ sub WarnOnce($$;$)
3331
3357
  sub Error($$;$)
3332
3358
  {
3333
3359
  my ($self, $str, $ignorable) = @_;
3334
- if ($ignorable) {
3335
- if ($self->{OPTIONS}{IgnoreMinorErrors}) {
3336
- $self->Warn($str);
3337
- return 0;
3338
- }
3360
+ if ($$self{DemoteErrors}) {
3361
+ $self->Warn($str) and ++$$self{DemoteErrors};
3362
+ return 1;
3363
+ } elsif ($ignorable) {
3364
+ $$self{OPTIONS}{IgnoreMinorErrors} and $self->Warn($str), return 0;
3339
3365
  $str = "[minor] $str";
3340
3366
  }
3341
3367
  $self->FoundTag('Error', $str);
@@ -3461,9 +3487,9 @@ sub AddCompositeTags($;$)
3461
3487
 
3462
3488
  # make sure default groups are defined in families 0 and 1
3463
3489
  if ($defaultGroups) {
3464
- $defaultGroups->{0} or $defaultGroups->{0} = 'Composite';
3465
- $defaultGroups->{1} or $defaultGroups->{1} = 'Composite';
3466
- $defaultGroups->{2} or $defaultGroups->{2} = 'Other';
3490
+ $$defaultGroups{0} or $$defaultGroups{0} = 'Composite';
3491
+ $$defaultGroups{1} or $$defaultGroups{1} = 'Composite';
3492
+ $$defaultGroups{2} or $$defaultGroups{2} = 'Other';
3467
3493
  } else {
3468
3494
  $defaultGroups = $$add{GROUPS} = { 0 => 'Composite', 1 => 'Composite', 2 => 'Other' };
3469
3495
  }
@@ -4059,7 +4085,7 @@ sub ValidateImage($$$)
4059
4085
  $self->Options('IgnoreMinorErrors'))
4060
4086
  {
4061
4087
  # issue warning only if the tag was specifically requested
4062
- if ($self->{REQ_TAG_LOOKUP}{lc GetTagName($tag)}) {
4088
+ if ($$self{REQ_TAG_LOOKUP}{lc GetTagName($tag)}) {
4063
4089
  $self->Warn("$tag is not a valid JPEG image",1);
4064
4090
  return undef;
4065
4091
  }
@@ -4118,7 +4144,7 @@ sub Printable($;$)
4118
4144
  return '(undef)' unless defined $outStr;
4119
4145
  $outStr =~ tr/\x01-\x1f\x7f-\xff/./;
4120
4146
  $outStr =~ s/\x00//g;
4121
- my $verbose = $self->{OPTIONS}{Verbose};
4147
+ my $verbose = $$self{OPTIONS}{Verbose};
4122
4148
  if ($verbose < 4) {
4123
4149
  if ($maxLen) {
4124
4150
  $maxLen = 20 if $maxLen < 20; # minimum length is 20
@@ -4145,8 +4171,8 @@ sub Printable($;$)
4145
4171
  sub ConvertDateTime($$)
4146
4172
  {
4147
4173
  my ($self, $date) = @_;
4148
- my $dateFormat = $self->{OPTIONS}{DateFormat};
4149
- my $shift = $self->{OPTIONS}{GlobalTimeShift};
4174
+ my $dateFormat = $$self{OPTIONS}{DateFormat};
4175
+ my $shift = $$self{OPTIONS}{GlobalTimeShift};
4150
4176
  if ($shift) {
4151
4177
  my $dir = ($shift =~ s/^([-+])// and $1 eq '-') ? -1 : 1;
4152
4178
  require 'Image/ExifTool/Shift.pl';
@@ -4165,7 +4191,7 @@ sub ConvertDateTime($$)
4165
4191
  if (@a and $a[0] >= 1000 and $a[0] < 3000 and eval 'require POSIX') {
4166
4192
  $date = POSIX::strftime($dateFormat, $a[5]||0, $a[4]||0, $a[3]||0,
4167
4193
  $a[2]||1, ($a[1]||1)-1, $a[0]-1900);
4168
- } elsif ($self->{OPTIONS}{StrictDate}) {
4194
+ } elsif ($$self{OPTIONS}{StrictDate}) {
4169
4195
  undef $date;
4170
4196
  }
4171
4197
  }
@@ -4327,6 +4353,11 @@ sub ConvertDuration($)
4327
4353
  $time -= $h * 3600;
4328
4354
  my $m = int($time / 60);
4329
4355
  $time -= $m * 60;
4356
+ if ($h > 24) {
4357
+ my $d = int($h / 24);
4358
+ $h -= $d * 24;
4359
+ $sign = "$sign$d days ";
4360
+ }
4330
4361
  return sprintf("$sign%d:%.2d:%.2d", $h, $m, int($time));
4331
4362
  }
4332
4363
 
@@ -4358,7 +4389,7 @@ sub HDump($$$$;$$)
4358
4389
  if ($$self{HTML_DUMP}) {
4359
4390
  my $pos = shift;
4360
4391
  $pos += $$self{BASE} if $$self{BASE};
4361
- $self->{HTML_DUMP}->Add($pos, @_);
4392
+ $$self{HTML_DUMP}->Add($pos, @_);
4362
4393
  }
4363
4394
  }
4364
4395
 
@@ -4555,11 +4586,11 @@ sub ProcessJPEG($$)
4555
4586
  local $_;
4556
4587
  my ($self, $dirInfo) = @_;
4557
4588
  my ($ch, $s, $length);
4558
- my $verbose = $self->{OPTIONS}{Verbose};
4559
- my $out = $self->{OPTIONS}{TextOut};
4560
- my $fast = $self->{OPTIONS}{FastScan};
4589
+ my $verbose = $$self{OPTIONS}{Verbose};
4590
+ my $out = $$self{OPTIONS}{TextOut};
4591
+ my $fast = $$self{OPTIONS}{FastScan};
4561
4592
  my $raf = $$dirInfo{RAF};
4562
- my $htmlDump = $self->{HTML_DUMP};
4593
+ my $htmlDump = $$self{HTML_DUMP};
4563
4594
  my %dumpParms = ( Out => $out );
4564
4595
  my ($success, $wantTrailer, $trailInfo);
4565
4596
  my (@iccChunk, $iccChunkCount, $iccChunksTotal, @flirChunk, $flirCount, $flirTotal);
@@ -4697,7 +4728,7 @@ sub ProcessJPEG($$)
4697
4728
  # (and Minolta and Sony previews can have a random first byte...)
4698
4729
  my $scanLen = $$self{Make} =~ /Sony/i ? 65536 : 1024;
4699
4730
  if ($raf->Read($buff, $scanLen) and ($buff =~ /\xff\xd8\xff./g or
4700
- ($self->{Make} =~ /(Minolta|Sony)/i and $buff =~ /.\xd8\xff\xdb/g)))
4731
+ ($$self{Make} =~ /(Minolta|Sony)/i and $buff =~ /.\xd8\xff\xdb/g)))
4701
4732
  {
4702
4733
  # adjust PreviewImageStart to this location
4703
4734
  my $actual = $pos + pos($buff) - 4;
@@ -4705,7 +4736,7 @@ sub ProcessJPEG($$)
4705
4736
  print $out "(Fixed PreviewImage location: $start -> $actual)\n";
4706
4737
  }
4707
4738
  # update preview image offsets
4708
- $self->{VALUE}{PreviewImageStart} = $actual if $self->{VALUE}{PreviewImageStart};
4739
+ $$self{VALUE}{PreviewImageStart} = $actual if $$self{VALUE}{PreviewImageStart};
4709
4740
  $$self{PreviewImageStart} = $actual;
4710
4741
  # load preview now if we tried and failed earlier
4711
4742
  if ($$self{PreviewError} and $$self{PreviewImageLength}) {
@@ -4799,7 +4830,7 @@ sub ProcessJPEG($$)
4799
4830
  # because we aren't checking the RequestAll API option here.
4800
4831
  # The reason is that there is too much overhead involved in
4801
4832
  # the calculation of this tag to make this worth the CPU time.)
4802
- $self->{REQ_TAG_LOOKUP}{jpegdigest})
4833
+ $$self{REQ_TAG_LOOKUP}{jpegdigest})
4803
4834
  {
4804
4835
  my $num = unpack('C',$$segDataPt) & 0x0f; # get table index
4805
4836
  $dqt[$num] = $$segDataPt if $num < 4; # save for MD5 calculation
@@ -4836,12 +4867,12 @@ sub ProcessJPEG($$)
4836
4867
  next if $fast and $fast > 1; # skip processing for very fast
4837
4868
  $dumpType = 'CIFF';
4838
4869
  my %dirInfo = ( RAF => new File::RandomAccess($segDataPt) );
4839
- $self->{SET_GROUP1} = 'CIFF';
4840
- push @{$self->{PATH}}, 'CIFF';
4870
+ $$self{SET_GROUP1} = 'CIFF';
4871
+ push @{$$self{PATH}}, 'CIFF';
4841
4872
  require Image::ExifTool::CanonRaw;
4842
4873
  Image::ExifTool::CanonRaw::ProcessCRW($self, \%dirInfo);
4843
- pop @{$self->{PATH}};
4844
- delete $self->{SET_GROUP1};
4874
+ pop @{$$self{PATH}};
4875
+ delete $$self{SET_GROUP1};
4845
4876
  } elsif ($$segDataPt =~ /^(AVI1|Ocad)/) {
4846
4877
  $dumpType = $1;
4847
4878
  SetByteOrder('MM');
@@ -4892,10 +4923,10 @@ sub ProcessJPEG($$)
4892
4923
  $plen = $$self{PreviewImageLength};
4893
4924
  }
4894
4925
  if ($start and $plen and IsInt($start) and IsInt($plen) and
4895
- $start + $plen > $self->{EXIF_POS} + length($self->{EXIF_DATA}) and
4896
- ($self->{REQ_TAG_LOOKUP}{previewimage} or
4926
+ $start + $plen > $$self{EXIF_POS} + length($$self{EXIF_DATA}) and
4927
+ ($$self{REQ_TAG_LOOKUP}{previewimage} or
4897
4928
  # (extracted normally, so check Binary option)
4898
- ($self->{OPTIONS}{Binary} and not $self->{EXCL_TAG_LOOKUP}{previewimage})))
4929
+ ($$self{OPTIONS}{Binary} and not $$self{EXCL_TAG_LOOKUP}{previewimage})))
4899
4930
  {
4900
4931
  $$self{PreviewImageStart} = $start;
4901
4932
  $$self{PreviewImageLength} = $plen;
@@ -5248,8 +5279,29 @@ sub ProcessJPEG($$)
5248
5279
  );
5249
5280
  $self->ProcessDirectory(\%dirInfo, $tagTablePtr);
5250
5281
  }
5251
- } elsif ($marker == 0xe7) { # APP7 (Qualcomm)
5252
- if ($$segDataPt =~ /^\x1aQualcomm Camera Attributes/) {
5282
+ } elsif ($marker == 0xe7) { # APP7 (Pentax, Qualcomm)
5283
+ if ($$segDataPt =~ /^PENTAX \0(II|MM)/) {
5284
+ # found in K-3 images (is this multi-segment??)
5285
+ SetByteOrder($1);
5286
+ undef $dumpType; # (dump this ourself)
5287
+ my $hdrLen = 10;
5288
+ my $tagTablePtr = GetTagTable('Image::ExifTool::Pentax::Main');
5289
+ my %dirInfo = (
5290
+ Parent => $markerName,
5291
+ DataPt => $segDataPt,
5292
+ DataLen => $length,
5293
+ DataPos => 0, # (remember: relative to Base!)
5294
+ DirStart => $hdrLen,
5295
+ Base => $segPos,
5296
+ DirName => 'Pentax APP7',
5297
+ );
5298
+ if ($htmlDump) {
5299
+ $self->HDump($segPos-4, 4, 'APP7 header', "Data size: $length bytes");
5300
+ $self->HDump($segPos, $hdrLen, 'Pentax header', 'APP7 data type: Pentax');
5301
+ $dumpEnd = $segPos + $length;
5302
+ }
5303
+ $self->ProcessDirectory(\%dirInfo, $tagTablePtr);
5304
+ } elsif ($$segDataPt =~ /^\x1aQualcomm Camera Attributes/) {
5253
5305
  # found in HP iPAQ_VoiceMessenger
5254
5306
  $dumpType = 'Qualcomm';
5255
5307
  my $tagTablePtr = GetTagTable('Image::ExifTool::Qualcomm::Main');
@@ -5386,7 +5438,7 @@ sub ProcessJPEG($$)
5386
5438
  undef $dumpType; # only dump unknown APP segments
5387
5439
  }
5388
5440
  if (defined $dumpType) {
5389
- if (not $dumpType and $self->{OPTIONS}{Unknown}) {
5441
+ if (not $dumpType and $$self{OPTIONS}{Unknown}) {
5390
5442
  $self->Warn("Unknown $markerName segment", 1);
5391
5443
  }
5392
5444
  if ($htmlDump) {
@@ -5454,7 +5506,7 @@ sub DoProcessTIFF($$;$)
5454
5506
  my ($err, $canonSig, $otherSig);
5455
5507
 
5456
5508
  # attempt to read TIFF header
5457
- $self->{EXIF_DATA} = '';
5509
+ $$self{EXIF_DATA} = '';
5458
5510
  if ($raf) {
5459
5511
  if ($outfile) {
5460
5512
  $raf->Seek(0, 0) or return 0;
@@ -5467,17 +5519,17 @@ sub DoProcessTIFF($$;$)
5467
5519
  }
5468
5520
  # extract full EXIF block (for block copy) from EXIF file
5469
5521
  my $amount = $fileType eq 'EXIF' ? 65536 * 8 : 8;
5470
- my $n = $raf->Read($self->{EXIF_DATA}, $amount);
5522
+ my $n = $raf->Read($$self{EXIF_DATA}, $amount);
5471
5523
  if ($n < 8) {
5472
5524
  return 0 if $n or not $outfile or $fileType ne 'EXIF';
5473
5525
  # create EXIF file from scratch
5474
- delete $self->{EXIF_DATA};
5526
+ delete $$self{EXIF_DATA};
5475
5527
  undef $raf;
5476
5528
  }
5477
5529
  if ($n > 8) {
5478
5530
  $raf->Seek(8, 0);
5479
5531
  if ($n == $amount) {
5480
- $self->{EXIF_DATA} = substr($self->{EXIF_DATA}, 0, 8);
5532
+ $$self{EXIF_DATA} = substr($$self{EXIF_DATA}, 0, 8);
5481
5533
  $self->Warn('EXIF too large to extract as a block'); #(shouldn't happen)
5482
5534
  }
5483
5535
  }
@@ -5485,24 +5537,24 @@ sub DoProcessTIFF($$;$)
5485
5537
  # save a copy of the EXIF data
5486
5538
  my $dirStart = $$dirInfo{DirStart} || 0;
5487
5539
  my $dirLen = $$dirInfo{DirLen} || (length($$dataPt) - $dirStart);
5488
- $self->{EXIF_DATA} = substr($$dataPt, $dirStart, $dirLen);
5489
- $self->VerboseDir('TIFF') if $self->{OPTIONS}{Verbose} and length($$self{INDENT}) > 2;
5540
+ $$self{EXIF_DATA} = substr($$dataPt, $dirStart, $dirLen);
5541
+ $self->VerboseDir('TIFF') if $$self{OPTIONS}{Verbose} and length($$self{INDENT}) > 2;
5490
5542
  } elsif ($outfile) {
5491
- delete $self->{EXIF_DATA}; # create from scratch
5543
+ delete $$self{EXIF_DATA}; # create from scratch
5492
5544
  } else {
5493
- $self->{EXIF_DATA} = '';
5545
+ $$self{EXIF_DATA} = '';
5494
5546
  }
5495
- unless (defined $self->{EXIF_DATA}) {
5547
+ unless (defined $$self{EXIF_DATA}) {
5496
5548
  # create TIFF information from scratch
5497
5549
  if ($self->SetPreferredByteOrder() eq 'MM') {
5498
- $self->{EXIF_DATA} = "MM\0\x2a\0\0\0\x08";
5550
+ $$self{EXIF_DATA} = "MM\0\x2a\0\0\0\x08";
5499
5551
  } else {
5500
- $self->{EXIF_DATA} = "II\x2a\0\x08\0\0\0";
5552
+ $$self{EXIF_DATA} = "II\x2a\0\x08\0\0\0";
5501
5553
  }
5502
5554
  }
5503
5555
  $$self{FIRST_EXIF_POS} = $base + $$self{BASE} unless defined $$self{FIRST_EXIF_POS};
5504
5556
  $$self{EXIF_POS} = $base + $$self{BASE};
5505
- $dataPt = \$self->{EXIF_DATA};
5557
+ $dataPt = \$$self{EXIF_DATA};
5506
5558
 
5507
5559
  # set byte ordering
5508
5560
  my $byteOrder = substr($$dataPt,0,2);
@@ -5527,7 +5579,7 @@ sub DoProcessTIFF($$;$)
5527
5579
  $$dataPt .= $canonSig;
5528
5580
  if ($canonSig =~ /^(CR\x02\0|\xba\xb0\xac\xbb)/) {
5529
5581
  $fileType = $canonSig =~ /^CR/ ? 'CR2' : 'Canon 1D RAW';
5530
- $self->HDump($base+8, 8, "[$fileType header]") if $self->{HTML_DUMP};
5582
+ $self->HDump($base+8, 8, "[$fileType header]") if $$self{HTML_DUMP};
5531
5583
  } else {
5532
5584
  undef $canonSig;
5533
5585
  }
@@ -5567,7 +5619,7 @@ sub DoProcessTIFF($$;$)
5567
5619
  }
5568
5620
  }
5569
5621
  # we have a valid TIFF (or whatever) file
5570
- if ($fileType and not $self->{VALUE}{FileType}) {
5622
+ if ($fileType and not $$self{VALUE}{FileType}) {
5571
5623
  my $lookup = $fileTypeLookup{$fileType};
5572
5624
  $lookup = $fileTypeLookup{$lookup} unless ref $lookup or not $lookup;
5573
5625
  # use file extension to pre-determine type if extension is TIFF-based or type is RAW
@@ -5582,13 +5634,13 @@ sub DoProcessTIFF($$;$)
5582
5634
  } else {
5583
5635
  $ifdName = $$tagTablePtr{GROUPS}{1};
5584
5636
  }
5585
- if ($self->{HTML_DUMP}) {
5637
+ if ($$self{HTML_DUMP}) {
5586
5638
  my $tip = sprintf("Byte order: %s endian\nIdentifier: 0x%.4x\n$ifdName offset: 0x%.4x",
5587
5639
  ($byteOrder eq 'II') ? 'Little' : 'Big', $identifier, $offset);
5588
5640
  $self->HDump($base, 8, 'TIFF header', $tip, 0);
5589
5641
  }
5590
5642
  # remember where we found the TIFF data (APP1, APP3, TIFF, NEF, etc...)
5591
- $self->{TIFF_TYPE} = $fileType;
5643
+ $$self{TIFF_TYPE} = $fileType;
5592
5644
 
5593
5645
  # get reference to the main EXIF table
5594
5646
  $tagTablePtr or $tagTablePtr = GetTagTable('Image::ExifTool::Exif::Main');
@@ -5613,7 +5665,7 @@ sub DoProcessTIFF($$;$)
5613
5665
  # process the directory
5614
5666
  $self->ProcessDirectory(\%dirInfo, $tagTablePtr);
5615
5667
  # process GeoTiff information if available
5616
- if ($self->{VALUE}{GeoTiffDirectory}) {
5668
+ if ($$self{VALUE}{GeoTiffDirectory}) {
5617
5669
  require Image::ExifTool::GeoTiff;
5618
5670
  Image::ExifTool::GeoTiff::ProcessGeoTiff($self);
5619
5671
  }
@@ -5634,7 +5686,7 @@ sub DoProcessTIFF($$;$)
5634
5686
  }
5635
5687
  }
5636
5688
  # update FileType if necessary now that we know more about the file
5637
- if ($$self{DNGVersion} and $self->{VALUE}{FileType} ne 'DNG') {
5689
+ if ($$self{DNGVersion} and $$self{VALUE}{FileType} ne 'DNG') {
5638
5690
  # override whatever FileType we set since we now know it is DNG
5639
5691
  $self->OverrideFileType('DNG');
5640
5692
  }
@@ -5644,10 +5696,10 @@ sub DoProcessTIFF($$;$)
5644
5696
  # rewrite the image
5645
5697
  #
5646
5698
  if ($$dirInfo{NoTiffEnd}) {
5647
- delete $self->{TIFF_END};
5699
+ delete $$self{TIFF_END};
5648
5700
  } else {
5649
5701
  # initialize TIFF_END so it will be updated by WriteExif()
5650
- $self->{TIFF_END} = 0;
5702
+ $$self{TIFF_END} = 0;
5651
5703
  }
5652
5704
  if ($canonSig) {
5653
5705
  # write Canon CR2 specially because it has a header we want to preserve,
@@ -5697,8 +5749,8 @@ sub DoProcessTIFF($$;$)
5697
5749
  }
5698
5750
  }
5699
5751
  # make local copy of TIFF_END now (it may be reset when processing trailers)
5700
- my $tiffEnd = $self->{TIFF_END};
5701
- delete $self->{TIFF_END};
5752
+ my $tiffEnd = $$self{TIFF_END};
5753
+ delete $$self{TIFF_END};
5702
5754
 
5703
5755
  # rewrite trailers if they exist
5704
5756
  if ($raf and $tiffEnd and not $err) {
@@ -5732,9 +5784,9 @@ sub DoProcessTIFF($$;$)
5732
5784
  }
5733
5785
  if ($extra > 0) {
5734
5786
  my $known = $$self{KnownTrailer};
5735
- if ($self->{DEL_GROUP}{Trailer} and not $known) {
5787
+ if ($$self{DEL_GROUP}{Trailer} and not $known) {
5736
5788
  $self->VPrint(0, " Deleting unknown trailer ($extra bytes)\n");
5737
- ++$self->{CHANGED};
5789
+ ++$$self{CHANGED};
5738
5790
  } elsif ($known) {
5739
5791
  $self->VPrint(0, " Copying $$known{Name} ($extra bytes)\n");
5740
5792
  $raf->Seek($tiffEnd, 0) or $err = 1;
@@ -5913,26 +5965,26 @@ sub ProcessDirectory($$$;$)
5913
5965
  ($$dirInfo{DirLen} or not defined $$dirInfo{DirLen}))
5914
5966
  {
5915
5967
  my $addr = $$dirInfo{DirStart} + $$dirInfo{DataPos} + ($$dirInfo{Base}||0);
5916
- if ($self->{PROCESSED}{$addr}) {
5917
- $self->Warn("$dirName pointer references previous $self->{PROCESSED}{$addr} directory");
5968
+ if ($$self{PROCESSED}{$addr}) {
5969
+ $self->Warn("$dirName pointer references previous $$self{PROCESSED}{$addr} directory");
5918
5970
  return 0;
5919
5971
  }
5920
- $self->{PROCESSED}{$addr} = $dirName;
5972
+ $$self{PROCESSED}{$addr} = $dirName;
5921
5973
  }
5922
5974
  my $oldOrder = GetByteOrder();
5923
- my $oldIndent = $self->{INDENT};
5924
- my $oldDir = $self->{DIR_NAME};
5925
- $self->{LIST_TAGS} = { }; # don't build lists across different directories
5926
- $self->{INDENT} .= '| ';
5927
- $self->{DIR_NAME} = $dirName;
5928
- push @{$self->{PATH}}, $dirName;
5975
+ my $oldIndent = $$self{INDENT};
5976
+ my $oldDir = $$self{DIR_NAME};
5977
+ $$self{LIST_TAGS} = { }; # don't build lists across different directories
5978
+ $$self{INDENT} .= '| ';
5979
+ $$self{DIR_NAME} = $dirName;
5980
+ push @{$$self{PATH}}, $dirName;
5929
5981
 
5930
5982
  # process the directory
5931
5983
  my $rtnVal = &$proc($self, $dirInfo, $tagTablePtr);
5932
5984
 
5933
- pop @{$self->{PATH}};
5934
- $self->{INDENT} = $oldIndent;
5935
- $self->{DIR_NAME} = $oldDir;
5985
+ pop @{$$self{PATH}};
5986
+ $$self{INDENT} = $oldIndent;
5987
+ $$self{DIR_NAME} = $oldDir;
5936
5988
  SetByteOrder($oldOrder);
5937
5989
  return $rtnVal;
5938
5990
  }
@@ -6074,8 +6126,8 @@ sub AddTagToTable($$;$$)
6074
6126
  if ($$tagInfo{Groups}) {
6075
6127
  # fill in default groups from table GROUPS
6076
6128
  foreach (keys %{$$tagTablePtr{GROUPS}}) {
6077
- next if $tagInfo->{Groups}{$_};
6078
- $tagInfo->{Groups}{$_} = $tagTablePtr->{GROUPS}{$_};
6129
+ next if $$tagInfo{Groups}{$_};
6130
+ $$tagInfo{Groups}{$_} = $$tagTablePtr{GROUPS}{$_};
6079
6131
  }
6080
6132
  } else {
6081
6133
  $$tagInfo{Groups} = { %{$$tagTablePtr{GROUPS}} };
@@ -6122,7 +6174,7 @@ sub AddTagToTable($$;$$)
6122
6174
  sub HandleTag($$$$;%)
6123
6175
  {
6124
6176
  my ($self, $tagTablePtr, $tag, $val, %parms) = @_;
6125
- my $verbose = $self->{OPTIONS}{Verbose};
6177
+ my $verbose = $$self{OPTIONS}{Verbose};
6126
6178
  my $tagInfo = $parms{TagInfo} || $self->GetTagInfo($tagTablePtr, $tag, \$val);
6127
6179
  my $dataPt = $parms{DataPt};
6128
6180
  my ($subdir, $format, $count, $size, $noTagInfo, $rational);
@@ -6228,15 +6280,15 @@ sub FoundTag($$$)
6228
6280
  # make temporary hash if tag doesn't exist in Extra
6229
6281
  # (not advised to do this since the tag won't show in list)
6230
6282
  $tagInfo or $tagInfo = { Name => $tag, Groups => \%allGroupsExifTool };
6231
- $self->{OPTIONS}{Verbose} and $self->VerboseInfo(undef, $tagInfo, Value => $value);
6283
+ $$self{OPTIONS}{Verbose} and $self->VerboseInfo(undef, $tagInfo, Value => $value);
6232
6284
  }
6233
6285
  # get tag priority
6234
6286
  my $priority = $$tagInfo{Priority};
6235
6287
  unless (defined $priority) {
6236
- $priority = $tagInfo->{Table}{PRIORITY};
6288
+ $priority = $$tagInfo{Table}{PRIORITY};
6237
6289
  $priority = 0 if not defined $priority and $$tagInfo{Avoid};
6238
6290
  }
6239
- my $valueHash = $self->{VALUE};
6291
+ my $valueHash = $$self{VALUE};
6240
6292
  if ($$tagInfo{RawConv}) {
6241
6293
  # initialize @val for use in Composite RawConv expressions
6242
6294
  my @val;
@@ -6261,14 +6313,14 @@ sub FoundTag($$$)
6261
6313
  # handle duplicate tag names
6262
6314
  if (defined $$valueHash{$tag}) {
6263
6315
  # add to list if there is an active list for this tag
6264
- if ($self->{LIST_TAGS}{$tagInfo}) {
6265
- $tag = $self->{LIST_TAGS}{$tagInfo}; # use key from previous list tag
6316
+ if ($$self{LIST_TAGS}{$tagInfo}) {
6317
+ $tag = $$self{LIST_TAGS}{$tagInfo}; # use key from previous list tag
6266
6318
  if (defined $$self{NO_LIST}) {
6267
6319
  # accumulate list in TAG_EXTRA "NoList" element
6268
- if (defined $self->{TAG_EXTRA}{$tag}{NoList}) {
6269
- push @{$self->{TAG_EXTRA}{$tag}{NoList}}, $value;
6320
+ if (defined $$self{TAG_EXTRA}{$tag}{NoList}) {
6321
+ push @{$$self{TAG_EXTRA}{$tag}{NoList}}, $value;
6270
6322
  } else {
6271
- $self->{TAG_EXTRA}{$tag}{NoList} = [ $$valueHash{$tag}, $value ];
6323
+ $$self{TAG_EXTRA}{$tag}{NoList} = [ $$valueHash{$tag}, $value ];
6272
6324
  }
6273
6325
  $noListDel = 1; # set flag to delete this tag if re-listed
6274
6326
  } else {
@@ -6280,17 +6332,17 @@ sub FoundTag($$$)
6280
6332
  }
6281
6333
  }
6282
6334
  # get next available tag key
6283
- my $nextInd = $self->{DUPL_TAG}{$tag} = ($self->{DUPL_TAG}{$tag} || 0) + 1;
6335
+ my $nextInd = $$self{DUPL_TAG}{$tag} = ($$self{DUPL_TAG}{$tag} || 0) + 1;
6284
6336
  my $nextTag = "$tag ($nextInd)";
6285
6337
  #
6286
6338
  # take tag with highest priority
6287
6339
  #
6288
6340
  # promote existing 0-priority tag so it takes precedence over a new 0-tag
6289
6341
  # (unless old tag was a sub-document and new tag isn't)
6290
- my $oldPriority = $self->{PRIORITY}{$tag};
6342
+ my $oldPriority = $$self{PRIORITY}{$tag};
6291
6343
  unless ($oldPriority) {
6292
- if ($self->{DOC_NUM} or not $self->{TAG_EXTRA}{$tag} or
6293
- not $self->{TAG_EXTRA}{$tag}{G3})
6344
+ if ($$self{DOC_NUM} or not $$self{TAG_EXTRA}{$tag} or
6345
+ not $$self{TAG_EXTRA}{$tag}{G3})
6294
6346
  {
6295
6347
  $oldPriority = 1;
6296
6348
  } else {
@@ -6307,55 +6359,55 @@ sub FoundTag($$$)
6307
6359
  } else {
6308
6360
  $priority = 1; # the normal default
6309
6361
  }
6310
- if ($priority >= $oldPriority and not $self->{DOC_NUM} and not $noListDel) {
6362
+ if ($priority >= $oldPriority and not $$self{DOC_NUM} and not $noListDel) {
6311
6363
  # move existing tag out of the way since this tag is higher priority
6312
6364
  # (NOTE: any new members added here must also be added to DeleteTag())
6313
- $self->{MOVED_KEY} = $nextTag; # used in BuildCompositeTags()
6314
- $self->{PRIORITY}{$nextTag} = $self->{PRIORITY}{$tag};
6365
+ $$self{MOVED_KEY} = $nextTag; # used in BuildCompositeTags()
6366
+ $$self{PRIORITY}{$nextTag} = $$self{PRIORITY}{$tag};
6315
6367
  $$valueHash{$nextTag} = $$valueHash{$tag};
6316
- $self->{FILE_ORDER}{$nextTag} = $self->{FILE_ORDER}{$tag};
6317
- my $oldInfo = $self->{TAG_INFO}{$nextTag} = $self->{TAG_INFO}{$tag};
6368
+ $$self{FILE_ORDER}{$nextTag} = $$self{FILE_ORDER}{$tag};
6369
+ my $oldInfo = $$self{TAG_INFO}{$nextTag} = $$self{TAG_INFO}{$tag};
6318
6370
  foreach ('TAG_EXTRA','RATIONAL') {
6319
- if ($self->{$_}{$tag}) {
6320
- $self->{$_}{$nextTag} = $self->{$_}{$tag};
6321
- delete $self->{$_}{$tag};
6371
+ if ($$self{$_}{$tag}) {
6372
+ $$self{$_}{$nextTag} = $$self{$_}{$tag};
6373
+ delete $$self{$_}{$tag};
6322
6374
  }
6323
6375
  }
6324
- delete $self->{BOTH}{$tag};
6376
+ delete $$self{BOTH}{$tag};
6325
6377
  # update tag key for list if necessary
6326
- $self->{LIST_TAGS}{$oldInfo} = $nextTag if $self->{LIST_TAGS}{$oldInfo};
6378
+ $$self{LIST_TAGS}{$oldInfo} = $nextTag if $$self{LIST_TAGS}{$oldInfo};
6327
6379
  } else {
6328
6380
  $tag = $nextTag; # don't override the existing tag
6329
6381
  }
6330
- $self->{PRIORITY}{$tag} = $priority;
6331
- $self->{TAG_EXTRA}{$tag}{NoListDel} = 1 if $noListDel;
6382
+ $$self{PRIORITY}{$tag} = $priority;
6383
+ $$self{TAG_EXTRA}{$tag}{NoListDel} = 1 if $noListDel;
6332
6384
  } elsif ($priority) {
6333
6385
  # set tag priority (only if exists and is non-zero)
6334
- $self->{PRIORITY}{$tag} = $priority;
6386
+ $$self{PRIORITY}{$tag} = $priority;
6335
6387
  }
6336
6388
 
6337
6389
  # save the raw value, file order, tagInfo ref, group1 name,
6338
6390
  # and tag key for lists if necessary
6339
6391
  $$valueHash{$tag} = $value;
6340
- $self->{FILE_ORDER}{$tag} = ++$self->{NUM_FOUND};
6341
- $self->{TAG_INFO}{$tag} = $tagInfo;
6392
+ $$self{FILE_ORDER}{$tag} = ++$$self{NUM_FOUND};
6393
+ $$self{TAG_INFO}{$tag} = $tagInfo;
6342
6394
  # set dynamic groups 0, 1 and 3 if necessary
6343
- $self->{TAG_EXTRA}{$tag}{G0} = $self->{SET_GROUP0} if $self->{SET_GROUP0};
6344
- $self->{TAG_EXTRA}{$tag}{G1} = $self->{SET_GROUP1} if $self->{SET_GROUP1};
6345
- if ($self->{DOC_NUM}) {
6346
- $self->{TAG_EXTRA}{$tag}{G3} = $self->{DOC_NUM};
6347
- if ($self->{DOC_NUM} =~ /^(\d+)/) {
6395
+ $$self{TAG_EXTRA}{$tag}{G0} = $$self{SET_GROUP0} if $$self{SET_GROUP0};
6396
+ $$self{TAG_EXTRA}{$tag}{G1} = $$self{SET_GROUP1} if $$self{SET_GROUP1};
6397
+ if ($$self{DOC_NUM}) {
6398
+ $$self{TAG_EXTRA}{$tag}{G3} = $$self{DOC_NUM};
6399
+ if ($$self{DOC_NUM} =~ /^(\d+)/) {
6348
6400
  # keep track of maximum 1st-level sub-document number
6349
- $self->{DOC_COUNT} = $1 unless $self->{DOC_COUNT} >= $1;
6401
+ $$self{DOC_COUNT} = $1 unless $$self{DOC_COUNT} >= $1;
6350
6402
  }
6351
6403
  }
6352
6404
  # save path if requested
6353
- $self->{TAG_EXTRA}{$tag}{G5} = $self->MetadataPath() if $self->{OPTIONS}{SavePath};
6405
+ $$self{TAG_EXTRA}{$tag}{G5} = $self->MetadataPath() if $$self{OPTIONS}{SavePath};
6354
6406
 
6355
6407
  # remember this tagInfo if we will be accumulating values in a list
6356
6408
  # (but don't override earlier list if this may be deleted by NoListDel flag)
6357
6409
  if ($$tagInfo{List} and not $$self{NO_LIST} and not $noListDel) {
6358
- $self->{LIST_TAGS}{$tagInfo} = $tag;
6410
+ $$self{LIST_TAGS}{$tagInfo} = $tag;
6359
6411
  }
6360
6412
 
6361
6413
  return $tag;
@@ -6367,7 +6419,7 @@ sub FoundTag($$$)
6367
6419
  sub SetPriorityDir($)
6368
6420
  {
6369
6421
  my $self = shift;
6370
- $self->{PRIORITY_DIR} = $self->{DIR_NAME} unless $self->{PRIORITY_DIR};
6422
+ $$self{PRIORITY_DIR} = $$self{DIR_NAME} unless $$self{PRIORITY_DIR};
6371
6423
  }
6372
6424
 
6373
6425
  #------------------------------------------------------------------------------
@@ -6376,7 +6428,7 @@ sub SetPriorityDir($)
6376
6428
  sub SetGroup($$$;$)
6377
6429
  {
6378
6430
  my ($self, $tagKey, $extra, $fam) = @_;
6379
- $self->{TAG_EXTRA}{$tagKey}{defined $fam ? "G$fam" : 'G1'} = $extra;
6431
+ $$self{TAG_EXTRA}{$tagKey}{defined $fam ? "G$fam" : 'G1'} = $extra;
6380
6432
  }
6381
6433
 
6382
6434
  #------------------------------------------------------------------------------
@@ -6385,13 +6437,13 @@ sub SetGroup($$$;$)
6385
6437
  sub DeleteTag($$)
6386
6438
  {
6387
6439
  my ($self, $tag) = @_;
6388
- delete $self->{VALUE}{$tag};
6389
- delete $self->{FILE_ORDER}{$tag};
6390
- delete $self->{TAG_INFO}{$tag};
6391
- delete $self->{TAG_EXTRA}{$tag};
6392
- delete $self->{PRIORITY}{$tag};
6393
- delete $self->{RATIONAL}{$tag};
6394
- delete $self->{BOTH}{$tag};
6440
+ delete $$self{VALUE}{$tag};
6441
+ delete $$self{FILE_ORDER}{$tag};
6442
+ delete $$self{TAG_INFO}{$tag};
6443
+ delete $$self{TAG_EXTRA}{$tag};
6444
+ delete $$self{PRIORITY}{$tag};
6445
+ delete $$self{RATIONAL}{$tag};
6446
+ delete $$self{BOTH}{$tag};
6395
6447
  }
6396
6448
 
6397
6449
  #------------------------------------------------------------------------------
@@ -6422,8 +6474,8 @@ sub DoEscape($$)
6422
6474
  sub SetFileType($;$$)
6423
6475
  {
6424
6476
  my ($self, $fileType, $mimeType) = @_;
6425
- unless ($self->{VALUE}{FileType} and not $$self{DOC_NUM}) {
6426
- my $baseType = $self->{FILE_TYPE};
6477
+ unless ($$self{VALUE}{FileType} and not $$self{DOC_NUM}) {
6478
+ my $baseType = $$self{FILE_TYPE};
6427
6479
  $fileType or $fileType = $baseType;
6428
6480
  $mimeType or $mimeType = $mimeType{$fileType};
6429
6481
  # use base file type if necessary (except if 'TIFF', which is a special case)
@@ -6459,12 +6511,12 @@ sub ModifyMimeType($;$)
6459
6511
  {
6460
6512
  my ($self, $mime) = @_;
6461
6513
  $mime =~ m{/} or $mime = $mimeType{$mime} or return;
6462
- my $old = $self->{VALUE}{MIMEType};
6514
+ my $old = $$self{VALUE}{MIMEType};
6463
6515
  if (defined $old) {
6464
6516
  my ($a, $b) = split '/', $old;
6465
6517
  my ($c, $d) = split '/', $mime;
6466
6518
  $d =~ s/^x-//;
6467
- $self->{VALUE}{MIMEType} = "$c/$b-$d";
6519
+ $$self{VALUE}{MIMEType} = "$c/$b-$d";
6468
6520
  $self->VPrint(0, " Modified MIMEType = $c/$b-$d\n");
6469
6521
  } else {
6470
6522
  $self->FoundTag('MIMEType', $mime);
@@ -6478,9 +6530,10 @@ sub VPrint($$@)
6478
6530
  {
6479
6531
  my $self = shift;
6480
6532
  my $level = shift;
6481
- if ($self->{OPTIONS}{Verbose} and $self->{OPTIONS}{Verbose} > $level) {
6482
- my $out = $self->{OPTIONS}{TextOut};
6533
+ if ($$self{OPTIONS}{Verbose} and $$self{OPTIONS}{Verbose} > $level) {
6534
+ my $out = $$self{OPTIONS}{TextOut};
6483
6535
  print $out @_;
6536
+ print $out "\n" unless $_[-1] =~ /\n$/;
6484
6537
  }
6485
6538
  }
6486
6539
 
@@ -6491,11 +6544,11 @@ sub VerboseDump($$;%)
6491
6544
  {
6492
6545
  my $self = shift;
6493
6546
  my $dataPt = shift;
6494
- if ($self->{OPTIONS}{Verbose} and $self->{OPTIONS}{Verbose} > 2) {
6547
+ if ($$self{OPTIONS}{Verbose} and $$self{OPTIONS}{Verbose} > 2) {
6495
6548
  my %parms = (
6496
- Prefix => $self->{INDENT},
6497
- Out => $self->{OPTIONS}{TextOut},
6498
- MaxLen => $self->{OPTIONS}{Verbose} < 4 ? 96 : undef,
6549
+ Prefix => $$self{INDENT},
6550
+ Out => $$self{OPTIONS}{TextOut},
6551
+ MaxLen => $$self{OPTIONS}{Verbose} < 4 ? 96 : undef,
6499
6552
  );
6500
6553
  HexDump($dataPt, undef, %parms, @_);
6501
6554
  }
@@ -6531,14 +6584,14 @@ sub ExtractBinary($$$;$)
6531
6584
  $isPreview = 1;
6532
6585
  }
6533
6586
  my $lcTag = lc $tag;
6534
- if ((not $self->{OPTIONS}{Binary} or $self->{EXCL_TAG_LOOKUP}{$lcTag}) and
6535
- not $self->{OPTIONS}{Verbose} and not $self->{REQ_TAG_LOOKUP}{$lcTag})
6587
+ if ((not $$self{OPTIONS}{Binary} or $$self{EXCL_TAG_LOOKUP}{$lcTag}) and
6588
+ not $$self{OPTIONS}{Verbose} and not $$self{REQ_TAG_LOOKUP}{$lcTag})
6536
6589
  {
6537
6590
  return "Binary data $length bytes";
6538
6591
  }
6539
6592
  }
6540
- unless ($self->{RAF}->Seek($offset,0)
6541
- and $self->{RAF}->Read($buff, $length) == $length)
6593
+ unless ($$self{RAF}->Seek($offset,0)
6594
+ and $$self{RAF}->Read($buff, $length) == $length)
6542
6595
  {
6543
6596
  $tag or $tag = 'binary data';
6544
6597
  if ($isPreview and not $$self{BuildingComposite}) {
@@ -6564,8 +6617,8 @@ sub ProcessBinaryData($$$)
6564
6617
  my $offset = $$dirInfo{DirStart} || 0;
6565
6618
  my $size = $$dirInfo{DirLen} || (length($$dataPt) - $offset);
6566
6619
  my $base = $$dirInfo{Base} || 0;
6567
- my $verbose = $self->{OPTIONS}{Verbose};
6568
- my $unknown = $self->{OPTIONS}{Unknown};
6620
+ my $verbose = $$self{OPTIONS}{Verbose};
6621
+ my $unknown = $$self{OPTIONS}{Unknown};
6569
6622
  my $dataPos = $$dirInfo{DataPos} || 0;
6570
6623
 
6571
6624
  # get default format ('int8u' unless specified)
@@ -6589,6 +6642,9 @@ sub ProcessBinaryData($$$)
6589
6642
  } elsif ($$dirInfo{DataMember}) {
6590
6643
  @tags = @{$$dirInfo{DataMember}};
6591
6644
  $verbose = 0; # no verbose output of extracted values when writing
6645
+ } elsif ($$dirInfo{MixedTags}) {
6646
+ # process sorted integer-ID tags only
6647
+ @tags = sort { $a <=> $b } grep /^\d+$/, TagTableKeys($tagTablePtr);
6592
6648
  } else {
6593
6649
  # extract known tags in numerical order
6594
6650
  @tags = sort { $a <=> $b } TagTableKeys($tagTablePtr);
@@ -6655,7 +6711,7 @@ sub ProcessBinaryData($$$)
6655
6711
  $wasVar = 1;
6656
6712
  # save variable size data if required for writing
6657
6713
  if ($$dirInfo{VarFormatData}) {
6658
- push @{$$dirInfo{VarFormatData}}, $index, $varSize;
6714
+ push @{$$dirInfo{VarFormatData}}, [ $index, $varSize, $format ];
6659
6715
  }
6660
6716
  }
6661
6717
  } elsif ($format =~ /^var_/) {
@@ -6692,7 +6748,7 @@ sub ProcessBinaryData($$$)
6692
6748
  $wasVar = 1;
6693
6749
  # save variable size data if required for writing
6694
6750
  if ($$dirInfo{VarFormatData}) {
6695
- push @{$$dirInfo{VarFormatData}}, $index, $varSize;
6751
+ push @{$$dirInfo{VarFormatData}}, [ $index, $varSize, $format ];
6696
6752
  }
6697
6753
  }
6698
6754
  }
@@ -6702,8 +6758,8 @@ sub ProcessBinaryData($$$)
6702
6758
  eval $$tagInfo{Hook};
6703
6759
  # save variable size data if required for writing (in case changed by Hook)
6704
6760
  if ($$dirInfo{VarFormatData}) {
6705
- $#{$$dirInfo{VarFormatData}} -= 2 if $wasVar; # remove previous entries for this tag
6706
- push @{$$dirInfo{VarFormatData}}, $index, $varSize;
6761
+ $#{$$dirInfo{VarFormatData}} -= 1 if $wasVar; # remove previous entry for this tag
6762
+ push @{$$dirInfo{VarFormatData}}, [ $index, $varSize, $format ];
6707
6763
  }
6708
6764
  }
6709
6765
  if ($unknown > 1) {
@@ -6774,8 +6830,8 @@ sub ProcessBinaryData($$$)
6774
6830
  next;
6775
6831
  }
6776
6832
  if ($$tagInfo{IsOffset} and $$tagInfo{IsOffset} ne '3') {
6777
- my $exifTool = $self;
6778
- #### eval IsOffset ($val, $exifTool)
6833
+ my $et = $self;
6834
+ #### eval IsOffset ($val, $et)
6779
6835
  $val += $base + $$self{BASE} if eval $$tagInfo{IsOffset};
6780
6836
  }
6781
6837
  $val{$index} = $val;