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
|