#!/bin/sh
# latex-watch -- Run latex whenever needed
#
# AUTHOR:	Gary T. Leavens

[ -n "$echo" ] && set -x

WAITTIMEINSECS=5
USAGE="$0 file.tex"

# only one argument allowed
if test $# -ne 1
then
	echo "$USAGE" >&2
	exit 1
fi

FILE="$1"

case "$FILE" in
    *.tex)
	BASENAME="`basename $FILE .tex`"
	SUFFIX=".tex"
	;;
    *.ltx)
	BASENAME="`basename $FILE .ltx`"
	SUFFIX=".ltx"
	;;
    -*)
	echo "$USAGE" >&2
	exit 1
esac

LAST=""
FIRSTTIME='true'

XDVIPROCESS=""

trap 'kill $XDVIPROCESS; rm -f ${BASENAME}.aux.bak' 0

while true
do
  if test "$LAST" '!=' "`ls -l $FILE`"
  then
      latex "$FILE"
      if cmp -s "${BASENAME}.aux.bak" "${BASENAME}.aux"
      then
	  echo "skipping further rounds, as ${BASENAME}.aux has not changed"
      else
	  bibtex "$BASENAME"
	  latex "$FILE"
	  latex "$FILE"
	  rm -f "${BASENAME}.aux.bak"
	  cp -p "${BASENAME}.aux" "${BASENAME}.aux.bak"
	  echo 'done'
      fi
      LAST="`ls -l $FILE`"
  fi
  if "$FIRSTTIME"
  then
      xdvi "${BASENAME}.dvi" &
      XDVIPROCESS=$!
      FIRSTTIME='false'
  fi
  sleep "$WAITTIMEINSECS"
done

