head	1.2;
access;
symbols
	RELENG_4_11_0_RELEASE:1.1.1.1
	RELENG_4_11:1.1.1.1.0.24
	RELENG_4_11_BP:1.1.1.1
	RELENG_4_10_0_RELEASE:1.1.1.1
	RELENG_4_10:1.1.1.1.0.22
	RELENG_4_10_BP:1.1.1.1
	RELENG_4_9_0_RELEASE:1.1.1.1
	RELENG_4_9:1.1.1.1.0.20
	RELENG_4_9_BP:1.1.1.1
	RELENG_4_8_0_RELEASE:1.1.1.1
	RELENG_4_8:1.1.1.1.0.18
	RELENG_4_8_BP:1.1.1.1
	RELENG_4_7_0_RELEASE:1.1.1.1
	RELENG_4_7:1.1.1.1.0.16
	RELENG_4_7_BP:1.1.1.1
	RELENG_4_6_2_RELEASE:1.1.1.1
	RELENG_4_6_1_RELEASE:1.1.1.1
	RELENG_4_6_0_RELEASE:1.1.1.1
	RELENG_4_6:1.1.1.1.0.14
	RELENG_4_6_BP:1.1.1.1
	v5_006_01:1.1.1.2
	RELENG_4_5_0_RELEASE:1.1.1.1
	RELENG_4_5:1.1.1.1.0.12
	RELENG_4_5_BP:1.1.1.1
	RELENG_4_4_0_RELEASE:1.1.1.1
	RELENG_4_4:1.1.1.1.0.10
	RELENG_4_4_BP:1.1.1.1
	RELENG_4_3_0_RELEASE:1.1.1.1
	RELENG_4_3:1.1.1.1.0.8
	RELENG_4_3_BP:1.1.1.1
	RELENG_4_2_0_RELEASE:1.1.1.1
	RELENG_4_1_1_RELEASE:1.1.1.1
	PRE_SMPNG:1.1.1.2
	RELENG_4_1_0_RELEASE:1.1.1.1
	v5_006:1.1.1.2
	RELENG_3_5_0_RELEASE:1.1.1.1
	RELENG_4_0_0_RELEASE:1.1.1.1
	RELENG_4:1.1.1.1.0.6
	RELENG_4_BP:1.1.1.1
	RELENG_3_4_0_RELEASE:1.1.1.1
	RELENG_3_3_0_RELEASE:1.1.1.1
	RELENG_3_2_PAO:1.1.1.1.0.4
	RELENG_3_2_PAO_BP:1.1.1.1
	RELENG_3_2_0_RELEASE:1.1.1.1
	v5_005_03:1.1.1.1
	RELENG_3_1_0_RELEASE:1.1.1.1
	RELENG_3:1.1.1.1.0.2
	RELENG_3_BP:1.1.1.1
	RELENG_3_0_0_RELEASE:1.1.1.1
	v5_005_02:1.1.1.1
	LWALL:1.1.1;
locks; strict;
comment	@# @;


1.2
date	2002.05.16.10.07.48;	author markm;	state dead;
branches;
next	1.1;

1.1
date	98.09.09.06.59.49;	author markm;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	98.09.09.06.59.49;	author markm;	state Exp;
branches;
next	1.1.1.2;

1.1.1.2
date	2000.06.25.11.03.01;	author markm;	state Exp;
branches;
next	;


desc
@@


1.2
log
@Perl is no longer in base. Long live the port!
@
text
@#!/l/local/bin/perl -wspi.bak

#
# reads a perforce style diff on stdin and outputs appropriate headers
# so the diff can be applied with the patch program
#
# Gurusamy Sarathy <gsar@@umich.edu>
#

BEGIN {
    $0 =~ s|.*/||;
    if ($h or $help) {
	print STDERR <<USAGE;
Usage: $0 [-v] [-h] files

	-h	print this help
	-v	output progress messages

Does inplace edit of diff files output by the perforce commands
"p4 describe", "p4 diff", and "p4 diff2". The result is suitable
for feeding to the "patch" program.

If no files are specified, reads from stdin and writes to stdout.

WARNING: It only handles context or unified diffs.

Example: p4 describe -du 123 | $0 > change-123.patch

USAGE
	exit(0);
    }
    unless (@@ARGV) { @@ARGV = '-'; undef $^I; }
    use vars qw($thisfile $time $file $fnum $v $h $help);
    $thisfile = "";
    $time = localtime(time);
}

my ($cur, $match);
$cur = m<^==== //depot/(.+?)\#\d+.* ====$> ... m<^(\@@\@@.+\@@\@@|\*+)$>;

$match = $1;

if ($ARGV ne $thisfile) {
    warn "processing patchfile [$ARGV]\n" unless $ARGV eq '-';
    $thisfile = $ARGV;
}

# while we are within range
if ($cur) {
    # set the file name after first line
    if ($cur == 1) {
	$file = $match;
	$fnum++;
    }
    # emit the diff header when we hit last line
    elsif ($cur =~ /E0$/) {
	my $f = $file;

	# special hack for perl so we can always use "patch -p1"
	$f =~ s<^.*?(perl.*?/)><$1>;

	# unified diff
	if ($match =~ /^\@@/) {
	    warn "emitting udiff header\n" if $v;
	    $_ = "Index: $f\n--- $f.~1~\t$time\n+++ $f\t$time\n$_";
	}
	# context diff
	elsif ($match =~ /^\*/) {
	    warn "emitting cdiff header\n" if $v;
	    $_ = "Index: $f\n*** $f.~1~\t$time\n--- $f\t$time\n$_";
	}
    }
    # see if we hit another patch (i.e. previous patch was empty)
    elsif (m<^==== //depot/(.+?)\#\d+.* ====$>) {
	$file = $match = $1;
    }
    # suppress all other lines in the header
    else {
	$_ = "";
    }
    warn "file [$file] line [$cur] file# [$fnum]\n" if $v;
}

$_ .= "End of Patch.\n" if eof;
@


1.1
log
@Initial revision
@
text
@@


1.1.1.1
log
@Initial import of Perl5. The king is dead; long live the king!
@
text
@@


1.1.1.2
log
@Vendor import of Perl 5.006
@
text
@d7 1
a7 1
# Gurusamy Sarathy <gsar@@activestate.com>
@

