#!/bin/sh

# extract file name and arguments from command line. File name
# is supposed to be the last one, if it doesn't exist, then it
# is assumed to be another argument.
FILE=
ARGS=
GRAYSCALE=
for arg in "$@"; do
	if [ "$arg" = "-gray" ]; then
		GRAYSCALE=1
	else
		ARGS="$ARGS $FILE"
		FILE=$arg;
	fi
done

# we're reading from STDIN, store it into a temporary file
temp=0
if test -z "$FILE" -o ! -f "$FILE" ; then
	ARGS="$ARGS $FILE"
	FILE=`mktemp /tmp/imagetops.XXXXXX` || exit 1
	cat > "$FILE"
	temp=1
fi

# check the file mime type, and set the command correspondingly
cmd=
magic=`file -bi "$FILE"`
magicbase=`echo $magic | cut -f 1 -d "/"`
magictype=`echo $magic | cut -f 2- -d "/"`
if test "$magicbase" != "image" ; then
	echo "Not an image"
	exit 1;
fi
case $magictype in
	jpeg)
		cmd="jpegtopnm"
		;;
	png|x-png)
		cmd="pngtopnm"
		;;
	bmp|x-bmp)
		cmd="bmptoppm"
		;;
	gif)
		cmd="giftopnm"
		;;
	tiff)
		cmd="tifftopnm"
		;;
	*)
		echo "Unsupported image type: $magic"
		exit 1
		;;

esac

# executing command
if [ "$GRAYSCALE" = "1" ]; then
	exec $cmd "$FILE" | ppmtopgm | pnmtops $ARGS
else
	exec $cmd "$FILE" | pnmtops $ARGS
fi

# removing temporary file
if test "$temp" = "1"; then
	rm -f "$FILE"
fi
