summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xutil/rundiff47
1 files changed, 34 insertions, 13 deletions
diff --git a/util/rundiff b/util/rundiff
index 732b84d21..05beba84b 100755
--- a/util/rundiff
+++ b/util/rundiff
@@ -41,21 +41,42 @@
use strict;
+use Getopt::Std;
+
+#
+# Options:
+# -c <n> : print n lines of context before & after changes
+# -l <n> : use n lines of lookahead
+# -x : use "complex" diff from Algorithm::Diff (see below)
+#
+our ($opt_c, $opt_l, $opt_x);
+getopts('c:l:x');
+
#
# For the highest-quality (minimal) diffs, we can use the
-# Algorithm::Diff package. If you don't have this installed, or want
-# the script to run faster (like 3-4x faster, based on informal
-# observation), set $use_complexdiff to 0; then a built-in, simple,
-# and generally quite adequate algorithm will be used instead.
-my $use_complexdiff = 0;
-
-#if ($use_complexdiff) {
-# use Algorithm::Diff qw(traverse_sequences);
-#};
-
-my $lookahead_lines = 200;
-my $precontext_lines = 3;
-my $postcontext_lines = 3;
+# Algorithm::Diff package. By default, a built-in, simple, and
+# generally quite adequate algorithm will be used. If you have
+# Algorithm::Diff installed on your system, and don't mind having the
+# script go slower (like 3-4x slower, based on informal observation),
+# then specify '-x' on the command line to use it.
+my $use_complexdiff = defined($opt_x);
+
+if ($use_complexdiff) {
+ # Don't use 'use', as that's a compile-time option and will fail
+ # on systems that don't have Algorithm::Diff installed even if
+ # $use_complexdiff is false. 'require' is evaluated at runtime,
+ # so it's OK.
+ require Algorithm::Diff;
+ import Algorithm::Diff qw(traverse_sequences);
+};
+
+my $lookahead_lines = $opt_l || 200;
+
+# in theory you could have different amounts of context before and
+# after a diff, but until someone needs that there's only one arg to
+# set both.
+my $precontext_lines = $opt_c || 3;
+my $postcontext_lines = $precontext_lines;
my $file1 = $ARGV[0];
my $file2 = $ARGV[1];