From owner-FreeBSD-users-jp@jp.freebsd.org  Mon Apr  8 22:26:15 1996
Received: by mail.jp.freebsd.org (8.7.3+2.6Wbeta5/8.7.3) id WAA14697
	Mon, 8 Apr 1996 22:26:15 +0900 (JST)
Received: by mail.jp.freebsd.org (8.7.3+2.6Wbeta5/8.7.3) with SMTP id WAA14691
	for <freebsd-users-jp@jp.freebsd.org>; Mon, 8 Apr 1996 22:26:09 +0900 (JST)
Received: from sonygw.sony.co.jp ([43.0.1.249]) by sonyinet.sony.co.jp (8.6.10/3.4W4-96030410) with ESMTP id WAA01420 for <freebsd-users-jp@jp.freebsd.org>; Mon, 8 Apr 1996 22:26:06 +0900
Received: from n128 ([43.0.234.22]) by sonygw.sony.co.jp (8.6.12+2.4W/3.4W-96040821) with SMTP id WAA08738 for <freebsd-users-jp@jp.freebsd.org>; Mon, 8 Apr 1996 22:25:50 +0900
Received: from localhost by n128 with SMTP (4.2/Sony4.2MX-L2) id AA13796; Mon, 8 Apr 96 22:25:19 JST
Message-Id: <9604081325.AA13796@n128>
To: FreeBSD-users-jp@jp.freebsd.org
Cc: kawamura@telecom.intec.co.jp, hokun@honet.rim.or.jp,
        saeki@saskg.semicon.sony.co.jp
In-Reply-To: Your message of "Sun, 07 Apr 96 11:14:39 JST."
             <199604070214.LAA02011@yoki.honet.rim.or.jp> 
Date: Mon, 08 Apr 96 22:25:18 +0900
From: Takashi Saeki <saeki@saskg.semicon.sony.co.jp>
Reply-To: FreeBSD-users-jp@jp.freebsd.org
X-Distribute: distribute [version 2.1 (Alpha) patchlevel=19]
X-Sequence: FreeBSD-users-jp 988
Subject: [FreeBSD-users-jp 988] Re: [Q] How to use SNAP diff ? 
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org

$B:4Gl!w%=%K!<$G$9!#(B

----------------------------------------------------------------
[FreeBSD-users-jp 959] kawamura@telecom.intec.co.jp $B$5$s!'(B

>   $B$?$@$7;d$N>l9g!"4v$D$+$N(B obj $B%U%!%$%k$H!"?7HG$G:o=|$5$l$?%U%!%$%k(B($B9T(B
> $BF,$,A4$F(B'-'$B$N$b$N(B)$B$G!"(B"malformed patch at line xxx" $B$H$$$&%a%C%;!<%8$r(B
> $B=P$7$F(B patch $B$,;_$^$C$F$7$^$$$^$7$?!#(B

----------------------------------------------------------------
[FreeBSD-users-jp 970] hokun@honet.rim.or.jp $B$5$s!'(B

> saeki> $B$G$9$,!"<B:]$K$d$C$F$_$k$H!"(Breject $B$O=P$F$$$J$$$K$b$+$+$o$i$:!"(B
> saeki> $B$J$<$+(B SNAP0323 $B$N%=!<%9$H$O0lCW$7$^$;$s!#(B
> saeki> ========================================== $BCm0U!*(B
> saeki> $B860x$rD4::$7$F%"%C%W%G!<%H2DG=$J$h$&$K$7$?$$$H$O;W$$$^$9$,!"(B
> saeki> $B$"$^$j4|BT$7$J$$$G$*BT$A$/$@$5$$!#(B
>
> $B$=$&$G$9$+!#;DG0(B... $B$H$j$"$($:(B 2.2 $B$,@5<0$K%j%j!<%9$5$l$k$^$GBT$C$?J}(B
> $B$,NI$5$=$&$G$9$M!#$"$j$,$H$&$4$6$$$^$7$?!#(B
----------------------------------------------------------------

$B$A$g$C$H860x$rD4$Y$F$_$^$7$?!#(B
$B<g$J860x$OB8:_$7$J$$%G%#%l%/%H%j$X$N%Q%C%A$,<:GT$9$k$3$H$N$h$&$G$9!#(B
$B$3$N%G%#%l%/%H%j$r:n$C$F$d$l$P$$$$$N$G$9$,!D!D(B

$B$G!"$3$s$J(B perl $B%9%/%j%W%H$r=q$$$F$_$^$7$?!#(B
diff $B%U%!%$%k$rFI$s$GI,MW$J%G%#%l%/%H%j$r:n@.$7!"(B
$B%U%!%$%kKh$KJ,3d$7$?:9J,$r%Q%$%W7PM3$G(B patch $B$KN.$9$H$$$&$b$N$G$9!#(B

# $BJ,3d$7$FJL!9$K(B patch $B$r5/F0$7$F$d$i$J$$$H(B "malformed patch" $B$,=P$?$i(B
# $B$=$3$G;_$^$C$F$7$^$&$h$&$J$N$G!D!D(B

snapdiff.pl /tmp/210R-0323.diff.gz /usr/src $B$H$+$N$h$&$K;XDj$7$F;H$$$^$9!#(B

$B$3$l$r;HMQ$7$F(B 210R $B$K%Q%C%A$r9T$C$?$H$3$m!"(BSNAP0323 $B$H0[$J$C$F$$$?$N$O(B
	gnu/usr.bin/kgdb/ChangeLog
	usr.sbin/mkdosfs/bootcode.asm
$B$N#2%U%!%$%k$@$1$G$7$?!#(B

$B$3$N#2$D$O$J$<$+(B diff $B%U%!%$%k$N7A<0$,$A$g$C$H$*$+$7$/$F!"(B
$B%Q%C%A$,@5>o$K$"$?$i$J$$$h$&$G$9!#(B
$B$^$"!"(Bgnu/usr.bin/kgdb $B$O(B SNAP0323 $B$G$OL5$/$J$C$F$7$^$$$^$7$?$7!"(B
usr.sbin/mkdosfs/bootcode.asm $B$O:G8e$KM>J,$J(B '\n' $B$,#1$D$D$$$F$$$k(B
$B$@$1$G$9$N$G!"<B32$O$J$$$G$7$g$&!#(B


$B$J$*!"0JA0:n@.$7$?(B 210R-0323.diff.gz $B$O!"(B
diff $B:n@.$K;HMQ$7$?%^%7%s$KF~$l$F$"$C$?(B gdiff $B$,(B 2.0 $B$H8E$+$C$?$?$a$K(B
$B%P%$%J%j%U%!%$%k(B ee.o $B$N:9J,$,4^$^$l$F$*$j$4LBOG$r$*$+$1$7$^$7$?!#(B
$B:#2s(B gdiff V2.7 $B$r;HMQ$7$F:n$jD>$7$?$b$N$r(B
ftp://ftp.noc.titech.ac.jp/pub/tmp/aki/in.coming/210R-0323.diff.gz.new
$B$KCV$+$;$F$b$i$$$^$7$?!#(B
$B$^$?!"(B210R $B$K(B snapdiff.pl $B$r;HMQ$7$F%Q%C%A$rEv$F$?$b$N$H(B SNAP0323 $B$N(B
diff $B$r!"(B210R-0323.fail.diff.gz $B$H$7$FF1$8>l=j$KCV$-$^$7$?!#!J$=$NM=Dj!K(B

# $B$3$l$G(B 210R -> SNAP0323 $B$X$N%"%C%W%G!<%H$,J]>Z$G$-$?$+$J!)(B

--------------------------------------------------------------------
    $B:4GlN4;J(B  $B%=%K!<3t<02q<R!!%;%_%3%s%@%/%?%+%s%Q%K!<(B
              $BBh#1#L#S#IItLg!!@_7W5;=QIt!!5;=Q?d?J2]!!O@M}#C#A#D78(B
              E-mail : saeki@saskg.semicon.sony.co.jp
--------------------------------------------------------------------

#! /usr/bin/perl
# snapdiff.pl

$PATCHOPT = '-s -p1 -E -N';
$RMORIG = 1;			# TRUE

$PROG = 'snapdiff.pl';
$MODE = oct(775);
$PATCH = '/usr/bin/patch';
$GZCAT = '/usr/bin/gzcat';
$| = 1;				# to flush output
$FNAME = $DNAME = $CWD = $DIFFFILE = $TARGDIR = $I = '';

$TMPDIR = $ENV{'TMPDIR'};
if (!defined($TMPDIR)) {
    $TMPDIR = '/usr/tmp';	# make sure be writable & have enough space
}
if ($#ARGV != 1) {
    die "usage: $PROG <diff file> <target dir>\n";
}
$DIFFFILE = $ARGV[0];
$TARGDIR = $ARGV[1];
chop($CWD = `pwd`);
if ($DIFFFILE !~ m@^/@) {
    $DIFFFILE = "$CWD/$DIFFFILE";
}
if ($TARGDIR !~ m@^/@) {
    $TARGDIR = "$CWD/$TARGDIR";
}
$TARGDIR =~ s@(/\.||/)$@@;
chdir($TARGDIR);
if ($DIFFFILE =~ /.gz$/) {
    open(FI, "$GZCAT $DIFFFILE |") || die "can't open $DIFFFILE\n";
} else {
    open(FI, "< $DIFFFILE ") || die "can't open $DIFFFILE\n";
}
while (<FI>) {
    if (/^diff/) {
	if ($FNAME ne '') {
	    close(FP);			# wait for complete
	    unlink("$TARGDIR/$FNAME.orig") if ($RMORIG);
	}
	split;
	$FNAME = $_[2];
	$FNAME =~ s@[^/]*/@@;
	print STDERR "$PROG: patch to $TARGDIR/$FNAME \n";
	if (!open(FP, "< $TARGDIR/$FNAME")) {
	    $DNAME ="$TARGDIR/$FNAME";
	    $DNAME =~ s@/[^/]*$@@;
	    @_ = split('/', $DNAME);
	    shift(@_);
	    $DNAME = '';
	    foreach $I (@_) {
		$DNAME .= "/$I";
		if (!-d $DNAME) {
		    print STDERR "$PROG: mkdir $DNAME\n";
		    mkdir("$DNAME", $MODE);
		}
	    }
	} else {
	    close(FP);
	}
	open(FP, "| $PATCH $PATCHOPT") || print STDERR "$PROG: can't exec $PATCH\n";
    }
    next if (/^(\\ No newline|Binary files)/);
    print FP;
}
close(FP);			# wait for complete
unlink("$TARGDIR/$FNAME.orig") if ($RMORIG);
close(FI);
exit 0;
# [EOF]
