exiv2 version 0.18.2 fixed a bug related to symlinks, but the fix
introduced two more bugs.
exiv2 is designed to give the illusion of modifying a file in place, but
actually it creates the new file, removes the old file, and renames the
new file to the old name.
The old bug (already fixed): If the file was a symlink, it would become
a plain file, and the file it used to point to would be truncated.
First new bug: If the file is a relative symlink, exiv2 interprets it
relative to the current working directory, rather than relative to the
symlink, when deciding where to create the new file.
Second new bug: If the file is a symlink to another symlink, exiv2
follows only the first. If the first symlink is relative, the other bug
happens too, otherwise the second symlink gets replaced by a plain file.
The relative-symlink bug is very dangerous, because it can cause an
unrelated file to be removed. For example, given these files:
dir/bar.jpg --> foo.jpg
The command 'exiv2 <options> dir/foo.jpg' will unlink and replace
./foo.jpg, not dir/foo.jpg.
My workaround may provide a hint about how to fix this:
# Assume $@ contains all desired exiv2 options except the filename,
# which is in $file.
file=`readlink -e "$file"`
exiv2 "$@" "$file"
-- System Information:
Debian Release: 7.0
APT prefers testing
APT policy: (900, 'testing'), (800, 'stable'), (600, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 3.2.0-4-686-pae (SMP w/1 CPU core)
Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1)
Shell: /bin/sh linked to /bin/bash
Versions of packages exiv2 depends on:
ii libc6 2.13-38
ii libexiv2-12 0.23-1
ii libgcc1 1:4.7.2-5
ii libstdc++6 4.7.2-5
exiv2 recommends no packages.
exiv2 suggests no packages.
-- no debconf information
pkg-kde-extras mailing list