]> code.delx.au - gnu-emacs/blob - lib-src/vcdiff
Convert consecutive FSF copyright years to ranges.
[gnu-emacs] / 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 # Copyright (C) 1992-1993, 1995, 1997, 2001-2011 Free Software Foundation, Inc.
7
8 # Author: Paul Eggert
9 # (according to authors.el)
10
11 # This file is part of GNU Emacs.
12
13 # GNU Emacs is free software: you can redistribute it and/or modify
14 # it under the terms of the GNU General Public License as published by
15 # the Free Software Foundation, either version 3 of the License, or
16 # (at your option) any later version.
17
18 # GNU Emacs is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # GNU General Public License for more details.
22
23 # You should have received a copy of the GNU General Public License
24 # along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
25
26
27 DIFF="diff"
28 usage="$0: Usage: vcdiff [--brief] [-q] [-r<sid1>] [-r<sid2>] [diffopts] sccsfile..."
29
30 # Now that we use `sccs get' rather than just `get', we don't need this.
31 # PATH=$PATH:/usr/ccs/bin:/usr/sccs:/usr/xpg4/bin # common SCCS hangouts
32
33 echo="echo"
34 sid1= sid2=
35
36 for f
37 do
38 case $f in
39 -*)
40 case $f in
41 --brief)
42 DIFF=cmp;;
43 -q)
44 echo=:;;
45 -r?*)
46 case $sid1 in
47 '')
48 sid1=$f
49 ;;
50 *)
51 case $sid2 in
52 ?*) echo "$usage" >&2; exit 2 ;;
53 esac
54 sid2=$f
55 ;;
56 esac
57 ;;
58 *)
59 options="$options $f"
60 ;;
61 esac
62 shift
63 ;;
64 *)
65 break
66 ;;
67 esac
68 done
69
70 case $# in
71 0)
72 echo "$usage" >&2
73 exit 2
74 esac
75
76
77 rev1= rev2= status=0
78 trap 'status=2; exit' 1 2 13 15
79 trap 'rm -f $rev1 $rev2 || status=2; exit $status' 0
80
81 for f
82 do
83 s=2
84
85 case $f in
86 s.* | */s.*)
87 if
88 rev1=`mktemp /tmp/geta.XXXXXXXX`
89 sccs get -s -p -k $sid1 "$f" > $rev1 &&
90 case $sid2 in
91 '')
92 workfile=`expr " /$f" : '.*/s.\(.*\)'`
93 ;;
94 *)
95 rev2=`mktemp /tmp/getb.XXXXXXXX`
96 sccs get -s -p -k $sid2 "$f" > $rev2
97 workfile=$rev2
98 esac
99 then
100 $echo $DIFF $options $rev1 $workfile >&2
101 $DIFF $options $rev1 $workfile
102 s=$?
103 fi
104 ;;
105 *)
106 echo "$0: $f is not an SCCS file" >&2
107 esac
108
109 if test $status -lt $s
110 then status=$s
111 fi
112 done
113