From 4619de5baec47888a9613c074558bad80f2efed3 Mon Sep 17 00:00:00 2001 From: fyodor Date: Sun, 27 Aug 2006 03:11:32 +0000 Subject: [PATCH] treat isr in the same way that sp is treated --- scripts/fingerfix.pl | 57 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 49 insertions(+), 8 deletions(-) diff --git a/scripts/fingerfix.pl b/scripts/fingerfix.pl index 4d4739026..9cb80369c 100755 --- a/scripts/fingerfix.pl +++ b/scripts/fingerfix.pl @@ -132,15 +132,56 @@ foreach $line (split /\n/, $printbuf) { # print " newsp: $fp{seq}{sp}\n"; - - if (!($fp{seq}{isr} =~ /(^|\|)$isr($|\|)/)) { - if ($fp{seq}{isr}) { - $fp{seq}{isr} = $fp{seq}{isr} . qq^|$isr^; - } else { - $fp{seq}{isr} = $isr; - } - } + # Treat ISR the same way as sp + $newhighlim = $newlowlim = -1; + if ($isr =~ /([0-9A-F]+)-([0-9A-F]+)/) { + $newlowlim = hex($1); + $newhighlim = hex($2); + } elsif ($isr =~ /<([0-9A-F]+)/) { + $newhighlim = hex($1); + } + + # print "newhighlim: $newhighlim newlowlim: $newlowlim\n"; + + $oldhighlim = $oldlowlim = 0; + if ($fp{seq}{isr} =~ /([0-9A-F]+)-([0-9A-F]+)/) { + $oldlowlim = hex($1); + $oldhighlim = hex($2); + } elsif ($fp{seq}{isr} =~ /<([0-9A-F]+)/) { + $oldhighlim = hex($1); + } elsif ($fp{seq}{isr} =~ /^([0-9A-F]+)/) { + $oldhighlim = $oldlowlim = hex($1); + } + + # print "oldhighlim: $oldhighlim oldlowlim: $oldlowlim\n"; + + if ($oldlowlim) { + if ($newlowlim != -1) { $newlowlim = max(0, min($oldlowlim, $newlowlim)); } + else { $newlowlim = max(0, min($oldlowlim, hex($isr))); } + } else { + if ($newlowlim == -1) { $newlowlim = max(0, hex($isr)); } + } + + if ($newhighlim == -1) { + $newhighlim = max($oldhighlim, hex($isr)); + } else { + $newhighlim = max($oldhighlim, $newhighlim); + } + + # print "oldhighlim: $oldhighlim oldlowlim: $oldlowlim newhighlim: $newhighlim newlowlim: $newlowlim oldisr: $fp{seq}{isr}"; + + if ($newlowlim eq $newhighlim) { + $fp{seq}{isr} = sprintf("%X", $newhighlim); + } elsif ($newlowlim > 0) { + $fp{seq}{isr} = sprintf("%X-%X", $newlowlim, $newhighlim); + } else { + $fp{seq}{isr} = sprintf("<%X", $newhighlim); + } + + # print " newisr: $fp{seq}{isr}\n"; + + if (!($fp{seq}{ti} =~ /(^|\|)$ti($|\|)/)) { if ($fp{seq}{ti}) { $fp{seq}{ti} = $fp{seq}{ti} . qq^|$ti^;