#!/bin/sh
# $Id: ps2epsi 6505 2006-01-27 21:58:27Z giles $

# This definition is changed on install to match the
# executable name set in the makefile
GS_EXECUTABLE=gs

# try to create a temporary file securely
tmpdir=/tmp/ps2epsi.$$
(umask 077 && mkdir $tmpdir)
if ! test -d $tmpdir; then
	echo "failed: could not create temporary file"
	exit 1
fi
tmpfile=$tmpdir/ps2epsi$$

export outfile

if [ $# -lt 1 -o $# -gt 2 ]; then
	echo "Usage: `basename $0` file.ps [file.epsi]" 1>&2
	exit 1
fi

infile=$1;

if [ $# -eq 1 ]
then
	case "${infile}" in
	  *.ps)		base=`basename "${infile}" .ps` ;;
	  *.cps)	base=`basename "${infile}" .cps` ;;
	  *.eps)	base=`basename "${infile}" .eps` ;;
	  *.epsf)	base=`basename "${infile}" .epsf` ;;
	  *)		base=`basename "${infile}"` ;;
	esac
	outfile=${base}.epsi
else
	outfile=$2
fi

ls -l "${infile}" |
awk 'F==1	{
		cd="%%CreationDate: " $6 " " $7 " " $8;
		t="%%Title: " $9;
		f="%%For:" U " " $3;
		c="%%Creator: Ghostscript ps2epsi from " $9;
		next;
		}
	/^%!/	{next;}
	/^%%Title:/	{t=$0; next;}
	/^%%Creator:/	{c=$0; next;}
	/^%%CreationDate:/	{cd=$0; next;}
	/^%%For:/	{f=$0; next;}
	!/^%/	{
		print "/ps2edict 30 dict def";
		print "ps2edict begin";
		print "/epsititle (" t "\\n) def";
		print "/epsicreator (" c "\\n) def";
		print "/epsicrdt (" cd "\\n) def";
		print "/epsifor (" f "\\n) def";
		print "end";
		exit(0);
		}
	' U="$USERNAME$LOGNAME"  F=1 - F=2 "${infile}" >$tmpfile

$GS_EXECUTABLE -q -dNOPAUSE -dSAFER -dDELAYSAFER -r72 -sDEVICE=bit -sOutputFile=/dev/null $tmpfile ps2epsi.ps $tmpfile <"${infile}" 1>&2
rm -f $tmpfile
rm -rf $tmpdir

(
cat << BEGINEPS
save countdictstack mark newpath /showpage {} def /setpagedevice {pop} def
%%EndProlog
%%Page 1 1
BEGINEPS

cat "${infile}" |
sed -e '/^%%BeginPreview:/,/^%%EndPreview[^!-~]*$/d' -e '/^%!PS-Adobe/d'\
	-e '/^%%[A-Za-z][A-Za-z]*[^!-~]*$/d' -e '/^%%[A-Za-z][A-Za-z]*: /d'

cat << ENDEPS
%%Trailer
cleartomark countdictstack exch sub { end } repeat restore
%%EOF
ENDEPS

) >> "${outfile}"

exit 0
