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