From 1642e0e0eab8d48eac46befc06d414905487bfe5 Mon Sep 17 00:00:00 2001 Message-Id: <1642e0e0eab8d48eac46befc06d414905487bfe5.1717926188.git.mdw@distorted.org.uk> From: Mark Wooding Date: Mon, 28 Jan 2002 00:06:10 +0000 Subject: [PATCH] Beats. Organization: Straylight/Edgeware From: Ian Jackson --- bot.tcl | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/bot.tcl b/bot.tcl index eb65a0e..4685581 100755 --- a/bot.tcl +++ b/bot.tcl @@ -23,8 +23,32 @@ proc showintervalsecs {howlong abbrev} { return [showintervalsecs/[opt timeformat] $howlong $abbrev] } +proc formatsf {pfx value} { + foreach {min format} { 100 %.0f 10 %.1f 0 %.2f} { + set fval [format $format $value] + if {$fval < $min} continue + return [format "$fval${pfx}" $value] + } +} + proc showintervalsecs/beat {howlong abbrev} { - return [format "%g B" [expr {$howlong/86.4}]] + # We split in two to avoid overflow problems. + if {$howlong < 86 } { + # mB's + set pfx mB + return [format "%.0fmB" [expr {round($howlong * 1.157)*10} ]] + } else { + if {$howlong < 86400 } { + # B's + set pfx B + set value [expr {$howlong / 86.4}] + } else { + # kB's + set pfx kB + set value [expr {$howlong / 86400.0}] + } + } + return [formatsf $pfx $value] } proc showintervalsecs/ks {howlong abbrev} { @@ -32,17 +56,14 @@ proc showintervalsecs/ks {howlong abbrev} { return "${howlong}s" } else { if {$howlong < 1000000} { - set pfx k + set pfx ks set scale 1000 } else { - set pfx M + set pfx Ms set scale 1000000 } set value [expr "$howlong.0 / $scale"] - foreach {min format} {100 %.0f 10 %.1f 1 %.2f} { - if {$value < $min} continue - return [format "$format${pfx}s" $value] - } + return [formatsf $pfx $value] } } -- [mdw]