XEmacs 21.4.8 "Honest Recruiter".
[chise/xemacs-chise.git.1] / lib-src / vcdiff
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