Commit | Line | Data |
---|---|---|
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 | |
27 | DIFF="diff" | |
0fd6b177 | 28 | usage="$0: Usage: vcdiff [--brief] [-q] [-r<sid1>] [-r<sid2>] [diffopts] sccsfile..." |
ae94cd0c | 29 | |
7509d397 | 30 | PATH=$PATH:/usr/ccs/bin:/usr/sccs:/usr/xpg4/bin # common SCCS hangouts |
cbf35b94 | 31 | |
09b7af0a | 32 | echo="echo" |
7509d397 | 33 | sid1= sid2= |
ae94cd0c ER |
34 | |
35 | for f | |
36 | do | |
37 | case $f in | |
38 | -*) | |
39 | case $f in | |
0fd6b177 PE |
40 | --brief) |
41 | DIFF=cmp;; | |
12946476 PE |
42 | -q) |
43 | echo=:;; | |
ae94cd0c ER |
44 | -r?*) |
45 | case $sid1 in | |
7509d397 | 46 | '') |
ae94cd0c ER |
47 | sid1=$f |
48 | ;; | |
49 | *) | |
50 | case $sid2 in | |
51 | ?*) echo "$usage" >&2; exit 2 ;; | |
52 | esac | |
53 | sid2=$f | |
54 | ;; | |
55 | esac | |
56 | ;; | |
57 | *) | |
58 | options="$options $f" | |
59 | ;; | |
60 | esac | |
61 | shift | |
62 | ;; | |
63 | *) | |
64 | break | |
65 | ;; | |
66 | esac | |
67 | done | |
68 | ||
69 | case $# in | |
70 | 0) | |
71 | echo "$usage" >&2 | |
72 | exit 2 | |
73 | esac | |
74 | ||
75 | ||
76 | rev1= rev2= status=0 | |
77 | trap 'status=2; exit' 1 2 13 15 | |
78 | trap 'rm -f $rev1 $rev2 || status=2; exit $status' 0 | |
79 | ||
80 | for f | |
81 | do | |
82 | s=2 | |
83 | ||
84 | case $f in | |
85 | s.* | */s.*) | |
86 | if | |
87 | rev1=/tmp/geta$$ | |
88 | get -s -p -k $sid1 "$f" > $rev1 && | |
89 | case $sid2 in | |
90 | '') | |
91 | workfile=`expr " /$f" : '.*/s.\(.*\)'` | |
92 | ;; | |
93 | *) | |
94 | rev2=/tmp/getb$$ | |
95 | get -s -p -k $sid2 "$f" > $rev2 | |
96 | workfile=$rev2 | |
97 | esac | |
98 | then | |
09b7af0a | 99 | $echo $DIFF $options $rev1 $workfile >&2 |
ae94cd0c ER |
100 | $DIFF $options $rev1 $workfile |
101 | s=$? | |
102 | fi | |
103 | ;; | |
104 | *) | |
105 | echo "$0: $f is not an SCCS file" >&2 | |
106 | esac | |
107 | ||
108 | if test $status -lt $s | |
109 | then status=$s | |
110 | fi | |
111 | done | |
ab5796a9 MB |
112 | |
113 | # arch-tag: 4344ba3a-bcbe-4f77-971c-f43c1606953a |