Combination of switches -v3 and -W+

Started by greybeard, October 30, 2024, 11:17:20 AM

Previous topic - Next topic

greybeard

This might be an obscure bug - I expect the use of -W+ to have the same effect as redirecting STDOUT to a file - but there appear to be some file types (an example is the Canon CR3) where this doesn't always happen in combination with the verbose switch (-v3).

Examples:

exiftool  -v3 IMG_0444.CR3  -W+ verbose.txt
gives the following output:

|  1d4ba06: 00 00 00 01 00 00                               [......]
|  1d4ba1e: 00 00 00 01 ff ff                               [......]
|  1d4ba2e: 00 00 00 01 ff ff                               [......]
|  1d4ba46: 00 00 00 01 ff ff                               [......]
|  1d4ba6e: 01 01 00 01 ff ff                               [......]
|  1d4d20a: 01 01 01 01 ff ff                               [......]
|  1d67340: 01 01 02 01 ff ff                               [......]
    0 output files created
    1 output files appended

Whereas:

exiftool  -v3 IMG_0444.CR3  > verbose1.txt
As expected this writes nothing at all to the display.

Running diff on the output files gives me:

2115a2116
> |  1d4ba06: 00 00 00 01 00 00                               [......]
2119a2121
> |  1d4ba1e: 00 00 00 01 ff ff                               [......]
2121a2124
> |  1d4ba2e: 00 00 00 01 ff ff                               [......]
2129a2133
> |  1d4ba46: 00 00 00 01 ff ff                               [......]
2144a2149
> |  1d4ba6e: 01 01 00 01 ff ff                               [......]
2602a2608
> |  1d4d20a: 01 01 01 01 ff ff                               [......]
2726a2733
> |  1d67340: 01 01 02 01 ff ff                               [......]

And using grep to locate the problem:

grep -C5 1d67340 verb*
verbose1.txt-| | | | + [BinaryData directory, 4608 bytes]
verbose1.txt-| | | | 3)  Canon_0x404b = 65535 65535
verbose1.txt-| | | |     - Tag 0x404b (4 bytes, int16u[2]):
verbose1.txt-| | | |      1d4d24e: ff ff ff ff                                     [....]
verbose1.txt-+ [CTMD type 9 directory, 4140 bytes]
verbose1.txt:|  1d67340: 01 01 02 01 ff ff                               [......]
verbose1.txt-| ExifInfo9 (SubDirectory) -->
verbose1.txt-| - Tag 0x0009 (4134 bytes):
verbose1.txt-|  1d67346: 26 10 00 00 7c 92 00 00 49 49 2a 00 08 00 00 00 [&...|...II*.....]
verbose1.txt-|  1d67356: 05 00 15 40 07 00 dc 05 00 00 46 00 00 00 33 40 [...@......F...3@]
verbose1.txt-|  1d67366: 07 00 20 03 00 00 22 06 00 00 2e 40 07 00 f4 01 [.. ..."....@....]

It seems to always be the line after the start of the CTMD directory that does not get written to the file.

Phil Harvey

Great, thanks!

This will be fixed in 13.01

There are a few other places for CBOR metadata where this was fixed too,

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).