// Copyright (c) 2012, Suryandaru Triandana // 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"} 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] }