#! /bin/sh

# This file intercepts the pre-processor and runs 'stringfix' on the source file before it is processed.
# This avoids the need for the old _*.c temp files.

# Only capture pre-processing
if [ $1 != "-E" -o -z "$STRINGFIX" -o ! -f "$STRINGFIX" ]; then
  exec $(${COLLECT_GCC} --print-prog-name=cc1plus) "$@"
fi


# Check for '-MD' as this may be the 'depcomp' call
depcomp=0
for arg; do
  case "$arg" in
    -MD)
      depcomp=1
      ;;
    *)
      ;;
  esac
done

# Only continue if running in depcomp (avoiding a 2nd pass for -dD/-g3)
if [ $depcomp -eq 0 ]; then
  exec $(${COLLECT_GCC} --print-prog-name=cc1plus) "$@"
fi

### Is this a pipe or not? ###

# Determine the last argument
for i
do
  third_last="$third_last $second_last"
  second_last=$last
  last=$i
done

# If the last param is *.ii, there's no pipe
case $last in
  *.ii)
    piping=0
    ;;
  *)
    piping=1
    ;;
esac

if [ $piping -eq 1 ]; then
  exec $(${COLLECT_GCC} --print-prog-name=cc1plus) "$@" | $STRINGFIX
else
  gcc_status=$($(${COLLECT_GCC} --print-prog-name=cc1plus) "$@")

  TEMPFILE=`(umask 077 && mktemp -t "ccXXXXXX") 2>/dev/null`
  $STRINGFIX < $last > $TEMPFILE
  mv -f $TEMPFILE $last
  exit $gcc_status
fi
