diff lib-src/vcdiff @ 0:376386a54a3c r19-14

Import from CVS: tag r19-14
author cvs
date Mon, 13 Aug 2007 08:45:50 +0200
parents
children 061f4f90f874 06dd936cde16
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib-src/vcdiff	Mon Aug 13 08:45:50 2007 +0200
@@ -0,0 +1,106 @@
+#!/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