diff options
Diffstat (limited to 'src/testpattern/uncompress-checksums.in')
-rw-r--r-- | src/testpattern/uncompress-checksums.in | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/testpattern/uncompress-checksums.in b/src/testpattern/uncompress-checksums.in new file mode 100644 index 0000000..e97fe25 --- /dev/null +++ b/src/testpattern/uncompress-checksums.in @@ -0,0 +1,47 @@ +#!@PERL@ +## Copyright (C) 2016 Robert Krawitz +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2, or (at your option) +## any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +use strict; + +my (%checksums); + +while (<>) { + chomp; + my ($sum, @keys) = split; + my (@pchunks) = (); + foreach my $k (@keys) { + $k =~ s/=/________/g; + $k =~ s/!/_______/g; + $k =~ s/"/______/g; + $k =~ s/,/_____/g; + $k =~ s/'/____/g; + $k =~ s/%/___/g; + $k =~ s/>/__/g; + my (@chunks) = split(/_/, $k, -1); + foreach my $i (0..$#chunks) { + if ($chunks[$i] eq '') { + $chunks[$i] = $pchunks[$i]; + } elsif ($chunks[$i] =~ /^([0-9]+)\+(.*)/) { + $chunks[$i] = substr($pchunks[$i], 0, $1) . $2; + } + } + my ($answer) = join('_', @chunks); + $answer =~ s/(^[^:]*)_:(.*)/$2_$1/; + print "$sum *$answer.prn\n"; + @pchunks = @chunks; + } +} |