diff options
Diffstat (limited to 'src/testpattern/compare-checksums.in')
-rwxr-xr-x | src/testpattern/compare-checksums.in | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/testpattern/compare-checksums.in b/src/testpattern/compare-checksums.in index 1d7e1ea..07d7c43 100755 --- a/src/testpattern/compare-checksums.in +++ b/src/testpattern/compare-checksums.in @@ -51,9 +51,14 @@ sub load_file($\%\%) { open(IN, "$file") or die("Can't open checksum file $file: $!\n"); } my ($inline); + my ($last_sum) = ""; while ($inline = <IN>) { chomp $inline; my ($sum, @okeys) = split(/ /, $inline); + if ($last_sum ne "" && ((length $sum) < (length $last_sum))) { + $sum = substr($last_sum, 0, ((length $last_sum) - (length $sum))) . $sum; + } + $last_sum = $sum; my @keys = map { s/\.prn$//; s/^\*//; @@ -105,10 +110,21 @@ foreach my $old_printer (keys %old_printers) { my (@only_old_modes, @only_new_modes, @changed_modes); +sub mode_ne($$) { + my ($new, $old) = @_; + if (length $new == length $old) { + return ($new ne $old); + } elsif (length $new < length $old) { + return ($new ne substr($old, 0, length $new)); + } else { + return ($old ne substr($new, 0, length $old)); + } +} + foreach my $old_mode (sort keys %old_modes) { next if defined $only_old_printers{get_printer($old_mode)}; if (defined $new_modes{$old_mode}) { - if ($new_modes{$old_mode} ne $old_modes{$old_mode}) { + if (mode_ne($new_modes{$old_mode}, $old_modes{$old_mode})) { push @changed_modes, $old_mode; } } else { |