#!/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
}

xfile()
{
	if sed 1q "$1" | 9 grep '^x T '
	then
		echo 'troff intermediate output'
	else
		file - < "$1"
	fi
}

main()
{
	case `uname` in
	Darwin)
		preview "$@"
		;;
	*)
		case "`xfile $1`" in
		*troff*)
			tr2post "$1" | psfonts | page
			;;
		*PDF*)
			psv $1
			;;
		*PS*)
			psv $1
			;;
		*PostScript*)
			psv $1
			;;
		*)
			qiv "$@"
			;;
		esac
		;;
	esac
}
	
case $# in
0)
	tmp=/var/tmp/page.$$.tmp
	cat >$tmp
	case "`xfile $tmp`" in
	*troff*)
		mv $tmp $tmp.tr
		tmp=$tmp.tr
		;;
	*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

