| #!/bin/sh |
| |
| ### Search through $PATH for a binary called 'diff3' or 'gdiff3' which |
| ### does not add spurious trailing newlines to its output. Print the |
| ### full path to a working diff3 binary, or "" if none is found. |
| |
| ### This script assumes $1 is a directory that contains particular |
| ### 'mine.txt', 'yours.txt', 'older.txt', and 'result.txt' files |
| ### needed to test merging. |
| |
| if test "$1" = ""; then |
| echo "usage: gnu-diff3.sh <directory containing merge-testfiles>" |
| exit 1 |
| fi |
| dir=$1 |
| |
| IFS=':' |
| for searchdir in $PATH; do |
| # does $searchdir contain an executable called either `gdiff3' or `diff3'? |
| for name in gdiff3 diff3; do |
| diff3=$searchdir/$name |
| if test -x $diff3; then |
| $diff3 -A -m $dir/mine.txt $dir/older.txt $dir/yours.txt > result |
| |
| # the actual and expected merge result-files should be the same. |
| if cmp -s $dir/result.txt result; then |
| identical=yes |
| else |
| identical=no |
| fi |
| |
| # cleanup |
| rm -f result |
| |
| if test "$identical" = "yes"; then |
| echo $diff3 |
| exit |
| fi |
| fi |
| done |
| done |
| |
| # failed to find a valid diff3 |
| echo "" |