#!/bin/sh
echo "my-diff-for-git $@"
path="$1"
old_file="$2"
old_hex="$3"
old_filemode="$4"
new_file="$5"
new_hex="$6"
new_filemode="$7"

if test -n "$2" && test -n "$3" && test -n "$4" && test -n "$5" && test -n "$6" && test -n "$7"; then

  if test "$old_filemode" != "$new_filemode"; then
    echo "Changing permissions from $old_filemode to $new_filemode" || exit 1
  fi

  if test -f "$path".orig; then
    mv -f "$path".orig "$path".orig~~~
  fi
  ln -sf "$old_file" "$path".orig

  if test "$path" != "$new_file"; then
    if test -f "$path"; then
      mv -f "$path" "$path"~~~
    fi
    ln -sf "$new_file" "$path"
  fi

  diff -c3 "$path".orig "$path"
  err=$?

  if test "$path" != "$new_file"; then
    rm -f "$path"
    if test -f "$path"~~~; then
      mv -f "$path"~~~ "$path"
    fi
  fi

  rm -f "$path".orig
  if test -f "$path".orig~~~; then
    mv -f "$path".orig~~~ "$path".orig
  fi

  test $err = 2 && exit 1
  exit 0

else

  git-diff-files --cc "$path"

fi
