#!/bin/sh

# BUG - Should clean up $tmp but how to know when viewer is done?

preview()
{
	list=""
	pwd=`pwd`
	for i in "$@"
	do
		if [ -n "$list" ]
		then
			list="$list, "
		fi
		n=`cleanname -d $pwd $i | sed 's!/!:!g'`
		list="$list\"$n\""
	done
	# echo run $list
	echo 'tell application "Preview"
		activate
		open {'"$list"'}
	end tell' | osascript
}

main()
{
	case `uname` in
	Darwin)
		preview "$@"
		;;
	*)
		case "`file $1`" in
		*PDF*)
			psv $1
			;;
		*PS*)
			psv $1
			;;
		*PostScript*)
			psv $1
			;;
		*)
			qiv "$@"
			;;
		esac
		;;
	esac
}
	
case $# in
0)
	tmp=/var/tmp/page.$$.tmp
	cat >$tmp
	case "`file $tmp`" in
	*PDF*)
		mv $tmp $tmp.pdf
		tmp=$tmp.pdf
		;;
	*PS*)
		mv $tmp $tmp.ps
		tmp=$tmp.ps
		;;
	*PostScript*)
		mv $tmp $tmp.ps
		tmp=$tmp.ps
		;;
	*GIF*)
		mv $tmp $tmp.gif
		tmp=$tmp.gif
		;;
	*JPG*)
		mv $tmp $tmp.jpg
		tmp=$tmp.jpg
		;;
	*JPEG*)
		mv $tmp $tmp.jpg
		tmp=$tmp.jpg
		;;
	*PNG*)
		mv $tmp $tmp.png
		tmp=$tmp.png
		;;
	*)
		echo 1>&2 page: unrecognized file type on standard input
		rm -f $tmp
		exit 1
	esac
	main $tmp
	if [ `uname` != Darwin ]
	then
		rm -f $tmp
	fi
	;;
*)
	main "$@"
	;;
esac

