#!/bin/sh
#
# ps-pagenumbering
#
# Insert additional page numbers in PostScript documents.
#
# 10.04.1999: Winfried.Beer@dlr.de
#
 
# -- evaluate parameters --

startnr=1
files=""
pgfile=.pg.$$
trap 'rm -f $pgfile  ; exit 2' 1 2 3 15
linebreak=`dirname $0`/linebreak

while [ $# -gt 0 ]; do
  case "$1" in
  -startnr)	shift; startnr=$1; shift;;
  -*)		echo Wrong option \"$1\". >&2 ; exit 1;;
  *)		if [ ! -r "$1" ]; then
		  echo "$1" does not exist or ist not readable. >&2
		  exit 1;
                else
                  if [ "$files" = "" ]; then
		    files="$1"
		  else
		    files="$files $1"
		  fi
                fi
		shift
                ;;
  esac
done

if [ "$files" = "" ]; then
  echo 'usage: '`basename $0`' [-startnr n] file1.ps [file2.ps ...]' >&2
  exit 1
fi


# -- do the main work --

pg=$startnr
for f in $files ; do
  if [ `echo $f | sed -e 's/.gz$//'` != "$f" ]; then
    catin="gunzip -c"
    catout="gzip -c"
    outps=`echo $f | sed -e 's/.gz$//' -e 's/.ps$//'`-pg.ps.gz
catout="cat"
outps=`echo $f | sed -e 's/.gz$//' -e 's/.ps$//'`-pg.ps
  else
    catin=cat 
    catout=cat 
    outps=`echo $f | sed -e 's/.ps$//'`-pg.ps
  fi

  outps=`basename $outps`  # Pfad abschneiden
  echo "page $pg: $f -> $outps "
  touch $pgfile
  ( $catin $f | $linebreak | grep -v '%DLR-IPA-PSPGNR' | nawk -v pg=$pg '
  BEGIN{skip=0; printf "  working  ",pg >"/dev/stderr" ;}
  /^%%Page: 0 1/{skip=1; next;} # skip page 0
  /^%%Page: /{skip=0; print; 
    printf "%s","gsave 295 25 moveto /Times-Roman 11 selectfont ";
    printf "( %d ) show ", pg;
    printf "%s\n","grestore %DLR-IPA-PSPGNR";
    printf "..%d",pg >"/dev/stderr" ;
    pg++;
    next; }
  skip==1{next}
  /^userdict / {sub("sco .* rf ;","sco ;"); print; next;}
    {print}
  END{print pg>"'$pgfile'"}
   
  ' | $catout > $outps
  ) 2>&1
  pgn=`cat $pgfile`
  echo
  if [ "$pgn" -lt "$pg" ]; then
    echo "internal error." >&2
    exit 1
  fi
  pg=`expr $pgn / 2 \* 2 + 1`
done
echo last page: `expr $pg - 1`

rm $pgfile


