Mercurial > hg > xemacs-beta
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