chiark / gitweb /
where-vessels: Show correct report when sizes smashed
authorIan Jackson <ian@liberator.relativity.greenend.org.uk>
Sun, 8 Aug 2010 16:57:47 +0000 (17:57 +0100)
committerIan Jackson <ian@liberator.relativity.greenend.org.uk>
Sun, 8 Aug 2010 19:59:56 +0000 (20:59 +0100)
yarrg/where-vessels

index 1506f29..2f9e237 100755 (executable)
@@ -410,11 +410,18 @@ proc code2canvas {code canvas x yvar qty qtylen bind} {
 proc show-report-decode {code} {
     global vc_code2full
 
+    smash-prepare
+
     manyset [split $code _] inport sizecode subclass lockown xabbrev
     manyset [split $lockown ""] lock notown
     
     report-set inport [lindex {{At Sea} {In port}} $inport]
-    report-set size $vc_code2full($sizecode)
+
+    upvar #0 vc_code2full($sizecode) sizefull
+    upvar #0 smash_sizeinexact($sizecode) sizeinexact
+    set size_report $sizefull
+    if {[info exists sizeinexact]} { set size_report "($sizefull+)" }
+    report-set size $size_report
 
     global smash_subclass
     if {$smash_subclass >= 2} {
@@ -575,10 +582,15 @@ proc smash-code {code} {
 }
 
 proc smash-prepare {} {
-    global vc_codes smash_sizemap smash_size
+    global vc_codes smash_sizemap smash_size smash_sizeinexact
     set mapto {}
+    catch { unset smash_sizeplus }
     foreach size $vc_codes {
-       if {!$smash_size($size)} { set mapto $size }
+       if {!$smash_size($size)} {
+           set mapto $size
+       } else {
+           set smash_sizeinexact($mapto) 1
+       }
        set smash_sizemap($size) $mapto
     }
 }