Better error message on missing files.
[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#
92b47a4a 6# Copyright (C) 1992, 1993, 1995, 1997, 2001, 2002, 2003, 2004,
a5b68355 7# 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
b3ae7a0a
GM
8#
9# This file is part of GNU Emacs.
10#
11# GNU Emacs is free software; you can redistribute it and/or modify
12# it under the terms of the GNU General Public License as published by
4a9f99bd 13# the Free Software Foundation; either version 3, or (at your option)
b3ae7a0a
GM
14# any later version.
15#
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.
20#
21# You should have received a copy of the GNU General Public License
22# along with GNU Emacs; see the file COPYING. If not, write to the
364c38d3
LK
23# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
24# Boston, MA 02110-1301, USA.
b3ae7a0a 25#
ae94cd0c
ER
26
27DIFF="diff"
0fd6b177 28usage="$0: Usage: vcdiff [--brief] [-q] [-r<sid1>] [-r<sid2>] [diffopts] sccsfile..."
ae94cd0c 29
14b11401
SM
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
cbf35b94 32
09b7af0a 33echo="echo"
7509d397 34sid1= sid2=
ae94cd0c
ER
35
36for f
37do
38 case $f in
39 -*)
40 case $f in
0fd6b177
PE
41 --brief)
42 DIFF=cmp;;
12946476
PE
43 -q)
44 echo=:;;
ae94cd0c
ER
45 -r?*)
46 case $sid1 in
7509d397 47 '')
ae94cd0c
ER
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
68done
69
70case $# in
710)
72 echo "$usage" >&2
73 exit 2
74esac
75
76
77rev1= rev2= status=0
78trap 'status=2; exit' 1 2 13 15
79trap 'rm -f $rev1 $rev2 || status=2; exit $status' 0
80
81for f
82do
83 s=2
84
85 case $f in
86 s.* | */s.*)
87 if
95de358c 88 rev1=`mktemp /tmp/geta.XXXXXXXX`
14b11401 89 sccs get -s -p -k $sid1 "$f" > $rev1 &&
ae94cd0c
ER
90 case $sid2 in
91 '')
92 workfile=`expr " /$f" : '.*/s.\(.*\)'`
93 ;;
94 *)
95de358c 95 rev2=`mktemp /tmp/getb.XXXXXXXX`
14b11401 96 sccs get -s -p -k $sid2 "$f" > $rev2
ae94cd0c
ER
97 workfile=$rev2
98 esac
99 then
09b7af0a 100 $echo $DIFF $options $rev1 $workfile >&2
ae94cd0c
ER
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
112done
ab5796a9
MB
113
114# arch-tag: 4344ba3a-bcbe-4f77-971c-f43c1606953a