Comment (add Author: header).
[bpt/emacs.git] / lib-src / vcdiff
CommitLineData
d5ad1373 1#! /bin/sh
ae94cd0c
ER
2#
3# Enhanced sccs diff utility for use with vc mode.
4# This version is more compatible with rcsdiff(1).
5#
294981c7 6# Copyright (C) 1992, 1993, 1995, 1997, 2001, 2002, 2003, 2004, 2005,
f5d0ac07 7# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
294981c7 8
b3ae7a0a 9# This file is part of GNU Emacs.
294981c7
GM
10
11# GNU Emacs is free software: you can redistribute it and/or modify
b3ae7a0a 12# it under the terms of the GNU General Public License as published by
294981c7
GM
13# the Free Software Foundation, either version 3 of the License, or
14# (at your option) any later version.
15
b3ae7a0a
GM
16# GNU Emacs is distributed in the hope that it will be useful,
17# but WITHOUT ANY WARRANTY; without even the implied warranty of
18# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19# GNU General Public License for more details.
294981c7 20
b3ae7a0a 21# You should have received a copy of the GNU General Public License
294981c7
GM
22# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
23
ae94cd0c
ER
24
25DIFF="diff"
0fd6b177 26usage="$0: Usage: vcdiff [--brief] [-q] [-r<sid1>] [-r<sid2>] [diffopts] sccsfile..."
ae94cd0c 27
14b11401
SM
28# Now that we use `sccs get' rather than just `get', we don't need this.
29# PATH=$PATH:/usr/ccs/bin:/usr/sccs:/usr/xpg4/bin # common SCCS hangouts
cbf35b94 30
09b7af0a 31echo="echo"
7509d397 32sid1= sid2=
ae94cd0c
ER
33
34for f
35do
36 case $f in
37 -*)
38 case $f in
0fd6b177
PE
39 --brief)
40 DIFF=cmp;;
12946476
PE
41 -q)
42 echo=:;;
ae94cd0c
ER
43 -r?*)
44 case $sid1 in
7509d397 45 '')
ae94cd0c
ER
46 sid1=$f
47 ;;
48 *)
49 case $sid2 in
50 ?*) echo "$usage" >&2; exit 2 ;;
51 esac
52 sid2=$f
53 ;;
54 esac
55 ;;
56 *)
57 options="$options $f"
58 ;;
59 esac
60 shift
61 ;;
62 *)
63 break
64 ;;
65 esac
66done
67
68case $# in
690)
70 echo "$usage" >&2
71 exit 2
72esac
73
74
75rev1= rev2= status=0
76trap 'status=2; exit' 1 2 13 15
77trap 'rm -f $rev1 $rev2 || status=2; exit $status' 0
78
79for f
80do
81 s=2
82
83 case $f in
84 s.* | */s.*)
85 if
95de358c 86 rev1=`mktemp /tmp/geta.XXXXXXXX`
14b11401 87 sccs get -s -p -k $sid1 "$f" > $rev1 &&
ae94cd0c
ER
88 case $sid2 in
89 '')
90 workfile=`expr " /$f" : '.*/s.\(.*\)'`
91 ;;
92 *)
95de358c 93 rev2=`mktemp /tmp/getb.XXXXXXXX`
14b11401 94 sccs get -s -p -k $sid2 "$f" > $rev2
ae94cd0c
ER
95 workfile=$rev2
96 esac
97 then
09b7af0a 98 $echo $DIFF $options $rev1 $workfile >&2
ae94cd0c
ER
99 $DIFF $options $rev1 $workfile
100 s=$?
101 fi
102 ;;
103 *)
104 echo "$0: $f is not an SCCS file" >&2
105 esac
106
107 if test $status -lt $s
108 then status=$s
109 fi
110done
ab5796a9
MB
111
112# arch-tag: 4344ba3a-bcbe-4f77-971c-f43c1606953a