#!/usr/pkg/bin/perl use strict; my $seq; my @lines = (); my $PATCH= "patches.$$"; chdir "/tmp"; system ("mkdir $PATCH"); chdir $PATCH; while (<>) { if ( m|^Index: .*/|) { if ( $#lines > -1 ) { # already pushed flush_lines($seq++); } } push(@lines, $_); } sub flush_lines($){ my $seq = shift; my $fname = sprintf("%03d", $seq); open(FNAME, ">$fname") || printf " problem opening $fname to write(%s).\n", $!; print FNAME @lines; @lines = (); } __END__ perl perl/practice/split-patch < /e/u/j/ftp/pub/NetBSD/snapshot/20061008/sandpoint.diff # ---------------------------------------------- #!/bin/sh LIST=`ls /tmp/patches.*/???`; for i in ${LIST} ; do OUT=`patch -f -s -p0 < $i 2>&1 >/dev/null` if ${RC}; then echo $OUT else fi done; # ----------------------------------------------