view lib-src/vcdiff @ 622:11502791fc1c

[xemacs-hg @ 2001-06-22 01:49:57 by ben] dired-msw.c: Fix problem noted by Michael Sperber with directories containing [] and code that destructively modifies an existing string. term\AT386.el: Fix warnings. term\apollo.el: Removed. Kill kill kill. Sync with FSF and remove most crap. term\linux.el: Removed. Sync with FSF. Don't define most defns, because they are automatically defined by termcap. But do add defns for keys that normally get defined as f13, f14, etc. and really ought to be shift-f3, shift-f4, etc. (NOTE: I did this based on Cygwin, which emulates the Linux console. I would appreciate it if someone on Linux could verify.) term\cygwin.el: New. Load term/linux. term\lk201.el, term\news.el, term\vt100.el: Sync with FSF. Fix warnings. dialog-gtk.el: Fix warning. For 21.4: help.el, update-elc.el: Compile in proper order. Maybe for 21.4: keydefs.el: Add a defn for M-?, previously undefined, to access help -- in case the terminal is not set up right, or f1 gets redefined. README: Rewrite.
author ben
date Fri, 22 Jun 2001 01:50:04 +0000
parents 376386a54a3c
children 061f4f90f874 06dd936cde16
line wrap: on
line source

#!/bin/sh
#
# Enhanced sccs diff utility for use with vc mode.
# This version is more compatible with rcsdiff(1).
#
#	!Id: vcdiff,v 1.4 1993/12/03 09:29:18 eggert Exp !
#
# Modified by: vladimir@Eng.Sun.COM on 95-06-07
# * Made sure that file arguments are specifed as s.<filename>.
# * Switched the assignments to $f inside the 3rd and 4th case statements of
#   the first for-loop
# * Removed the incorrect initialization of sid1 before the first for-loop.
#

DIFF="diff"
usage="$0: Usage: vcdiff [--brief] [-q] [-r<sid1>] [-r<sid2>] [diffopts] sccsfile..."

PATH=$PATH:/usr/ccs/bin:/usr/sccs # common SCCS hangouts

echo=
sid1= sid2=

for f
do
	case $f in
	-*)
		case $f in
		--brief)
			DIFF=cmp;;
		-q)
			echo=:;;
		-r?*)
			case $sid1 in
			-r*)
				sid2=$f
				;;
			*) 
				case $sid2 in
				  ?*) echo "$usage" >&2; exit 2 ;;
				esac
				sid1=$f
				;;
			esac
			;;
		*)
			options="$options $f"
			;;
		esac
		shift
		;;
	*)
		break
		;;
	esac
done

case $# in
0)
	echo "$usage" >&2
	exit 2
esac


rev1= rev2= status=0
trap 'status=2; exit' 1 2 13 15
trap 'rm -f $rev1 $rev2 || status=2; exit $status' 0

for f
do
  s=2

  # For files under SCCS control, fixup the file name to be the s. filename
  if [ -d SCCS ]; then
    if [ $f = `echo $f | sed -e 's|SCCS/s.||'` ]; then
      f="SCCS/s.$f"
    fi
  fi 

	case $f in
	s.* | */s.*)
		if
			rev1=/tmp/geta$$
			get -s -p -k $sid1 "$f" > $rev1 &&
			case $sid2 in
			'')
				workfile=`expr " /$f" : '.*/s.\(.*\)'`
				;;
			*)
				rev2=/tmp/getb$$
				get -s -p -k $sid2 "$f" > $rev2
				workfile=$rev2
			esac
		then
			$echo $DIFF $options $sid1 $sid2 $workfile >&2
			$DIFF $options $rev1 $workfile
			s=$?
		fi
		;;
	*)
		echo "$0: $f is not an SCCS file" >&2
	esac

	if test $status -lt $s
	then status=$s
	fi
done