From 70521501abd15c606ff01c543c564e6343058720 Mon Sep 17 00:00:00 2001 From: Damien De Paoli Date: Wed, 3 Aug 2022 17:54:00 +1000 Subject: [PATCH] make pa_exifautotran be more specific - only "skip" the known SOS error, and dont touch file if the output of the rotate is 0 bytes -- JUST IN CASE --- utils/pa_exifautotran | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/utils/pa_exifautotran b/utils/pa_exifautotran index 30f2b5b..c5589e2 100755 --- a/utils/pa_exifautotran +++ b/utils/pa_exifautotran @@ -18,7 +18,7 @@ EOF exit 0;; esac - case $(exiftool -t -s -s -s -n -IFD0:Orientation -IFD1:Orientation "$i") in + case $(jpegexiforient "$i") in 1) transform="";; 2) transform="-flip horizontal";; 3) transform="-rotate 180";; @@ -32,9 +32,20 @@ EOF if test -n "$transform"; then echo Executing: jpegtran -copy all $transform "$i" >&2 - jpegtran -copy all $transform "$i" > tempfile - rm "$i" - mv tempfile "$i" - jpegexiforient -1 "$i" + jpegtran -copy all $transform "$i" > tempfile 2> err + ret=$? + err=`cat err` + if [ "$ret" = "2" ] && [ "$err" != "Invalid SOS parameters for sequential JPEG" ]; then + echo "$0: FAILED to rotate jpeg with unknown failure - dont change file" + rm err + rm tempfile + exit 1 + fi + # last sanity check - make sure tempfile is not empty + if [ -s tempfile ]; then + rm err + mv tempfile "$i" + jpegexiforient -1 "$i" > /dev/null + fi fi done