#!/bin/sh -e
#
# exifautotran [list of files]
#
# Transforms Exif files so that Orientation becomes 1

transform()
{
	local f="$1" && shift
	local t="$1" && shift
	local rc args

	rc="$(jpegexiforient -n "$f")" || return
	case "$rc" in
		2) args="-flip horizontal";;
		3) args="-rotate 180";;
		4) args="-flip vertical";;
		5) args="-transpose";;
		6) args="-rotate 90";;
		7) args="-transverse";;
		8) args="-rotate 270";;
		*) args="";;
	esac

	if [ -n "$args" ]; then
		jpegtran -copy all $args "$f" >"$t" || return
		jpegexiforient -1 "$t" || return
	else
		return 1
	fi
}

for f in "$@"; do
	if [ -L "$f" ]; then
		f=`realpath "$f"` || continue
	fi
	[ -n "${f##-*}" ] || continue
	t=`mktemp -- "$f.XXXXXXXX"` || continue
	cp -p -- "$f" "$t" &&
	transform "$f" "$t" &&
	mv -f -- "$t" "$f" ||
	{
		rm -f -- "$t"
		continue
	}
done

exit 0
