0
+ − 1 #!/bin/sh
+ − 2 #
+ − 3 # Enhanced sccs diff utility for use with vc mode.
+ − 4 # This version is more compatible with rcsdiff(1).
+ − 5 #
+ − 6 # !Id: vcdiff,v 1.4 1993/12/03 09:29:18 eggert Exp !
+ − 7 #
+ − 8 # Modified by: vladimir@Eng.Sun.COM on 95-06-07
+ − 9 # * Made sure that file arguments are specifed as s.<filename>.
+ − 10 # * Switched the assignments to $f inside the 3rd and 4th case statements of
+ − 11 # the first for-loop
+ − 12 # * Removed the incorrect initialization of sid1 before the first for-loop.
+ − 13 #
+ − 14
+ − 15 DIFF="diff"
+ − 16 usage="$0: Usage: vcdiff [--brief] [-q] [-r<sid1>] [-r<sid2>] [diffopts] sccsfile..."
+ − 17
+ − 18 PATH=$PATH:/usr/ccs/bin:/usr/sccs # common SCCS hangouts
+ − 19
+ − 20 echo=
+ − 21 sid1= sid2=
+ − 22
+ − 23 for f
+ − 24 do
+ − 25 case $f in
+ − 26 -*)
+ − 27 case $f in
+ − 28 --brief)
+ − 29 DIFF=cmp;;
+ − 30 -q)
+ − 31 echo=:;;
+ − 32 -r?*)
+ − 33 case $sid1 in
+ − 34 -r*)
+ − 35 sid2=$f
+ − 36 ;;
+ − 37 *)
+ − 38 case $sid2 in
+ − 39 ?*) echo "$usage" >&2; exit 2 ;;
+ − 40 esac
+ − 41 sid1=$f
+ − 42 ;;
+ − 43 esac
+ − 44 ;;
+ − 45 *)
+ − 46 options="$options $f"
+ − 47 ;;
+ − 48 esac
+ − 49 shift
+ − 50 ;;
+ − 51 *)
+ − 52 break
+ − 53 ;;
+ − 54 esac
+ − 55 done
+ − 56
+ − 57 case $# in
+ − 58 0)
+ − 59 echo "$usage" >&2
+ − 60 exit 2
+ − 61 esac
+ − 62
+ − 63
+ − 64 rev1= rev2= status=0
+ − 65 trap 'status=2; exit' 1 2 13 15
+ − 66 trap 'rm -f $rev1 $rev2 || status=2; exit $status' 0
+ − 67
+ − 68 for f
+ − 69 do
+ − 70 s=2
+ − 71
+ − 72 # For files under SCCS control, fixup the file name to be the s. filename
+ − 73 if [ -d SCCS ]; then
+ − 74 if [ $f = `echo $f | sed -e 's|SCCS/s.||'` ]; then
+ − 75 f="SCCS/s.$f"
+ − 76 fi
+ − 77 fi
+ − 78
+ − 79 case $f in
+ − 80 s.* | */s.*)
+ − 81 if
+ − 82 rev1=/tmp/geta$$
+ − 83 get -s -p -k $sid1 "$f" > $rev1 &&
+ − 84 case $sid2 in
+ − 85 '')
+ − 86 workfile=`expr " /$f" : '.*/s.\(.*\)'`
+ − 87 ;;
+ − 88 *)
+ − 89 rev2=/tmp/getb$$
+ − 90 get -s -p -k $sid2 "$f" > $rev2
+ − 91 workfile=$rev2
+ − 92 esac
+ − 93 then
+ − 94 $echo $DIFF $options $sid1 $sid2 $workfile >&2
+ − 95 $DIFF $options $rev1 $workfile
+ − 96 s=$?
+ − 97 fi
+ − 98 ;;
+ − 99 *)
+ − 100 echo "$0: $f is not an SCCS file" >&2
+ − 101 esac
+ − 102
+ − 103 if test $status -lt $s
+ − 104 then status=$s
+ − 105 fi
+ − 106 done