You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							98 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							98 lines
						
					
					
						
							1.5 KiB
						
					
					
				| // 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]
 | |
| }
 | |
| 
 |