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, 2002, 2003, 2004, 7# 2005, 2006, 2007 Free Software Foundation, Inc. 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 13# the Free Software Foundation; either version 2, or (at your option) 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 23# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 24# Boston, MA 02110-1301, USA. 25# 26 27DIFF="diff" 28usage="$0: Usage: vcdiff [--brief] [-q] [-r<sid1>] [-r<sid2>] [diffopts] sccsfile..." 29 30PATH=$PATH:/usr/ccs/bin:/usr/sccs:/usr/xpg4/bin # common SCCS hangouts 31 32echo="echo" 33sid1= sid2= 34 35for f 36do 37 case $f in 38 -*) 39 case $f in 40 --brief) 41 DIFF=cmp;; 42 -q) 43 echo=:;; 44 -r?*) 45 case $sid1 in 46 '') 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 67done 68 69case $# in 700) 71 echo "$usage" >&2 72 exit 2 73esac 74 75 76rev1= rev2= status=0 77trap 'status=2; exit' 1 2 13 15 78trap 'rm -f $rev1 $rev2 || status=2; exit $status' 0 79 80for f 81do 82 s=2 83 84 case $f in 85 s.* | */s.*) 86 if 87 rev1=`mktemp /tmp/geta.XXXXXXXX` 88 get -s -p -k $sid1 "$f" > $rev1 && 89 case $sid2 in 90 '') 91 workfile=`expr " /$f" : '.*/s.\(.*\)'` 92 ;; 93 *) 94 rev2=`mktemp /tmp/getb.XXXXXXXX` 95 get -s -p -k $sid2 "$f" > $rev2 96 workfile=$rev2 97 esac 98 then 99 $echo $DIFF $options $rev1 $workfile >&2 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 111done 112 113# arch-tag: 4344ba3a-bcbe-4f77-971c-f43c1606953a 114