comparison lib-src/vcdiff @ 0:376386a54a3c r19-14

Import from CVS: tag r19-14
author cvs
date Mon, 13 Aug 2007 08:45:50 +0200
parents
children 061f4f90f874 06dd936cde16
comparison
equal deleted inserted replaced
-1:000000000000 0:376386a54a3c
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