#!/bin/sh
#	A minimal compatibility script to make cpphs accept the same
#	arguments as real cpp, wherever possible.
CPPHS=/usr/malcolm/Haskell/cpphs/cpphs

processArgs () {
  TRADITIONAL=no
  STRIP=yes
  INFILE="-"
  OUTFILE="-"
  while test "$1" != ""
  do
    case $1 in
      -D)            shift; echo -D$1 ;;
      -D*)           echo $1 ;;
      -U)            shift; echo -U$1 ;;
      -U*)           echo $1 ;;
      -I)            shift; echo -I$1 ;;
      -I*)           echo $1 ;;
      -o)            shift; echo -O$1 ;;
      -o*)           echo -O`echo $1 | cut -c3-` ;;
      -std*)         ;;		# ignore language spec
      -x)            shift ;;	# ignore language spec
      -ansi*)        TRADITIONAL=no ;;
      -traditional*) TRADITIONAL=yes ;;
      -include)      shift; echo $1 ;;
      -P)            echo --noline ;;
      -C)            STRIP=no ;;
      -CC)           STRIP=no ;;
      -A)            shift ;;	# strip assertions
      --help)        echo $1 ;;
      -version)      echo -$1 ;;
      --version)     echo $1 ;;
      -*)            ;;	# strip all other flags
      *)     if [ "$INFILE" = "-" ]
             then INFILE=$1
             else OUTFILE=$1
             fi ;;
    esac
    if test "$1" != ""; then shift; fi
  done
  if [ "$TRADITIONAL" = "no" ]; then echo "--hashes";   fi
  if [ "$STRIP" = "yes" ];      then echo "--strip";    fi
  echo $INFILE
  if [ "$OUTFILE" != "-" ];     then echo "-O$OUTFILE"; fi
}

exec $CPPHS `processArgs "$@"`
