summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/Algorithm/diff.pl
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl/lib/Algorithm/diff.pl')
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Algorithm/diff.pl47
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;
+}