diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/Algorithm/diff.pl')
-rwxr-xr-x | Master/tlpkg/tlperl/lib/Algorithm/diff.pl | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/Algorithm/diff.pl b/Master/tlpkg/tlperl/lib/Algorithm/diff.pl new file mode 100755 index 00000000000..9bddb15df6b --- /dev/null +++ b/Master/tlpkg/tlperl/lib/Algorithm/diff.pl @@ -0,0 +1,47 @@ +#!/usr/bin/perl +# +# `Diff' program in Perl +# Copyright 1998 M-J. Dominus. (mjd-perl-diff@plover.com) +# +# This program is free software; you can redistribute it and/or modify it +# under the same terms as Perl itself. +# + +use Algorithm::Diff qw(diff); + +bag("Usage: $0 oldfile newfile") unless @ARGV == 2; + +my ($file1, $file2) = @ARGV; + +# -f $file1 or bag("$file1: not a regular file"); +# -f $file2 or bag("$file2: not a regular file"); + +-T $file1 or bag("$file1: binary"); +-T $file2 or bag("$file2: binary"); + +open (F1, $file1) or bag("Couldn't open $file1: $!"); +open (F2, $file2) or bag("Couldn't open $file2: $!"); +chomp(@f1 = <F1>); +close F1; +chomp(@f2 = <F2>); +close F2; + +$diffs = diff(\@f1, \@f2); +exit 0 unless @$diffs; + +foreach $chunk (@$diffs) { + + foreach $line (@$chunk) { + my ($sign, $lineno, $text) = @$line; + printf "%4d$sign %s\n", $lineno+1, $text; + } + print "--------\n"; +} +exit 1; + +sub bag { + my $msg = shift; + $msg .= "\n"; + warn $msg; + exit 2; +} |