98 lines
1.5 KiB
Go
98 lines
1.5 KiB
Go
// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
|
|
// All rights reserved.
|
|
//
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
package leveldb
|
|
|
|
import (
|
|
"fmt"
|
|
"sort"
|
|
|
|
"github.com/syndtr/goleveldb/leveldb/storage"
|
|
)
|
|
|
|
func shorten(str string) string {
|
|
if len(str) <= 8 {
|
|
return str
|
|
}
|
|
return str[:3] + ".." + str[len(str)-3:]
|
|
}
|
|
|
|
var bunits = [...]string{"", "Ki", "Mi", "Gi", "Ti"}
|
|
|
|
func shortenb(bytes int) string {
|
|
i := 0
|
|
for ; bytes > 1024 && i < 4; i++ {
|
|
bytes /= 1024
|
|
}
|
|
return fmt.Sprintf("%d%sB", bytes, bunits[i])
|
|
}
|
|
|
|
func sshortenb(bytes int) string {
|
|
if bytes == 0 {
|
|
return "~"
|
|
}
|
|
sign := "+"
|
|
if bytes < 0 {
|
|
sign = "-"
|
|
bytes *= -1
|
|
}
|
|
i := 0
|
|
for ; bytes > 1024 && i < 4; i++ {
|
|
bytes /= 1024
|
|
}
|
|
return fmt.Sprintf("%s%d%sB", sign, bytes, bunits[i])
|
|
}
|
|
|
|
func sint(x int) string {
|
|
if x == 0 {
|
|
return "~"
|
|
}
|
|
sign := "+"
|
|
if x < 0 {
|
|
sign = "-"
|
|
x *= -1
|
|
}
|
|
return fmt.Sprintf("%s%d", sign, x)
|
|
}
|
|
|
|
func minInt(a, b int) int {
|
|
if a < b {
|
|
return a
|
|
}
|
|
return b
|
|
}
|
|
|
|
func maxInt(a, b int) int {
|
|
if a > b {
|
|
return a
|
|
}
|
|
return b
|
|
}
|
|
|
|
type fdSorter []storage.FileDesc
|
|
|
|
func (p fdSorter) Len() int {
|
|
return len(p)
|
|
}
|
|
|
|
func (p fdSorter) Less(i, j int) bool {
|
|
return p[i].Num < p[j].Num
|
|
}
|
|
|
|
func (p fdSorter) Swap(i, j int) {
|
|
p[i], p[j] = p[j], p[i]
|
|
}
|
|
|
|
func sortFds(fds []storage.FileDesc) {
|
|
sort.Sort(fdSorter(fds))
|
|
}
|
|
|
|
func ensureBuffer(b []byte, n int) []byte {
|
|
if cap(b) < n {
|
|
return make([]byte, n)
|
|
}
|
|
return b[:n]
|
|
}
|