)
const (
- myname = "pstop"
- copyright = "Copyright (C) 2014 Simon J Mudd <sjmudd@pobox.com>"
+ myname = "pstop"
+ copyright = "Copyright (C) 2014-2015 Simon J Mudd <sjmudd@pobox.com>"
+ i_1024_2 = 1024 * 1024
+ i_1024_3 = 1024 * 1024 * 1024
+ i_1024_4 = 1024 * 1024 * 1024 * 1024
)
// myround converts this floating value to the right width etc.
// sec_to_time() converts a number of hours, minutes and seconds into hh:mm:ss format.
// e.g. 7384 = 2h 3m 4s, 7200 + 180 + 4
-func sec_to_time(d int) string {
+func sec_to_time(d uint64) string {
hours := d / 3600 // integer value
minutes := (d - hours*3600) / 60 // integer value
seconds := d - hours*3600 - minutes*60
return fmt.Sprintf("%02d:%02d:%02d", hours, minutes, seconds)
}
-// FormatTime is based on sys.format_time. It
+// similar to sec_to_time() spaces if 0 and takes seconds as input.
+func FormatSeconds(seconds uint64) string {
+ if seconds == 0 {
+ return " "
+ } else {
+ return sec_to_time(seconds)
+ }
+}
+
+// FormatTime is based on sys.format_time. It
// formats to 10 characters including space and suffix.
// All values have 2 decimal places. Zero is returned as
// an empty string.
-func FormatTime(picoseconds int) string {
+func FormatTime(picoseconds uint64) string {
if picoseconds == 0 {
return ""
}
// For values = 0 return an empty string.
// For values < 1000 show 6,2 decimal places.
// For values >= 1000 show 6,1 decimal place.
-func FormatAmount(amount int) string {
+func FormatAmount(amount uint64) string {
var suffix string
var formatted string
var decimal_amount float64
return ""
}
if amount <= 1024 {
- return strconv.Itoa(amount)
+ return strconv.Itoa(int(amount))
}
- if amount > (1024 * 1024 * 1024 * 1024) {
+ if amount > i_1024_4 {
suffix = "P"
- decimal_amount = float64(amount) / 1024 / 1024 / 1024 / 1024
- } else if amount > (1024 * 1024 * 1024) {
+ decimal_amount = float64(amount) / i_1024_4
+ } else if amount > i_1024_3 {
suffix = "G"
- decimal_amount = float64(amount) / 1024 / 1024 / 1024
- } else if amount > (1024 * 1024) {
+ decimal_amount = float64(amount) / i_1024_3
+ } else if amount > i_1024_2 {
suffix = "M"
- decimal_amount = float64(amount) / 1024 / 1024
+ decimal_amount = float64(amount) / i_1024_2
} else if amount > 1024 {
suffix = "k"
decimal_amount = float64(amount) / 1024
return formatted
}
+// like Amount but tigher in space
+func FormatCounter(counter int, width int) string {
+ if counter == 0 {
+ pattern := "%" + fmt.Sprintf("%d", width) + "s"
+ return fmt.Sprintf(pattern, " ")
+ } else {
+ pattern := "%" + fmt.Sprintf("%d", width) + "d"
+ return fmt.Sprintf(pattern, counter)
+ }
+}
+
// MyDivide() divides a by b except if b is 0 in which case we return 0.
-func MyDivide(a int, b int) float64 {
+func MyDivide(a uint64, b uint64) float64 {
if b == 0 {
return float64(0)
} else {